Some work to make the parser more extensible