Implement new AST