some serious work on the visualizer