begin writing a terrible monster of a parser