improvements to parsing and undo lists