private String buildChatMessage(String channelName, Pair<String> colorData, Message msg, Boolean color, Boolean tagged) {
		final StringBuilder sb = new StringBuilder();
		
		final String chanColor = colorData.one;
		final String textColor = colorData.two;
		
		// TODO is there a better way to handle a null sender?
		
		if( tagged ) sb.append("CHAT ");
		
		if( color ) sb.append("(" + colors(channelName, chanColor) + ")");
		else        sb.append("(" + channelName + ")");
		
		sb.append(" ");
		sb.append("<" + (msg.getSender() != null ? msg.getSender().getName() : "System") + ">");
		sb.append(" ");
		
		if( color ) sb.append(colors(msg.getMessage(), textColor));
		else        sb.append(msg.getMessage());
		
		sb.append("\r\n");
		
		return sb.toString();
	}