     }
 
     // MARK: Private
+
+    private typealias SectionIndex = Int
+    private typealias SectionChangesDictionary = [NSFetchedResultsChangeType : SectionIndex]
+
+    private typealias ObjectIndexPaths = [NSIndexPath]
+    private typealias ObjectChangesDictionary = [NSFetchedResultsChangeType : ObjectIndexPaths]
 
     private var sectionChanges = [SectionChangesDictionary]()
     

///  <DataItem>
///  ````
///  <br/>
///  Here, the `DataItem` type parameter acts as a [phatom type](http://www.objc.io/snippets/13.html). 
///  This type should correpsond to the type of objects that the `NSFetchedResultsController` fetches.
public final class CollectionViewFetchedResultsDelegateProvider <DataItem> {

    private typealias SectionIndex = Int
    private typealias SectionChangesDictionary = [NSFetchedResultsChangeType : SectionIndex]

    private typealias ObjectIndexPaths = [NSIndexPath]
    private typealias ObjectChangesDictionary = [NSFetchedResultsChangeType : ObjectIndexPaths]

    // MARK: Properties


    private lazy var bridgedDelegate: BridgedFetchedResultsDelegate = BridgedFetchedResultsDelegate(
        willChangeContent: { [unowned self] (controller) -> Void in
            self.tableView?.beginUpdates()
        },
        didChangeSection: { [unowned self] (controller, sectionInfo, sectionIndex, changeType) -> Void in
            switch changeType {
