             printFaroError(returnError)
             return returnError
         }
-        
+
         return nil
     }
+
+    fileprivate func handleFailure<ModelType: Deserializable>(failedResult: Result<ModelType>, fail: (FaroError)->()) {
+        switch failedResult {
+        case .failure(let faroError):
+            printFaroError(faroError)
+            fail(faroError)
+        default:
+            let faroError = FaroError.general
+            printFaroError(faroError)
+            fail(faroError)
+        }
+    }
 }
+
+

        self.configuration = configuration
    }

    /// Receives expecte result  as defined by the `adaptor` from the a `Service` and maps this to a `Result` case `case Model(M)`
    /// Default implementation expects `adaptor` to be     case JSON(AnyObject). If this needs to be different you need to override this method.
    /// Typ! You can subclass 'Bar' and add a default service
    /// - parameter call : gives the details to find the entity on the server

        }
    }

}

// MARK: - Privates

extension Service {
    fileprivate func raisesFaroError(data: Data?, urlResponse: URLResponse?, error: Error?)-> FaroError? {
        guard error == nil else {
            let returnError = FaroError.nonFaroError(error!)
            printFaroError(returnError)
