     self.didUpdateListener = { [weak self] array, i in
       if let s = self {
         if let tableView = s.tableView {
-          perform(animated: !s.disableAnimation) {
+          perform(animated: !disableAnimation) {
             tableView.beginUpdates()
             tableView.reloadSections(NSIndexSet(array: i), withRowAnimation: UITableViewRowAnimation.Automatic)
 
             for section in i {
-              let sectionBond = UITableViewDataSourceSectionBond<Void>(tableView: tableView, section: section)
+              let sectionBond = UITableViewDataSourceSectionBond<Void>(tableView: tableView, section: section, disableAnimation: disableAnimation)
               let sectionDynamic = array[section]
               sectionDynamic.bindTo(sectionBond)
               

private class UITableViewDataSourceSectionBond<T>: ArrayBond<UITableViewCell> {
  weak var tableView: UITableView?
  var section: Int
  var disableAnimation = false
  init(tableView: UITableView?, section: Int) {
    self.tableView = tableView
    self.section = section
    super.init()
    
    self.didInsertListener = { [unowned self] a, i in
      if let tableView: UITableView = self.tableView {
        tableView.beginUpdates()
        tableView.insertRowsAtIndexPaths(i.map { NSIndexPath(forItem: $0, inSection: self.section) }, withRowAnimation: UITableViewRowAnimation.Automatic)
        tableView.endUpdates()
      }
    }
    
    self.didRemoveListener = { [unowned self] a, i in
      if let tableView = self.tableView {
        tableView.beginUpdates()
        tableView.deleteRowsAtIndexPaths(i.map { NSIndexPath(forItem: $0, inSection: self.section) }, withRowAnimation: UITableViewRowAnimation.Automatic)
        tableView.endUpdates()
      }
    }
    
    self.didUpdateListener = { [unowned self] a, i in
      if let tableView = self.tableView {
        tableView.beginUpdates()
        tableView.reloadRowsAtIndexPaths(i.map { NSIndexPath(forItem: $0, inSection: self.section) }, withRowAnimation: UITableViewRowAnimation.Automatic)
        tableView.endUpdates()
      }
    }
  }

    self.didRemoveListener = { [weak self] array, i in
      if let s = self {
        if let tableView = s.tableView {
          perform(animated: !disableAnimation) {
            tableView.beginUpdates()
            tableView.deleteSections(NSIndexSet(array: i), withRowAnimation: UITableViewRowAnimation.Automatic)
            for section in sorted(i, >) {
