implement GillespieSimulator