code gen logic now happens with parsing