nearly done with parser