public void start() throws IllegalStateException {
		if (SimulationClock.getInstance().isStarted())
			return;
		if (communicationHandler == null)
			throw new IllegalStateException("CommunicationHandler must be set");
		if (world == null)
			throw new IllegalStateException("World must be set");
		try {
			if (!world.isSealed()) {
				throw new IllegalAccessException("World must be sealed!");
			}
			SimulationClock.getInstance().init(world.getStartTime());
			SimulationClock.getInstance().start();
		} catch (IllegalAccessException e) {
			throw new IllegalStateException("Can't start if world isn't sealed");
		}
	}