     }
 
     /**
+     Creates a response serializer that returns an array of objects of the given type
+     initialized from JSON response data.
+
+     - returns: An object response serializer.
+     */
+    internal static func ArraySerializer<T: JSONDecodable>(
+        path: [JSONPathType]? = nil)
+        -> ResponseSerializer<[T], NSError>
+    {
+        return ResponseSerializer { request, response, data, error in
+
+            // fail if an error was already produced
+            guard error == nil else {
+                return .Failure(error!)
+            }
+
+            // fail if the data is nil
+            guard let data = data else {
+                let failureReason = "Data could not be serialized. Input data was nil."
+                let error = Error.errorWithCode(.DataSerializationFailed, failureReason: failureReason)
+                return .Failure(error)
+            }
+
+            // serialize a `[T]` from the json data
+            do {
+                let json = try JSON(data: data)
+                var array: [JSON]
+                if let path = path {
+                    switch path.count {
+                    case 0: array = try json.array()
+                    case 1: array = try json.array(path[0])
+                    case 2: array = try json.array(path[0], path[1])
+                    case 3: array = try json.array(path[0], path[1], path[2])
+                    case 4: array = try json.array(path[0], path[1], path[2], path[3])
+                    case 5: array = try json.array(path[0], path[1], path[2], path[3], path[4])
+                    default: throw JSON.Error.KeyNotFound(key: "ExhaustedVariadicParameterEncoding")
+                    }
+                } else {
+                    array = try json.array()
+                }
+                let objects: [T] = try array.map { json in try json.decode() }
+                return .Success(objects)
+            } catch {
+                let failureReason = "Data could not be serialized. Failed to parse JSON response."
+                let error = Error.errorWithCode(.DataSerializationFailed, failureReason: failureReason)
+                return .Failure(error)
+            }
+        }
+    }
+
+    /**
      Adds a handler to be called once the request has finished.
  
      - parameter queue: The queue to use.
+     - parameter path: 0 or more `String` or `Int` that subscript the `JSON`.
      - parameter completionHandler: The code to be executed once the request has finished.
      */
     internal func responseObject<T: JSONDecodable>(

            completionHandler: completionHandler
        )
    }
}

    /**
     Creates a response serializer that returns an object of the given type initialized from
     JSON response data.
     
     - parameter path: 0 or more `String` or `Int` that subscript the `JSON`.
 
     - returns: An object response serializer.
     */
