             self.sectionChanges.append((changeType, sectionIndex))
         },
         didChangeObject: { [unowned self] (controller, anyObject, indexPath: NSIndexPath?, changeType, newIndexPath: NSIndexPath?) -> Void in
-            var changes = ObjectChangesDictionary()
-
             switch changeType {
             case .Insert:
                 if let insertIndexPath = newIndexPath {
-                    changes[changeType] = [insertIndexPath]
+                    self.objectChanges.append((changeType, [insertIndexPath]))
                 }
             case .Delete:
                 if let deleteIndexPath = indexPath {
-                    changes[changeType] = [deleteIndexPath]
+                    self.objectChanges.append((changeType, [deleteIndexPath]))
                 }
             case .Update:
                 if let indexPath = indexPath {
-                    changes[changeType] = [indexPath]
+                    self.objectChanges.append((changeType, [indexPath]))
                 }
             case .Move:
                 if let old = indexPath, new = newIndexPath {
-                    changes[changeType] = [old, new]
-                }
-            }
-
-            self.objectChanges.append(changes)
+                    self.objectChanges.append((changeType, [old, new]))
+                }
+            }
         },
         didChangeContent: { [unowned self] (controller) -> Void in
 

        })

    private func applyObjectChanges() {
        for eachChange in objectChanges {
            for (changeType, indexPaths): (NSFetchedResultsChangeType, [NSIndexPath]) in eachChange {

                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)
                    }
                }
            }
        }

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

    // MARK: Properties

