   
   @objc
   public func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
-  
+    
     if var checkable = cell as? Checkable {
       checkable.checked = checkedIndexPaths.contains(indexPath)
     }
-  
+    
     willDisplayCell.sendNext((cell, indexPath))
     behaviors.forEach {
       if $0.respondsToSelector(#selector(UITableViewDelegate.tableView(_:willDisplayCell:forRowAtIndexPath:))) {

  
  @objc
  public func tableView(tableView: UITableView,
    cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
      let object = dataSource.objectAtIndexPath(indexPath)!;
      let identifier = nibNameForObjectMatching((object, indexPath))
      var cell = tableView.dequeueReusableCellWithIdentifier(identifier)
      identifiersForIndexPaths[indexPath] = identifier
      
      if cell == nil {
        cell = (nibs[identifier]!.instantiateWithOwner(nil, options: nil).last as! UITableViewCell)
      }
      
      willSetObject.sendNext((cell!, indexPath))
      
      let mapping = mappings[identifier]!
      mapping(object, cell!, indexPath)
      
      didSetObject.sendNext((cell!, indexPath))
      
      return cell!
  }
  
  @objc

          strongSelf.tableView.reloadData()
          UIView.animateWithDuration(0.2, animations: {
            strongSelf.tableView.alpha = 1
          })
      })
      }.putInto(pool)
    
    dataSource.didChangeObjectSignal.subscribeNext { [weak self] object, changeType, fromIndexPath, toIndexPath in
      guard let strongSelf = self else { return }
