reworked paser and builder