unified ast data structure... need to fix error control