                         let resObj = self.responseSerializer!.responseObjectFromResponse(response, data: data)
                         if resObj.error != nil {
                             if failure != nil {
-                                failure(resObj.error!, nil)
+                                failure(resObj.error!, extraResponse)
                             }
                             return
                         }
                         if resObj.object != nil {
                             responseObject = resObj.object!
                         }
-                    }
-                    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
                     }
                     extraResponse.responseObject = responseObject
                     if extraResponse.statusCode > 299 {

        let task = session.dataTaskWithRequest(serialReq.request,
            completionHandler: {(data: NSData!, response: NSURLResponse!, error: NSError!) -> Void in
                opt.finish()
                if error != nil {
                    if failure != nil {
                        failure(error, nil)
                    }
                    return
                }

                        success(extraResponse)
                    }
                } else if failure != nil {
                    failure(error, extraResponse)
                }
            })
        opt.task = task
