     // MARK: NSURLSessionTaskDelegate
     public func URLSession(session: NSURLSession, task: NSURLSessionTask, didCompleteWithError connectionError: NSError?) {
         if let dataTask = task as? NSURLSessionDataTask {
-            if let completionHandler = dataTask.completionHandler?.unbox {
-                completionHandler(dataTask.responseBuffer, dataTask.response, connectionError)
-            }
+            dataTask.completionHandler?(dataTask.responseBuffer, dataTask.response, connectionError)
         }
     }
 

        }
    }
    
    private var completionHandler: Box<(NSData!, NSURLResponse!, NSError!) -> Void>? {
        get {
            return objc_getAssociatedObject(self, &dataTaskCompletionHandlerKey) as? Box<(NSData!, NSURLResponse!, NSError!) -> Void>
        }
        
        set {
            objc_setAssociatedObject(self, &dataTaskCompletionHandlerKey, newValue, UInt(OBJC_ASSOCIATION_RETAIN_NONATOMIC))
        }
    }
}


                }
                dispatch_async(mainQueue, { handler(mappedResponse) })
            }
            
            task.resume()

