separated simulation from visualization