add a state manager for undo/redo