undo/redo is going to need an overhaul...