                     self.collectionView.reloadData()
                 }
         }
-        
-//        let sectionsToInsert = NSMutableIndexSet()
-//        for index in 0..<update.insertedSectionIndexes.count {
-//            if self.collectionView.numberOfSections() <= index {
-//                sectionsToInsert.addIndex(index)
-//            }
-//        }
-//        
-//        let sectionChanges = update.deletedSectionIndexes.count + update.insertedSectionIndexes.count + update.updatedSectionIndexes.count
-//        let itemChanges = update.deletedRowIndexPaths.count + update.insertedRowIndexPaths.count + update.updatedRowIndexPaths.count
-//        
-//        if self.shouldReloadCollectionViewToPreventInsertFirstItemIssueForUpdate(update) {
-//            self.storageNeedsReloading()
-//            return
-//        }
-//        // TODO - Check if historic workaround is needed.
-//        
-//        if sectionChanges > 0 {
-//            self.collectionView.performBatchUpdates({ () -> Void in
-//                self.collectionView.deleteSections(update.deletedSectionIndexes.makeNSIndexSet())
-//                self.collectionView.insertSections(update.insertedSectionIndexes.makeNSIndexSet())
-//                self.collectionView.reloadSections(update.updatedSectionIndexes.makeNSIndexSet())
-//                }, completion: nil)
-//        }
-//        
-//        if itemChanges > 0 && sectionChanges == 0 {
-//            self.collectionView.performBatchUpdates({ () -> Void in
-//                self.collectionView.deleteItemsAtIndexPaths(Array(update.deletedRowIndexPaths))
-//                self.collectionView.insertItemsAtIndexPaths(Array(update.insertedRowIndexPaths))
-//                }, completion: nil)
-//                self.collectionView.reloadItemsAtIndexPaths(Array(update.updatedRowIndexPaths))
-//        }
-        
         self.controllerDidUpdateContent()
     }
     

    {
        let reaction = CollectionViewReaction(.CellConfiguration)
        reaction.viewType = _reflect(T)
        reaction.reactionBlock = { [weak self, reaction] in
            if let configuration = reaction.reactionData as? ViewConfiguration,
                let cell = configuration.view as? T,
                let model = self?.storage.itemAtIndexPath(configuration.indexPath) as? T.ModelType,

    {
        let reaction = CollectionViewReaction(.Selection)
        reaction.viewType = _reflect(T)
        reaction.reactionBlock = { [weak self, unowned reaction] in
            if let indexPath = reaction.reactionData as? NSIndexPath,
                let cell = self?.collectionView.cellForItemAtIndexPath(indexPath) as? T,
                let model = self?.storage.itemAtIndexPath(indexPath) as? T.ModelType
