public void registerCommandSubscriber(ICommandSubscriber subscriber, Class<? extends AbstractCommand> commandType, Object... params) throws InterruptedException {
		Utilities.log("Router, Registering :" + commandType.getCanonicalName());
		List<ICommandSubscriber> commandSubscriberList = subscribers.get(commandType);
		if (commandSubscriberList == null) {
			commandSubscriberList = new LinkedList<ICommandSubscriber>();
			subscribers.put(commandType, commandSubscriberList);
		}
		if (!commandSubscriberList.contains(subscriber)) {
			commandSubscriberList.add(subscriber);
			this.subscribeTo(commandType, params);
		} else {
			Utilities.log("Preventing subscriber from subscribing twice to an event");
		}
	}