An empirical evaluation of undo mechanisms | Synapse