         
         if possibleObject == nil {
             // Try to load object from disk (synchronously)
-            dispatch_sync(diskReadQueue) {
+            dispatch_sync(diskReadWriteQueue) {
                 if let path = self.urlForKey(key).path where self.fileManager.fileExistsAtPath(path) {
                     possibleObject = NSKeyedUnarchiver.unarchiveObjectWithFile(path) as? CacheObject
                 }

        cache.setObject(cacheObject, forKey: key)
        
        // Write object to disk (asyncronously)
        dispatch_async(diskWriteQueue) {
            if let path = self.urlForKey(key).path {
                NSKeyedArchiver.archiveRootObject(cacheObject, toFile: path)
            }

	public func removeAllObjects(completion: (() -> Void)? = nil) {
		cache.removeAllObjects()
		
		dispatch_barrier_async(diskReadWriteQueue) {
            let keys = self.allKeys()
			
            for key in keys {
