     switch changeSet {
     case .Inserts(let indices):
       let indexPaths = indices.map { NSIndexPath(forItem: $0, inSection: sectionIndex) }
-      if let animation = dataSource?.tableView?(tableView, shouldAnimationForRowAtIndexPaths: indexPaths) where animation == false { tableView.reloadData(); break }
       tableView.insertRowsAtIndexPaths(indexPaths, withRowAnimation: dataSource?.tableView?(tableView, animationForRowAtIndexPaths: indexPaths) ?? .Automatic)
     case .Updates(let indices):
       let indexPaths = indices.map { NSIndexPath(forItem: $0, inSection: sectionIndex) }
-      if let animation = dataSource?.tableView?(tableView, shouldAnimationForRowAtIndexPaths: indexPaths) where animation == false { tableView.reloadData(); break }
       tableView.reloadRowsAtIndexPaths(indexPaths, withRowAnimation: dataSource?.tableView?(tableView, animationForRowAtIndexPaths: indexPaths) ?? .Automatic)
     case .Deletes(let indices):
       let indexPaths = indices.map { NSIndexPath(forItem: $0, inSection: sectionIndex) }
-      if let animation = dataSource?.tableView?(tableView, shouldAnimationForRowAtIndexPaths: indexPaths) where animation == false { tableView.reloadData(); break }
       tableView.deleteRowsAtIndexPaths(indexPaths, withRowAnimation: dataSource?.tableView?(tableView, animationForRowAtIndexPaths: indexPaths) ?? .Automatic)
     }
   }

    
    array.observeNew { [weak self] arrayEvent in
      guard let unwrappedSelf = self, let tableView = unwrappedSelf.tableView else { return }
      
      switch arrayEvent.operation {
      case .Batch(let operations):

    for (sectionIndex, sectionObservableArray) in array.enumerate() {
      sectionObservableArray.observeNew { [weak tableView, weak self] arrayEvent in
        guard let tableView = tableView else { return }
        if let _ = self?.proxyDataSource?.shouldReloadInsteadOfUpdateTableView?(tableView) { tableView.reloadData(); return }
        
        switch arrayEvent.operation {
        case .Batch(let operations):
          tableView.beginUpdates()
