     public func PUT(path: String, parameters: [String:String]? = nil,
         headers: [String:String]? = nil,
         body: [String: AnyObject]? = nil,
-        completion: (Result<HTTPResponse, BothamAPIClientError>) -> ()) {
+        completion: ((Result<HTTPResponse, BothamAPIClientError>) -> ())? = nil) {
         return sendRequest(.PUT, path: path, params: parameters, headers: headers,
             body: body, completion: completion)
     }

        params: [String:String]? = nil,
        headers: [String:String]? = nil,
        body: [String:AnyObject]? = nil,
        completion: (Result<HTTPResponse, BothamAPIClientError>) -> ()) {

            let initialRequest = HTTPRequest(
                url: baseEndpoint + path,

                            body: body,
                            completion: completion)
                    } else {
                        completion?(result)
                    }
                }
            }
    }

    private func sendRequest(request: HTTPRequest, completion: ((Result<HTTPResponse, BothamAPIClientError>) -> ())? = nil) {
        httpClient.send(request) { result in
            if let _ = result.error {
                completion?(result)
            } else if let response = result.value {
                self.applyResponseInterceptors(response) { interceptorResult in
                    let mappedResult = interceptorResult.flatMap { httpResponse in
                        return self.mapHTTPResponseToBothamAPIClientError(httpResponse)
                    }
                    completion?(mappedResult)
                }
            }
        }
