Implement more of the parser