     /// - parameter call: where can the server be found?
     /// - parameter fail: if we cannot initialize the model this call will fail and print the failure.
     /// - parameter ok: returns initialized model
-    func performSingle<ModelType: Deserializable>(_ call: Call, fail: @escaping (FaroError)->(), ok:@escaping (ModelType)->()) {
+    open func performSingle<ModelType: Deserializable>(_ call: Call, fail: @escaping (FaroError)->(), ok:@escaping (ModelType)->()) {
         perform(call) { (result: Result<ModelType>) in
             switch result {
             case .model(let model):

        }
    }

    func performCollection<ModelType: Deserializable, PagingType: Deserializable>(_ call: Call, pagingInformation: @escaping(PagingType?)->(), fail: @escaping (FaroError)->(), ok:@escaping ([ModelType])->()) {
        perform(call, pagingInformation: pagingInformation) { (result: Result<ModelType>) in
            switch result {
            case .models(let models):

    /// - parameter call: where can the server be found?
    /// - parameter fail: if we cannot initialize the model this call will fail and print the failure.
    /// - parameter ok: returns initialized array of models
    open func performCollection<ModelType: Deserializable>(_ call: Call, fail: @escaping (FaroError)->(), ok:@escaping ([ModelType])->()) {
        perform(call) { (result: Result<ModelType>) in
            switch result {
            case .models(let models):
