no duplicates in undo stack