Lots of work on the parser