                 return true
             }
 
-            filesToRemove.map { $0.path }
-            .forEach {
-                guard let _ = try? self.fileManager.removeItem(atPath: $0) else {
+            filesToRemove.forEach {
+                guard let _ = try? self.remove(fileAtURL: $0.url, size: $0.fileAttr.size) else {
                     assertionFailure("💥 Failed to remove file with path 👉 \($0)")
 
                     return print("💥 Failed to remove file with path 👉 \($0)")

            let urls = self.directoryContents(with: [.contentAccessDateKey, .fileSizeKey])

            typealias FileAccessTimeSizeTuple = (accessTime: TimeInterval, size: UInt64)
            typealias FilePathAttributesTuple = (path: String, fileAttr: FileAccessTimeSizeTuple)

            let fileAttributes: [FilePathAttributesTuple] = urls.map {
                let resourceValue = $0.resourceValues(forKeys: [.contentAccessDateKey, .fileSizeKey])

                return ($0.path, (resourceValue.contentAccessDate?.timeIntervalSince1970 ?? 0, UInt64(resourceValue.fileSize ?? 0)))
                }.sorted { $0.fileAttr.accessTime > $1.fileAttr.accessTime }

            var evictSize: UInt64 = 0


        let removeOperation = DiskMemoryBlockOperation() { [unowned self] in
            let path = self.diskPath(for: key)
            let fileURL = URL(fileURLWithPath: path)
            
            guard let fileSize = fileURL.resourceValues(forKeys: [.fileSizeKey]).fileSize else {
                return completion { throw PersistenceError.other(Error.failedToRemoveFile(nil)) }
            }

            do {
                try self.remove(fileAtURL: fileURL, size: UInt64(fileSize))
            } catch let error {
                return completion { throw error }
            }

            completion { () }
