visualizer abstract class