some undo/redo behavior implemented and tested, far from being functional and complete