improve the parser, and make it used