reimplemented polyparser w/ parsec