* @param line_limit  the maximum length of a string to send
	 * @param client      the client
	 */
	public void showDesc(final String description, final int line_limit, final Client client) {

		final StringBuilder result = new StringBuilder(line_limit);

		String temp;

		/*
		 * boolean nl_begin = false; boolean nl_middle = false; boolean nl_end =
		 * false;
		 */

		// TODO fix checking and handling of a newline marker (maybe make it #n
		// or #nl/$n or $nl)
		for (final String word : description.split(" ")) { // ^[a-zA-Z]$ ^\\b$
			// TODO find a way to make sure this usually doesn't show up in
			// debug
			// debug("result: " + result, 4);
			// debug("result (length): " + result.length(), 4);
			// debug("next: " + word, 4);
			// debug("next (length): " + word.length(), 4);

			// newline handling
			if (word.contains("&n")) {
				Tuple<String, String> temp1 = new Tuple<String, String>("", word);

				while (!temp1.two.equals("")) {
					System.out.println("WHILE (TOP)");
					System.out.println("temp1 (1): " + temp1.one);
					System.out.println("temp1 (2): " + temp1.two);
					System.out.println("result: " + result.toString());

					Utils.handle_newline_in_word(temp1.two, temp1);

					if (temp1.one.equals("&n")) {
						if (result.length() != 0) {
							send(result.toString(), client);              // send the current contents of the buffer
							
							result.delete(0, result.length()); // clear the buffer
						}
						else {
							send("", client);
						}
					}
					else {
						// intelligently append word
						if (result.length() != 0) result.append(" " + temp1.one);
						else                      result.append(temp1.one);

						/*
						 * if (result.length() < 1) { // append current word if
						 * empty result.append(word); } else if (result.length()
						 * + word.length() + 1 < line_limit) { // append current
						 * word if it won't overflow
						 * result.append(" ").append(word); }
						 * 
						 * else { // if it will overflow, send and clear, and
						 * append current word send(result, client);
						 * result.delete(0, result.length());
						 * result.append(word); }
						 */
					}

					System.out.println("WHILE (BOTTOM)");
					System.out.println("temp1 (1): " + temp1.one);
					System.out.println("temp1 (2): " + temp1.two);
					System.out.println("result: " + result.toString());
				}

				// result.append(" " + temp1.one);

				continue;
			}

			/*
			 * 
			 * // newline check nl_begin = word.startsWith("$n"); nl_middle =
			 * word.contains("$n"); nl_end = word.endsWith("$n");
			 * 
			 * //debug("Newline? " + nl_middle, 4);
			 * 
			 * // need to integrate the following three cases into the three
			 * primary cases somehow // converting the array above into a list
			 * so that I break words containing \n up // and insert the other
			 * part before the following word might help
			 * 
			 * if(nl_begin) { //debug("send", 4); send(result, client); // send
			 * the current contents of the buffer result.delete(0,
			 * result.length()); // clear the buffer temp = word.substring(
			 * word.indexOf("$n") + 2 ); // everything after '$n'
			 * result.append(temp); // append the word after the newline }
			 * 
			 * // append the first part (before the \n) if(nl_middle) { temp =
			 * word.substring(0, word.indexOf("$n"));
			 * result.append(" ").append(temp); //debug("send", 4); send(result,
			 * client); result.delete(0, result.length());
			 * result.append(word.substring(word.indexOf("$n") + 1,
			 * word.length())); continue; }
			 * 
			 * if(nl_end) { temp = word.substring(0, word.indexOf("$n")); // get
			 * everything before the newline result.append(" ").append( temp );
			 * // append everything before the newline //debug("send", 4);
			 * send(result, client); // send the current contents of the buffer
			 * result.delete(0, result.length()); // clear the buffer continue;
			 * }
			 */

			else {
				if (result.length() < 1) { // append current word if empty
					result.append(word);
				}
				else if (result.length() + word.length() + 1 < line_limit) { // append current word if it won't overflow
					// debug("add", 4);
					result.append(" ").append(word);
				}

				/*
				 * // interesting idea, but not very good results else if
				 * (result.length() + word.length() + 1 > line_limit) { // split
				 * the word so it fits int max = line_limit - result.length() -
				 * 1; debug("add", 4); if( max < word.length() ) {
				 * result.append(" ").append(word.substring(0, max -
				 * 1)).append("-"); } }
				 */

				else { // if it will overflow, send and clear, and append current word
					//debug("send", 4);
					send(result.toString(), client);
					
					result.delete(0, result.length());
					result.append(word);
				}
			}
		}

		// make sure we send the last word if there was only one left
		if (result.length() > 0) {
			// debug("send", 4);
			send(result.toString(), client);
			
			result.delete(0, result.length());
		}
	}