         let task = session.dataTaskWithRequest(serialReq.request,
             completionHandler: {(data: NSData!, response: NSURLResponse!, error: NSError!) -> Void in
                 opt.finish()
+                var extraResponse = HTTPResponse()
+                if let hresponse = response as? NSHTTPURLResponse {
+                    extraResponse.headers = hresponse.allHeaderFields as? Dictionary<String,String>
+                    extraResponse.mimeType = hresponse.MIMEType
+                    extraResponse.suggestedFilename = hresponse.suggestedFilename
+                    extraResponse.statusCode = hresponse.statusCode
+                    extraResponse.URL = hresponse.URL
+                }
                 if error != nil {
                     if failure != nil {
-                        failure(error, nil)
+                        failure(error, extraResponse)
                     }
                     return
                 }

        if let u = self.URL {
            buffer += "URL:\n\(u)\n\n"
        }
        if let heads = self.headers {
            buffer += "Headers:\n"
            for (key, value) in heads {

                        let resObj = self.responseSerializer!.responseObjectFromResponse(response, data: data)
                        if resObj.error != nil {
                            if failure != nil {
                                failure(resObj.error!, extraResponse)
                            }
                            return
                        }
                        if resObj.object != nil {
                            responseObject = resObj.object!
                        }
                    }
                    extraResponse.responseObject = responseObject
                    if extraResponse.statusCode > 299 {
