undo and redo are normal operators now. close #25