         self.urlResponse = urlResponse
     }
 
-    private func parseLinks() -> (prev: Link?, next: Link?) {
+    private func prepareLink() -> (prev: Link?, next: Link?) {
         func parse(_ urlAndRel: [String]) -> (rel: String, link: Link)? {
             var urlString = urlAndRel[0]
             let relString = urlAndRel[1]

            "next": links.first(where: { $0.rel == "next" })?.link]
        return (map["prev"] ?? nil, map["next"] ?? nil)
    }
}

private extension Dictionary where Key == AnyHashable, Value == Any {

            return result
        }
    }
    private let urlResponse: HTTPURLResponse
    private var headers: [AnyHashable: Any] { return urlResponse.allHeaderFields }

    public private(set) lazy var link: (prev: Link?, next: Link?) = self.prepareLink()
    public private(set) lazy var status: Int = self.prepareStatus()
    public private(set) lazy var rateLimit: RateLimit =
        RateLimit(limit: self.headers[intValueForKey: "X-RateLimit-Limit"],
                  remaining: self.headers[intValueForKey: "X-RateLimit-Remaining"],
                  reset: self.headers[intValueForKey: "X-RateLimit-Reset"])

    public subscript (_ key: AnyHashable) -> Any? {
        return urlResponse.allHeaderFields[key]
