 import Marshal
 import ReactiveSwift
 
+/**
+ * Protocol that allows creation of custom Marshal errors
+ */
 public protocol MarshalErrorCreatable: Error {
+    
+    /**
+     * Create error containing passed `MarshalError`
+     *
+     * - parameter marshalError: `MarshalError` which should be wrapped
+     */
     static func createMarshalError(_ marshalError: MarshalError) -> Self
 }
 
+extension MarshalError: MarshalErrorCreatable {
+    public static func createMarshalError(_ marshalError: MarshalError) -> MarshalError {
+        return marshalError
+    }
+}
+
 extension SignalProtocol where Value == Any, Error: MarshalErrorCreatable {
+    
+    /**
+     * Map value as `Unmarshaling` object
+     *
+     * - parameter key: If your objects are contained within dictionary pass the key here
+     */
     public func mapResponseMarshal<Model>(for key: KeyType? = nil) -> Signal<Model, Error> where Model: Unmarshaling {
         return attemptMap { json in
             Result {

        }
    }
    
    public func mapResponseMarshal<Model>(for key: KeyType? = nil) -> Signal<[Model], Error> where Model: Unmarshaling {
        return attemptMap { json in
            Result {

        }
    }
    
    /**
     * Map value as `ValueType`
     *
     * - parameter key: If your objects are contained within dictionary pass the key here
     */
    public func mapResponseMarshal<Model>(for key: KeyType) -> Signal<Model, Error> where Model: ValueType {
        return attemptMap { json in
            Result {
