Lots of changes to the parser