Finished parser (untested)