Finished, untested parser