A selective undo mechanism for graphical user interfaces based on command objects | Synapse