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

        
        if possibleObject == nil {
            // Try to load object from disk (synchronously)
            dispatch_sync(diskReadQueue) {
                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_barrier_async(diskReadWriteQueue) {
            if let path = self.urlForKey(key).path {
                NSKeyedArchiver.archiveRootObject(cacheObject, toFile: path)
            }
