 			if oldValue == nil || !UIView.areAnimationsEnabled {
 				flattened = to ?? []
 				updateIndexes()
-				tableView.reloadData()
+				tableView?.reloadData()
 			}
 			else {
 				replaceNodes(at: 0..<flattened.count, with: to ?? [])
 			}
-		}
-	}
-	
-	@IBOutlet public weak var tableView: UITableView!
+			delegate?.treeControllerDidUpdateContent?(self)
+		}
+	}
+	
+	@IBOutlet public weak var tableView: UITableView?
 	@IBOutlet public weak var delegate: TreeControllerDelegate?
 	
 	private var flattened: [TreeNode] = []

		node._isSelected = false
		guard let index = node.flatIndex else {return}
		let indexPath = IndexPath(row: index, section: 0)
		tableView.deselectRow(at: indexPath, animated: animated)
	}
	
	public func selectCell(for node: TreeNode, animated: Bool, scrollPosition: UITableViewScrollPosition) {
		node._isSelected = true
		guard let index = node.flatIndex else {return}
		let indexPath = IndexPath(row: index, section: 0)
		tableView.selectRow(at: indexPath, animated: animated, scrollPosition: scrollPosition)
	}
	
	

					
					switch b.transitionStyle(from: a) {
					case .reload:
						tableView?.reloadRows(at: [indexPath], with: animation)
						break
					case .reconfigure:
						if let cell = tableView?.cellForRow(at: indexPath) {
							b.configure(cell: cell)
						}
					//tableView?.reloadRows(at: [indexPath], with: .none)
					default:
						break
					}
