     Element: ObservableCollectionEventProtocol, Element.UnderlyingCollection.Index == Int, Error == NoError {
 
     @discardableResult
-    public func bind(to tableView: NSTableView, animated: Bool = true, createCell: @escaping (UnderlyingCollection, Int, NSTableView) -> NSView?) -> Disposable {
+    public func bind(to tableView: NSTableView, animated: Bool = true, createCell: @escaping (UnderlyingCollection, Int, NSTableColumn?, NSTableView) -> NSView?) -> Disposable {
         let binder = TableViewBinder(measureCell: nil, createCell: createCell)
         if !animated {
             binder.deleteAnimation = nil

//  THE SOFTWARE.
//

import Foundation
import AppKit
import ReactiveKit

        return measureCell?(dataSource, index, tableView) ?? tableView.rowHeight
    }

    open func cellForRow(at index: Int, tableColumn: NSTableColumn?, tableView: NSTableView, dataSource: UnderlyingCollection) -> NSView? {
        return createCell?(dataSource, index, tableColumn, tableView) ?? nil
    }

    open func apply(diff: [CollectionOperation<Int>], to tableView: NSTableView) {
