begin implementing an AST