Much work on the parser