begin implement undo/redo states for winforms