moving ASTVisitor to NodeVisitor