     
     // MARK: - Properties
     private(set) var URL: URLStringConvertible?
+    private(set) var headers: HttpHeaders?
+    private(set) var body: HttpBody?
     private(set) var request: Request?
     
     // MARK: - Initializer
-    init(URL: URLStringConvertible) {
+    init(URL: URLStringConvertible, headers: HttpHeaders? = nil, body: HttpBody? = nil) {
         super.init(key: URL.URLString)
         self.URL = URL
+        self.headers = headers
+        self.body = body
     }
     
     // MARK: - Functions

    /**
     Get fetching progress
     */
    func fetchProgress(closure: ((Int64, Int64, Int64) -> Void)?) -> Self {
        request?.progress(closure)
        return self
    }

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