             return nil
     }
 
-    func shouldQuery(method:HTTPMethod) -> Bool {
-        return method == .GET || method == .HEAD || method == .DELETE
-    }
-
     func request(
         method:HTTPMethod,
         URLString:String,
         params:[String:AnyObject],
+        data:[String:AnyObject],
         json:[String:AnyObject]?,
         headers:CaseInsensitiveDictionary<String,String>,
         auth:(String, String)?,
         cookies: [String:String],
-        data:NSData?,
+        requestBody:NSData?,
         URLQuery:String?,
         redirects:Bool,
         asyncCompletionHandler:((HTTPResult!) -> Void)?) -> HTTPResult {

            var requestResult:HTTPResult = HTTPResult(data: nil, response: nil, error: syncResultAccessError, request: nil)

            let config = TaskConfiguration(credential:auth, redirects:redirects)
            if let request = synthesizeRequest(method, URLString: URLString, params: params, json: json, headers: headers, data: data, URLQuery: URLQuery) {
                addCookies(request.URL!, newCookies: cookies)
                let task = makeTask(request, configuration:config) { (result) in
                    if let handler = asyncCompletionHandler {


                var finalHeaders = headers

                if let requestData = requestBody {
                    body = requestData
                } else {
                    if let requestJSON = json {
                        body = NSJSONSerialization.dataWithJSONObject(requestJSON, options: NSJSONWritingOptions(0), error: nil)
                        finalHeaders["Content-Type"] = "application/json"
                    } else {
                        if data.count > 0 {
                            if headers["content-type"]?.lowercaseString == "application/json" { // assume user wants JSON if she is using this header
                                body = NSJSONSerialization.dataWithJSONObject(data, options: NSJSONWritingOptions(0), error: nil)
                            } else {
                                finalHeaders["Content-Type"] = "application/x-www-form-urlencoded"
                                body = query(data).dataUsingEncoding(NSUTF8StringEncoding)
                                if let length = body?.length {
                                    finalHeaders["Content-Length"] = "\(length)"
                                }
                            }
                        }
                    }
