did a lot of work on the parser