undo/redo backend working