     private typealias SectionChangeTuple = (changeType: NSFetchedResultsChangeType, sectionIndex: Int)
     private var sectionChanges = [SectionChangeTuple]()
 
-    private typealias ObjectIndexPaths = [NSIndexPath]
-    private typealias ObjectChangesDictionary = [NSFetchedResultsChangeType : ObjectIndexPaths]
-
-
-    private var objectChanges = [ObjectChangesDictionary]()
+    private typealias ObjectChangeTuple = (changeType: NSFetchedResultsChangeType, indexPaths: [NSIndexPath])
+    private var objectChanges = [ObjectChangeTuple]()
+
 
     private lazy var bridgedDelegate: BridgedFetchedResultsDelegate = BridgedFetchedResultsDelegate(
         willChangeContent: { [unowned self] (controller) -> Void in

public final class TableViewFetchedResultsDelegateProvider <
    Item,
    CellFactory: TableViewCellFactoryType
where CellFactory.Item == Item> {

    // MARK: Properties


        })

    private func applyObjectChanges() {
        for (changeType, indexPaths) in objectChanges {

            switch(changeType) {
            case .Insert: collectionView?.insertItemsAtIndexPaths(indexPaths)
            case .Delete: collectionView?.deleteItemsAtIndexPaths(indexPaths)
            case .Update: collectionView?.reloadItemsAtIndexPaths(indexPaths)
            case .Move:
                if let first = indexPaths.first, last = indexPaths.last {
                    collectionView?.moveItemAtIndexPath(first, toIndexPath: last)
                }
            }
        }
