         }
 
         public func storeCachedData(_ data: Data, for request: ImageRequest) {
-            fatalError("Not implemented")
+            guard let dataCache = pipeline.configuration.dataCache else {
+                return
+            }
+            let key = makeDiskCacheKey(for: request)
+            dataCache.storeData(data, for: key)
         }
 
         public func removeCachedData(request: ImageRequest) {

            }
        }

        func decodeImageData(_ data: Data, for request: ImageRequest) -> ImageContainer? {
            let context = ImageDecodingContext(request: request, data: data, isCompleted: true, urlResponse: nil)
            guard let decoder = pipeline.configuration.makeImageDecoder(context) else {
                return nil
            }
            return decoder.decode(data, urlResponse: nil, isCompleted: true)?.container
        }

        public func storeCachedImage(_ container: ImageContainer, for request: ImageRequest, sources: Set<ImageCacheType> = [.memory, .disk]) {
            fatalError("Not implemented")
        }

        func storeCachedImageInMemoryCache(_ image: ImageContainer, for request: ImageRequest) {

        public func removeAll(sources: Set<ImageCacheType> = [.memory, .disk]) {
            fatalError("Not implemented")
        }

        // MARK: Encode/Decode (Private)

        private func decodeImageData(_ data: Data, for request: ImageRequest) -> ImageContainer? {
            let context = ImageDecodingContext(request: request, data: data, isCompleted: true, urlResponse: nil)
            guard let decoder = pipeline.configuration.makeImageDecoder(context) else {
                return nil
            }
            return decoder.decode(data, urlResponse: nil, isCompleted: true)?.container
        }

        private func encodeImage(_ image: ImageContainer, for request: ImageRequest) -> Data? {
            let context = ImageEncodingContext(request: request, image: image.image, urlResponse: nil)
            let encoder = pipeline.configuration.makeImageEncoder(context)
            return encoder.encode(image, context: context)
        }
    }
}

