         return cache
     }()
 
-    private(set) lazy var queue: OperationQueue = {
+    private lazy var queue: OperationQueue = {
         let queue = OperationQueue()
         queue.name = "ImageStore.ImageStore.queue"
         return queue
     }()
 
-    private(set) lazy var session: URLSession = {
+    private lazy var session: URLSession = {
         let config: URLSessionConfiguration = .default
         config.timeoutIntervalForRequest = 30
         config.timeoutIntervalForResource = 30

        return task
    }

    open func suspendIfResuming(url: URL) {
        if let task = downloadTaskByURLString[url.absoluteString] {
            task.suspend()
        }
    }

    open func cancel(url: URL) {
        if let task = downloadTaskByURLString[url.absoluteString] {
            task.cancel()
            downloadTaskByURLString.removeValue(forKey: url.absoluteString)

    }


    fileprivate let config: ImageStoreConfig
    fileprivate var completionsByURLString: [String: [ImageStoreCompletionHandler]] = [:]
    fileprivate var downloadTaskByURLString: [String: URLSessionDownloadTask] = [:]

    public private(set) lazy var cache: NSCache<AnyObject, UIImage> = {
        let cache: NSCache<AnyObject, UIImage> = NSCache()
