undo/redo functioning (subject to more testing) with 'command pattern'.