starting to add support for do/undo