     
     // MARK: - Properties
     private(set) var URL: URLStringConvertible?
+    private(set) var URLRequest: URLRequestConvertible?
     private(set) var headers: HttpHeaders?
     private(set) var body: HttpBody?
     private(set) var request: Request?

        self.URL = URL
        self.headers = headers
        self.body = body
    }
    
    // MARK: - Functions

        if URL == nil {
            failure?(nil)
        }
        if URL != nil {
            request = HttpRequest.GET(URL!, headers: headers, body: body)
        } else if URLRequest != nil {
            request = HttpRequest.request(URLRequest!)
        }
        request?.response(completionHandler: { (request, response, data, error) in
            if error != nil {
                failure?(error)
            } else if data != nil {
