fix 'undo' bugs