* @param client
	 */
	public void op_itemedit(final String input, final Client client) {
		final Player player = getPlayer(client);

		String icmd = "";
		String iarg = "";

		EditorData data = player.getEditorData();

		if (input.indexOf(" ") != -1) {
			icmd = input.substring(0, input.indexOf(" ")).toLowerCase();
			iarg = input.substring(input.indexOf(" ") + 1, input.length());
		}
		else {
			icmd = input.substring(0, input.length()).toLowerCase();
		}

		debug("IEDIT CMD");
		debug("icmd: \"" + icmd + "\"");
		debug("iarg: \"" + iarg + "\"");

		if (icmd.equals("abort")) {
			// / clear edit flag
			((Item) data.getObject("item")).Edit_Ok = true;

			// reset editor and player status
			player.setStatus((String) data.getObject("pstatus"));
			player.setEditor(Editors.NONE);

			// clear editor data
			player.setEditorData(null);

			// exit
			send("< Exiting... >", client);
		}
		else if (icmd.equals("desc")) {
			data.setObject("desc", iarg);
			send("Ok.", client);
		}
		else if (icmd.equals("done")) {
			// save changes
			op_itemedit("save", client);

			// clear edit flag
			((Item) data.getObject("item")).Edit_Ok = true;

			// reset editor and player status
			player.setStatus((String) data.getObject("pstatus"));
			player.setEditor(Editors.NONE);

			// clear editor data
			player.setEditorData(null);

			// exit
			send("< Exiting... >", client);
		}
		else if (icmd.equals("help")) {
			send("Item Editor -- Help", client);
			send(Utils.padRight("", '-', 40), client);
			send("abort", client);
			send("desc <new description>", client);
			send("done", client);
			send("help", client);
			send("name <new name>", client);
			send("save", client);
			send("show", client);
			send("type", client);
		}
		else if (icmd.equals("name")) {
			data.setObject("name", iarg);
			send("Ok.", client);
		}
		else if (icmd.equals("save")) {
			final Item item = (Item) data.getObject("item");

			item.setName((String) data.getObject("name"));
			item.setDesc((String) data.getObject("desc"));

			// TODO what am I trying to accomplish here exactly, is item type a
			// changeable thing?
			// item.setItemType((ItemType) data.getObject("type"));

			send("Item saved.", client);
		}
		else if (icmd.equals("set")) {
			// general purpose command
			// ex: set drinkable true

			String[] args = iarg.split(" ");

			if (args.length == 2) {
				if (args[0].equals("drinkable")) {
					if (args[1].equalsIgnoreCase("true"))       data.setObject("drinkable", true);
					else if (args[1].equalsIgnoreCase("false")) data.setObject("drinkable", false);
				}
			}

			send("Command not implemented.", client);
		}
		else if (icmd.equals("show")) {
			final Item item = (Item) data.getObject("item");

			// will be a little like examine, just here to show changes
			send(Utils.padRight("", '-', 80), client);
			// send("----------------------------------------------------",
			// client);
			send("DB Reference #: " + item.getDBRef(), client);
			send("Name: " + data.getObject("name"), client);
			send("Item Type: " + ((ItemType) data.getObject("type")).toString(),client);
			send("Description:", client);
			
			showDesc((String) data.getObject("desc"), 80, client);

			// TODO show different data depending on item type

			// send("----------------------------------------------------", client);
			send(Utils.padRight("", '-', 80), client);

		}
		else if (icmd.equals("type")) {
			data.setObject("type", ItemTypes.getType(iarg));

			send("Ok.", client);
		}
		else {
			// currently causes a loop effect, where the command gets funneled back into op_iedit regardless
			// cmdQueue.add(new CMD(input, client, 0));
		}
	}