         createCell = nil
     }
 
-    public init(measureCell: ((UnderlyingCollection, Int, NSTableView) -> CGFloat?)? = nil, createCell: ((UnderlyingCollection, Int, NSTableView) -> NSView?)? = nil) {
+    public init(measureCell: ((UnderlyingCollection, Int, NSTableView) -> CGFloat?)? = nil, createCell: ((UnderlyingCollection, Int, NSTableColumn?, NSTableView) -> NSView?)? = nil) {
         self.measureCell = measureCell
         self.createCell = createCell
     }

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

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

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

        disposable += tableView.reactive.delegate.feed(
            property: dataSource,
            to: #selector(NSTableViewDelegate.tableView(_:viewFor:row:)),
            map: { (dataSource: UnderlyingCollection?, tableView: NSTableView, tableColumn: NSTableColumn, row: Int) -> NSView? in
                guard let dataSource = dataSource else { return nil }
                return binder.cellForRow(at: row, tableColumn: tableColumn, tableView: tableView, dataSource: dataSource)
            }
        )

