Making a heterogenous AST instead of homogenous (for readability)