     }
 
 
-    let config: ImageStoreConfig
-    var completionsByURLString: [String: [ImageStoreCompletionHandler]] = [:]
-    var downloadTaskByURLString: [String: URLSessionDownloadTask] = [:]
+    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()

        return cache
    }()

    private(set) lazy var queue: OperationQueue = {
        let queue = OperationQueue()
        queue.name = "ImageStore.ImageStore.queue"
        return queue
    }()

    private(set) lazy var session: URLSession = {
        let config: URLSessionConfiguration = .default
        config.timeoutIntervalForRequest = 30
        config.timeoutIntervalForResource = 30

        return task
    }

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

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