*/
	public void addMessage(final Message msg) {
		// if this client's player is the intended recipient
		final MessageType type = msg.getType();
		
		final Player sender = msg.getSender();
		final Player recip = msg.getRecipient();
		final String message = msg.getMessage();
		final Integer location = msg.getLocation();

		Room room;

		debug(type.name(), 4);

		switch (type) {
		case BROADCAST:
			for (final Player player : players) {
				room = getRoom( player.getLocation() );
				
				if (room.getRoomType() == RoomType.OUTSIDE && player.getEditor() == Editors.NONE) {
					send(message, player.getClient());
				}
			}

			msg.markSent();
			break;
		case BROADCAST_LOCAL:
			room = getRoom(location);
			
			// just in case the location somehow isn't a room
			if (room != null) {
				// send a message to all of the room's listeners
				for (final Player player : room.getListeners()) {
					if (true) { // placeholder test condition for awareness of surroundings
						boolean name = ( message.contains( player.getName() ) );
						boolean cname = ( message.contains( player.getCName() ) );
						
						if ( !name && !cname ) {
							send(message, player.getClient());
						}
					}
				}
			}
			else {
				// TODO can't send error message here because we're not dealing directly with the player			//send("You are in a room that doesn't exist?!", 
			}

			msg.markSent();
			break;
		case BROADCAST_PLAYER:
			room = getRoom(msg.getLocation());

			if (room != null) {
				room.fireEvent(message);

				for (final Player bystander : room.getListeners()) {
					if (sender != bystander && !(bystander instanceof NPC)) {
						send(sender.getName() + " says, \"" + message + "\".", bystander.getClient());
					}
				}
			}
			
			msg.markSent();

			break;
		case NORMAL:
			// set up by default for "tells"
			String color = null;

			// TODO kludging here for color name
			if (sender instanceof NPC) {
				color = getDisplayColor("npc");
			}

			if (color != null) {
				send(colors(sender.getName(), color) + " tells you, \"" + message + ".\"", recip.getClient());
			}
			else {
				send(sender.getName() + " tells you, \"" + message + ".\"", recip.getClient());
			}

			msg.markSent();
			break;
		case SYSTEM:
			//send(msg.getMessage(), msg.getRecipient().getClient());
			send(message, recip.getClient());
			
			msg.markSent();
			break;
		default:
			debug("Message Type Unknown");
			
			if (sender != null) debug("Sender: " + msg.getSender().getName());
			if (recip != null)  debug("Recipient: " + msg.getRecipient().getName());
			
			debug("Message: " + msg);
			
			break;
		}

		if ( msg.wasSent() ) debug("addMessage, sent message", 4);
	}