refactored ASTVisualizer and dependent components