implementing a basic undo/redo, TODO: Range -> XPath Bookmark, Scroll