                 complete: complete)
     }
 
+    public func put(url: String, params: JSONObject? = nil, payload: AnyObject? = nil,
+        headers: JSONObject? = nil, complete: (result: JSONResult) -> Void) {
+            submitAsyncRequest("PUT", url: url, payload: payload, headers: headers,
+                complete: complete)
+    }
+
 }
 
 

        switch self {
        case .Success(_, let response):
            return response
        case .Failure(_, let response):
            return response
        }
    }

    func submitAsyncRequest(method: String, url: String, queryParams: JSONObject? = nil,
        payload: AnyObject? = nil, headers: JSONObject? = nil,
        complete: (result: JSONResult) -> Void) {
            updateRequestUrl(method, url: url, queryParams: queryParams)
            updateRequestHeaders(headers)

            do {
                try updateRequestPayload(payload)
            } catch {
                complete(result: JSONResult.Failure(error: JSONError.PayloadSerialization,
                    response: nil, body: nil))
                return
            }

            let task = NSURLSession.sharedSession().dataTaskWithRequest(request!) {
                (data, response, error) in
                if error != nil {
                    complete(result: JSONResult.Failure(error: JSONError.RequestFailed,
                        response: response as? NSHTTPURLResponse,
                        body: String(data: data!, encoding: NSUTF8StringEncoding)))
                    return
                }
                let result = self.parseResponse(data, response: response)
