         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]

            return result
        }
    }
    private(set) lazy var link: (prev: Link?, next: Link?) = self.parseLinks()
    public var status: Int {
        return urlResponse.statusCode
    }
    private let urlResponse: HTTPURLResponse
    private var headers: [AnyHashable: Any] { return urlResponse.allHeaderFields }

    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]

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

    private func prepareStatus() -> Int {
        let raw = self["Status"] as? String
        let str = raw?.components(separatedBy: " ").first
        return str.flatMap { Int($0) } ?? urlResponse.statusCode
    }
}

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