     @objc func controller(controller: NSFetchedResultsController, didChangeObject anObject: AnyObject, atIndexPath indexPath: NSIndexPath?, forChangeType type: NSFetchedResultsChangeType, newIndexPath: NSIndexPath?) {
         switch type {
         case .Insert:
-            self.fetchedResultsController.didInsertEntityClosure?(anObject as! NSManagedObject, newIndexPath!)
+            for closure in self.fetchedResultsController.didInsertEntityClosures {
+                closure(anObject as! NSManagedObject, newIndexPath!)
+            }
             
         case .Delete:
-            self.fetchedResultsController.didDeleteEntityClosure?(anObject as! NSManagedObject, indexPath!)
+            for closure in self.fetchedResultsController.didDeleteEntityClosures {
+                closure(anObject as! NSManagedObject, indexPath!)
+            }
             
         case .Update:
-            self.fetchedResultsController.didUpdateEntityClosure?(anObject as! NSManagedObject, indexPath!)
+            for closure in self.fetchedResultsController.didUpdateEntityClosures {
+                closure(anObject as! NSManagedObject, indexPath!)
+            }
             
         case .Move:
-            self.fetchedResultsController.didMoveEntityClosure?(anObject as! NSManagedObject, indexPath!, newIndexPath!)
+            for closure in self.fetchedResultsController.didMoveEntityClosures {
+                closure(anObject as! NSManagedObject, indexPath!, newIndexPath!)
+            }
             
         default:
             break


    private var needsReloadDataClosure: (() -> Void)?
    
    private var willChangeContentClosure: (() -> Void)?
    private var didChangeContentClosure: (() -> Void)?
    
    private var didInsertSectionClosure: ((FetchedResultsSectionInfo<T>, Int) -> Void)?
    private var didDeleteSectionClosure: ((FetchedResultsSectionInfo<T>, Int) -> Void)?
    private var didUpdateSectionClosure: ((FetchedResultsSectionInfo<T>, Int) -> Void)?
    
    private var didInsertEntityClosure: ((T, NSIndexPath) -> Void)?
    private var didDeleteEntityClosure: ((T, NSIndexPath) -> Void)?
    private var didUpdateEntityClosure: ((T, NSIndexPath) -> Void)?
    private var didMoveEntityClosure: ((T, NSIndexPath, NSIndexPath) -> Void)?
    
    private var sectionIndexTitleClosure: ((String) -> String!)?


    public func refresh() -> (success: Bool, error: NSError?) {
        self.needsReloadDataClosure?()
        
        for closure in self.willChangeContentClosures {
            closure()
        }
        
        var error: NSError? = nil
        let success = self.performFetch(&error)

        for closure in self.didChangeContentClosures {
            closure()
        }
        
        return (success, error)
    }
