first attempt to add undo