refactor AST nodes