* @param client
	 */
	public void op_listedit(final String input, final Client client) {
		final Player player = getPlayer(client);
		final EditList list = player.getEditList();

		debug("input: " + input);

		String lcmd = "";
		String larg = "";

		if (input.indexOf(".") == 0) {
			if (input.indexOf(" ") != -1) { // Arguments
				lcmd = input.substring(input.indexOf(".") + 1, input.indexOf(" "));
				larg = input.substring(input.indexOf(" ") + 1, input.length());
			}
			else { // No Arguments
				lcmd = input.substring(input.indexOf(".") + 1, input.length());
			}

			debug("LSEDIT CMD");
			debug("lcmd: " + lcmd);
			debug("larg: " + larg);

			if (lcmd.equals("abort") || lcmd.equals("a"))
			{
				// exit the editor, aborting any changes made
				player.abortEditing();

				send("< List Aborted. >", client);
				send("< Exiting... >", client);

				player.setEditor(Editors.NONE);
				player.setStatus("OOC");
			}
			else if (lcmd.equals("help") || lcmd.equals("h")) {
				send("<List Editor Help>", client);
				send(".abort(.a)  - throw out the current list and exit", client);
				send(".help(.h)   - display this help", client);
				send(".insert(.i) - move insertion point to line specified by arg", client);
				send(".list(.l)   - print out list w/line numbers", client);
				send(".print(.p)  - print out list w/o line numbers", client);
				send(".quit(.q)   - save and exit list", client);
				send(".save(.s)   - save list", client);
				send(".stat(.st)  - display current status of the list", client);
				send("< End List Editor Help >", client);
			}
			else if (lcmd.equals("insert") || lcmd.equals("i")) {
				if (list != null) {
					int lineNum = Utils.toInt(larg, list.getLineNum());
					list.setLineNum(lineNum);
				}
			}
			else if (lcmd.equals("list") || lcmd.equals("l"))
			{
				// send the list to the client, line by line (with line numbers)
				int i = 0;

				if (list != null) {
					for (String s : list.getLines()) {
						System.out.println(i + ": " + s);
						send(i + ": " + s, client);
						i++;
					}
				}
			}
			else if (lcmd.equals("print") || lcmd.equals("p"))
			{
				// send the list to the client, line by line
				if (list != null) {
					for (String s : list.getLines()) {
						System.out.println(s);
						send(s, client);
					}
				}
			}
			else if (lcmd.equals("quit") || lcmd.equals("q")) {
				// save the help file?
				op_listedit(".save", client);

				send("< Exiting... >", client);

				player.setEditor(Editors.NONE);
				player.setStatus("OOC");
			}
			else if (lcmd.equals("replace") || lcmd.equals("repl")) {
				// .replace start_line end_line line;line;line
				String re1 = "(\\d+)( )(\\d+)( )";
				String re2 = "((( )?(\\w+)( )?)*([;]))*";
				String re3 = "(( )?(\\w+)( )?)*";
				
				//if( larg.matches("^(\\d+)( )(\\d+)( )((( )?(\\w+)( )?)*([;]))*(( )?(\\w+)( )?)*$") ) {
				if( larg.matches("^"+re1+re2+re3+"$") ) {
					String[] args = larg.split(" ");
					
					int start = Utils.toInt(args[0], -1);
					int end = Utils.toInt(args[1], -1);
					
					String[] data = args[2].split(";");
					
					// TODO doesn't test that the lines fall within the list...
					if( start != -1 && end != -1 && end >= start ) {
						int n = 0;
						
						for(int l = start; start <= end; l++) {
							if( n < data.length ) {
								list.setLine(l, data[n]);
								n++;
							}
							else break;
						}
					}
				}
				else send("replace: invalid arguments", client);
			}
			else if (lcmd.equals("save") || lcmd.equals("s"))
			{
				// save the current list
				player.saveCurrentEdit();

				send("< List Written Out! >", client);
				send("< List Saved. >", client);
			}
			else if (lcmd.equals("stat") || lcmd.equals("st"))
			{
				// tell us about the current list (current line we're editing, number of lines)
				if (list != null) {
					String header = "< List: " + list.getName() + " Line: " + list.getLineNum() + " Lines: " + list.getNumLines() + " >";
					send(header, client);
				}
			}

			System.out.println(getPlayer(client).getStatus());
		}
		else // add the line you typed to the list at the current line
		{
			if (list != null) { // if we have a valid list
				list.addLine(input);
				debug(list.getNumLines() + ": " + input);
			}
		}