 		guard let index = node.flatIndex else {return nil}
 		return IndexPath(row: index, section: 0)
 	}
-	
+
+	@nonobjc public func node(for indexPath: IndexPath) -> TreeNode? {
+		return flattened[indexPath.row]
+	}
+
 	public func reloadCells(for nodes: [TreeNode], with animation: UITableViewRowAnimation = .fade) {
 		let indexPaths = nodes.flatMap({$0.flatIndex == nil ? nil : IndexPath(row: $0.flatIndex!, section:0)})
 		if (indexPaths.count > 0) {

			oldValue?.treeController = nil
			content?.treeController = self
			let to = content?.flattened
			if oldValue == nil || !UIView.areAnimationsEnabled {
				flattened = to ?? []
				updateIndexes()
				tableView?.reloadData()

open class TreeNode: NSObject {
	open var cellIdentifier: String?
	open func configure(cell: UITableViewCell) -> Void {
	}
	
	public init(cellIdentifier: String? = nil) {
