  - parameter request:    The request to make
  - parameter completion: The callback to call on completion
  */
-public func get<T: Parsable>(request: Request, completion: Result<T> -> Void) {
-    makeRequest(request, method: "GET", completion: completion)
+public func get<T: Parsable>(request: Request, session: NSURLSession = NSURLSession.sharedSession(), responseQueue: NSOperationQueue = NSOperationQueue.mainQueue(), completion: Result<T> -> Void) {
+    makeRequest(request, method: "GET", session: session, responseQueue: responseQueue, completion: completion)
 }
 
 /**

 - parameter request:    The request to make
 - parameter completion: The callback to call on completion
 */
public func post<T: Parsable>(request: Request, completion: Result<T> -> Void) {
    makeRequest(request, method: "POST", completion: completion)
}

    }
}

private func makeRequest<T: Parsable>(request: Request, method: String, session: NSURLSession, responseQueue: NSOperationQueue, completion: Result<T> -> Void) {
    let request = request.urlRequest()
    request.HTTPMethod = method
    let task = session.dataTaskWithRequest(request) { (data, response, error) in
        if let error = error {
            completion(.Failure(error))
            return
