With our tree implemented with immutable data structure, undo redo functionality implemeted trivially