     /// Removes all images stored in the cache.
     ///
     /// - returns: `true` if images were removed from the cache, `false` otherwise.
-    @discardableResult
-    @objc public func removeAllImages() -> Bool {
+    @discardableResult @objc
+    open func removeAllImages() -> Bool {
         var removed = false
 
         synchronizationQueue.sync {

        return image
    }

    // MARK: Private - Helper Methods

    private func imageCacheKey(for request: URLRequest, withIdentifier identifier: String?) -> String {
        var key = request.url?.absoluteString ?? ""

        if let identifier = identifier {

    ///
    /// - parameter image:      The image to add to the cache.
    /// - parameter identifier: The identifier to use to uniquely identify the image.
    open func add(_ image: Image, withIdentifier identifier: String) {
        synchronizationQueue.async(flags: [.barrier]) {
            let cachedImage = CachedImage(image, identifier: identifier)

