@Override
	public AbstractClientState receiveMessage(ClientMessage message) {
		if (message == null) {
			LogoutMessage m = new LogoutMessage();
			m.setClientId(this.getClient().getClientID());
			this.game.receive(m);
			AuthenticationService.logout(this.getClient());
			logger.info("client " + this.getClient()
					+ " disconnected in InGameState");
			return null;
		}
		if (message instanceof GameMessage) {
			if (message instanceof SendMessageMessage) {
				String[] msgSplit = ((SendMessageMessage) message).getMessage()
						.split(" ");
				if (msgSplit.length >= 1) {
					if ((msgSplit.length > 2)
							&& msgSplit[0].equalsIgnoreCase("/to")
							&& !this.getClient().getPlayerModel().getName()
									.equalsIgnoreCase(msgSplit[1])) {
						authenticatedState.receiveMessage(message);
						return this;
					}
				}
			}
			this.game.receive((GameMessage) message);
			if (message instanceof ExitGameMessage) {
				return this.authenticatedState;
			}
			if (message instanceof LogoutMessage) {
				AuthenticationService.logout(this.getClient());
				return this.authenticatedState.getAnonymousState();
			}
			return this;
		}
		logger.error("Wrong messagetype for GameQueue: "
				+ message.toString());
		return this;
	}