             return dataTask
         }
     }
-
-    public static func cancelRequest<T: RequestType>(requestType: T.Type, passingTest test: T -> Bool = { r in true }) {
-        cancelRequest(requestType, URLSession: defaultURLSession, passingTest: test)
-    }
-
-    public static func cancelRequest<T: RequestType>(requestType: T.Type, URLSession: NSURLSession, passingTest test: T -> Bool = { r in true }) {
+    
+    public func cancelRequest<T: RequestType>(requestType: T.Type, passingTest test: T -> Bool = { r in true }) {
         URLSession.getTasksWithCompletionHandler { dataTasks, uploadTasks, downloadTasks in
             let allTasks = dataTasks as [NSURLSessionTask]
                 + uploadTasks as [NSURLSessionTask]

            }
        }
    }
}

import Result

public class Session {
    public let URLSession: NSURLSession
    
    public init(URLSession: NSURLSession) {
        self.URLSession = URLSession
    }

    // send request and build response object
    public func sendRequest<T: RequestType>(request: T, handler: (Result<T.Response, APIError>) -> Void = {r in}) -> NSURLSessionDataTask? {
        switch request.buildURLRequest() {
        case .Failure(let error):
            handler(.Failure(error))
