Use undo/redo objects as command patches instead of commands
Tidy up old code