Refactored Simulator classes into abstract Simulator base class and inherited SingleThreadedSim class.