large reduction in code using llvme_enum ast gen