         }
     }
     
-    func mapResponse<Model>(for key: KeyType) -> Signal<Model, Error> where Model: ValueType {
+    public func mapResponseMarshal<Model>(for key: KeyType) -> Signal<Model, Error> where Model: ValueType {
         return attemptMap { json in
             Result {
                 guard let marshaledJSON = json as? MarshaledObject

}

extension SignalProducerProtocol where Value == Any, Error: MarshalErrorCreatable {
    func mapResponse<Model>(for key: KeyType? = nil) -> SignalProducer<Model, Error> where Model: Unmarshaling {
        return lift { $0.mapResponse(for: key) }
    }
    
    func mapResponse<Model>(for key: KeyType? = nil) -> SignalProducer<[Model], Error> where Model: Unmarshaling {
        return lift { $0.mapResponse(for: key) }
    }
    
    func mapResponse<Model>(for key: KeyType) -> SignalProducer<Model, Error> where Model: ValueType {
        return lift { $0.mapResponse(for: key) }
    }
}

import Marshal
import ReactiveSwift

public protocol MarshalErrorCreatable: Error {
    static func createMarshalError(_ marshalError: MarshalError) -> Self
}

extension SignalProtocol where Value == Any, Error: MarshalErrorCreatable {
    public func mapResponseMarshal<Model>(for key: KeyType? = nil) -> Signal<Model, Error> where Model: Unmarshaling {
        return attemptMap { json in
            Result {
                guard let marshaledJSON = json as? MarshaledObject
