 import UIKit
 
 public extension UIImageView {
+    
+    // MARK: - Private - Associated Keys Struct
+    
+    private struct AssociatedKeys {
+        static var sharedImageDownloaderKey = "ai_UIImageView.SharedImageDownloader"
+        static var activeRequestKey = "ai_UIImageView.ActiveRequest"
+    }
     
     // MARK: - Image Transition Enum
     

        return URLRequest
    }
}

private var sharedImageDownloaderKey = "UIImageView.SharedImageDownloader"
private var activeRequestKey = "UIImageView.ActiveRequest"

    
    public class var ai_sharedImageDownloader: ImageDownloader {
        get {
            if let downloader = objc_getAssociatedObject(self, &AssociatedKeys.sharedImageDownloaderKey) as? ImageDownloader {
                return downloader
            } else {
                return ImageDownloader.defaultInstance
            }
        }
        set(downloader) {
            objc_setAssociatedObject(self, &AssociatedKeys.sharedImageDownloaderKey, downloader, UInt(OBJC_ASSOCIATION_RETAIN_NONATOMIC))
        }
    }
    
    private var ai_activeRequest: Request? {
        get {
            return objc_getAssociatedObject(self, &AssociatedKeys.activeRequestKey) as? Request
        }
        set(request) {
            objc_setAssociatedObject(self, &AssociatedKeys.activeRequestKey, request, UInt(OBJC_ASSOCIATION_RETAIN_NONATOMIC))
        }
    }
    
