     
     public typealias SuccessHandler = (NSData) -> ()
     public typealias FailureHandler = (NSError?) -> ()
+    public typealias ProgressHandler = ((Int64, Int64, Int64) -> Void)
     
     // MARK: - Properties
     public var URL: URLStringConvertible?

    public var formatName: String!
    public var successHandler: SuccessHandler?
    public var failureHandler: FailureHandler?
    
    // MARK: - Initializer
    public init(URL: URLStringConvertible, headers: HttpHeaders? = nil, body: HttpBody? = nil, formatName: String = HanekeGlobals.Cache.OriginalFormatName) {

                if error != nil {
                    strongSelf.failureHandler?(error)
                } else if data != nil {
                    strongSelf.cache.set(value: data!, key: strongSelf.key, formatName: strongSelf.formatName, success: { (data) in
                        strongSelf.successHandler?(data)
                    })
                }
                strongSelf.request = nil
                strongSelf.successHandler = nil
                strongSelf.failureHandler = nil
                strongSelf.progressHandler = nil
            }
        })
    }
