      
      - returns: The request
      */
-    
-    public func responseSerializable<T:Serializable>(completionHandler: ApiResult<T> -> Void, unwrapper:Parser.Unwrapper = Parser.defaultUnwrapper) -> Self {
-        return validate().responseJSON(completionHandler: { (response) -> Void in
-            Parser.parse(response: response, completionHandler: completionHandler, unwrapper: unwrapper)
+  
+    public func responseSerializable<T:Serializable>(completionHandler: Response<T, NSError> -> Void, unwrapper:Parser.Unwrapper) -> Self {
+        let serializer = Parser.serializer(parsingHandler: {
+            ( data: AnyObject? ) -> T? in
+            
+            if let sourceDictionary = data as? [String : AnyObject] {
+                
+                let unwrappedDictionary = unwrapper(sourceDictionary: sourceDictionary, expectedType:T.self) as? [String : AnyObject] ?? sourceDictionary
+                
+                return T(dictionary: unwrappedDictionary) as T?
+            }
+            
+            return nil
         })
+        
+        return validate().response(responseSerializer: serializer, completionHandler: completionHandler)
     }
     
     /**

public extension Alamofire.Request
{
    /**
     Adds a handler that attempts to parse the result of the request into type **T** using **parsingHandler**
     
     - parameter completionHandler:A closure that is invoked when the request is finished and *parsingHandler* has been executed
     - parameter parsingHandler:A closure takes the JSON data as input and outputs the parsed data of type **T**
     
     - returns: The request
     */
    
    public func response<T>(completionHandler: (ApiResult<T>) -> Void, parsingHandler: (( data: AnyObject? ) -> T?)?) -> Self {
        return validate().responseJSON(completionHandler: { (response) -> Void in
            Parser.parse(response: response, completionHandler: completionHandler, parsingHandler: parsingHandler)
        })
    }
    
    /**
     Adds a handler that attempts to parse the result of the request into a **Serializable**
     
     - parameter completionHandler:A closure that is invoked when the request is finished

     - returns: The request
     */
    
    public func responseSerializable<T:Serializable>(completionHandler: Response<[T], NSError> -> Void, unwrapper:Parser.Unwrapper = Parser.defaultUnwrapper) -> Self {
        
        let serializer = Parser.serializer(parsingHandler: {
            ( data: AnyObject? ) -> [T]? in
            
            var finalArray:AnyObject? = data
            
            if let dataDict = data as? NSDictionary {
                if let unwrappedArray = unwrapper(sourceDictionary: dataDict, expectedType:T.self) as? NSArray {
                    finalArray = unwrappedArray
                }
            }
            
            if let sourceArray = finalArray as? NSArray {
                return T.array(sourceArray)
            }
            return nil
        })
        
        return validate().response(responseSerializer: serializer, completionHandler: completionHandler)
    }
}
