         return task
     }
 
-    open func suspendIfResuming(url: URL) {
+    public func suspendIfResuming(url: URL) {
         if let task = downloadTaskByURLString[url.absoluteString] {
             task.suspend()
         }
     }
 
-    open func cancel(url: URL) {
+    public func cancel(url: URL) {
         if let task = downloadTaskByURLString[url.absoluteString] {
             task.cancel()
             downloadTaskByURLString.removeValue(forKey: url.absoluteString)

        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

    }


    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()
