Impoved undo redo