separate ast and eval