A step toward command/query separation, 'Simulation' is reference inside service centers to schedule (and remove) events. It would be better for the methods to return all new events, or perhaps a 'command' object with addition and removal parameters.
It is debatable if events should be removed from the simulation queue at all, or if service centers should merely ignore invalid events. If the latter, removal does not need to be supported in the new interface.
This would also aid testability, since then service centers could be tested in isolation, without needing an entire 'simulation' object around them.