 
 public extension UITableView {
 
-  public func performUpdates(records: [DeltaCollectionRecord]) {
+  public typealias TableViewUpdateCallback = (NSIndexPath, NSIndexPath) -> Void
+
+  public func performUpdates(records: [DeltaCollectionRecord], updateCallback: TableViewUpdateCallback? = nil) {
     self.beginUpdates()
     for record in records {
       let indexPath = NSIndexPath(forRow: record.index, inSection: record.section)

    self.endUpdates()
  }
  
}
        let fromIndexPath = NSIndexPath(forRow: record.fromIndex, inSection: record.section)
        self.moveRowAtIndexPath(fromIndexPath, toIndexPath: indexPath)
      case .ChangeItem, .ReloadItem:
        let newIndexPath = NSIndexPath(forRow: record.fromIndex, inSection: record.section)
        if let updateCallback = updateCallback {
          updateCallback(indexPath, newIndexPath)
        } else {
          self.reloadRowsAtIndexPaths([indexPath], withRowAnimation: .Automatic)
        }
      case .ReloadSection:
        self.reloadSections(NSIndexSet(index: record.section), withRowAnimation: .Automatic)
      case .MoveSection:
