modified AST