                                 } else {
                                     if let data = NSData(contentsOfURL: URL), image = UIImage(data: data) {
                                         sharedInstance.completeRequestsWithURL(URL, image: image)
-                                        print("download success")
 
                                     } else {
                                         dispatch_async(dispatch_get_main_queue()) {
                                             sharedInstance.requestPool.removeRequestsWithURL(URL)
-                                            print("download failed")
                                         }
                                     }
                                 }

            return requests.filter({ $0.avatar.URL == URL })
        }

        mutating func removeRequestsWithKey(key: String) {

            let requestsToRemove = requests.filter({ $0.key == key })
            print("remove requests.count: \(requests.count), key: \(key)")

            requestsToRemove.forEach({
                if let index = requests.indexOf($0) {
                    requests.removeAtIndex(index)
                }
            })
        }

        mutating func removeRequestsWithURL(URL: NSURL) {

            let requestsToRemove = requests.filter({ $0.avatar.URL == URL })
            print("remove requests.count: \(requests.count), URL: \(URL)")

            requestsToRemove.forEach({
                if let index = requests.indexOf($0) {

        }
    }

    private struct RequestPool {

        private var requests: [Request]

