optimize the parser