public void onDataAvailable(String command) throws IOException, CommandParseException {
		AbstractCommand cmd = CommandParser.parse(command);
		if (cmd != null) {
			List<ICommandSubscriber> commandSubscriberList = subscribers.get(cmd.getClass());
			if (cmd instanceof AbstractMethodCommand) {
				Utilities.log(this.generateRmcSubscriberKey(((AbstractMethodCommand) cmd).widgetId, cmd.subject,
						((AbstractMethodCommand) cmd).callId));
				commandSubscriberList = this.rmcSubscribers.get(this.generateRmcSubscriberKey(
						((AbstractMethodCommand) cmd).widgetId, cmd.subject, ((AbstractMethodCommand) cmd).callId));
			} else {
				commandSubscriberList = subscribers.get(cmd.getClass());
			}
			if (commandSubscriberList != null) {
				for (ICommandSubscriber cs : commandSubscriberList) {
					cs.onCommandReceived(cmd);
				}
			} else {
				Utilities.log("No one cares about:" + cmd.getClass().getCanonicalName());
			}
		}
	}