     
     // MARK: Private
     
-    fileprivate func fetchForResource<T>(_ request: URLRequest, parseBlock: @escaping (JSONDictionary) -> T?, success: @escaping (T) -> Void, fail: @escaping MIFailureCompletionHandler) {
+    fileprivate func fetchForResource<T>(_ request: URLRequest, parseBlock: @escaping (JSONDictionary) -> T?, success: @escaping (T) -> Void, fail: @escaping IMFailCompletionHandler) {
         fetchJson(for: request) { [unowned self] result in
             if let error = self.checkApiClientResultForAnError(result) {
                 fail(error)

    case unexpectedSituation = 132
}

// MARK: Typealias

typealias MIFailureCompletionHandler = (_ error: Error) -> Void

// MARK: - IMApiClient: JsonApiClient -


    // MARK: - Requests -
    // MARK: Public
    
    func fetchResourceForRequest<T: JSONParselable>(_ request: URLRequest, success: @escaping (T) -> Void, fail: @escaping IMFailCompletionHandler) {
        fetchForResource(request, parseBlock: { json -> T? in
            return T.decode(json)
            }, success: success, fail: fail)
    }

    func fetchCollectionForRequest<T: JSONParselable>(_ request: URLRequest, rootKeys: [String], success: @escaping ([T]) -> Void, fail: @escaping IMFailCompletionHandler) {
        fetchForCollection(request, rootKeys: rootKeys, parseBlock: { (json) -> [T]? in
            return json.flatMap { T.decode($0) }
            }, success: success, failure: fail)
