Huge restructuring of simulation class, simulation args and error handling.