added Visualizer, tests and comments