         var indexPathsForInsertion: [NSIndexPath] = []
         var indexPathsForDeletion: [NSIndexPath] = []
         
-        if clearCacheIfNewItems {
+        if clearCacheIfNewItemsAreDifferent {
             indexPathsForInsertion = _indexesForItems(insertSet, inArray: newItems)
             let deleteSet = oldSet.subtract(newSet)
             indexPathsForDeletion = _indexesForItems(deleteSet, inArray: items)
             items = newItems
+
             cache?.clearCache()
             cache?.addItems(items)
         }

        }
    }
    
    private func _processNewItems(newItems: [T], clearCacheIfNewItems: Bool) {
        if newItems == items {
            delegate?.itemsUpdated([], itemsDeleted: [])
            return
        }
        let newSet = Set(newItems)
        let oldSet = Set(items)

        request.fetchItems(success: { [weak self](newItems) -> () in
            if let strongSelf = self {
                if let items =  newItems as Any as? [T]{
                    strongSelf._processNewItems(items, clearCacheIfNewItemsAreDifferent: request.clearStaleDataOnCompletion)
                }
            }
        }) { (error) -> () in
            //TODO: call error callback
        }
    }
    
