* @param client
	 */
	private void cmd_pconfig(final String arg, final Client client) {
		// pconf #opt
		// pconf <option>=<true/false>
		final Player player = getPlayer(client);

		if ( !arg.equals("") ) {
			if (arg.charAt(0) == '#') {
				final String[] args = arg.split(" ");
				
				final String param = args[0].substring(1);

				if ( param.equals("options") || param.equals("opt") ) {
					// TODO why treat the current player's options as the whole set?
					final List<String> output = new LinkedList<String>();
					
					for (final String key : player.getConfig().keySet()) {
						//send(key, client);
						output.add(key);
					}
					
					send(output, client);
				}
				else if ( param.equals("help") ) {
					if (args.length == 2) {
						switch (args[1]) {
						case "global-nameref-table":
							send("Use the global nameref table for storing your name references.", client);
							break;
						case "pinfo-brief":
							send("Show the short form of the output of the pinfo command by default.", client);
							break;
						case "prompt_enabled":
							break;
						case "msp_enabled":
							send("Indicate if you'd like the server to send you MSP messages.", client);
							break;
						case "complex-inventory":
							break;
						case "pager_enabled":
							break;
						case "show-weather":
							break;
						case "tagged-chat":
							send("Prefix all chat with 'CHAT' for easier client detection", client);
						case "compact-editor":
							break;
						case "hud_enabled":
							break;
						case "notify_newmail":
							send("Should the game notify you when you receive in-game OOC mail?", client);
							break;
						default:
							break;
						}
					}
					else {
						send("option not specified", client);
					}
				}
			}
			else {
				final String[] args = arg.split("=");
				
				if (args.length > 1) {
					if (!player.hasConfigOption(args[0])) {
						send("No such config option! (see 'pconf #opt')", client);
						return;
					}

					switch (args[1]) {
					case "true":
						player.setConfigOption(args[0], true);
						send("set " + args[0] + " to TRUE.", client);
						break;
					case "false":
						player.setConfigOption(args[0], false);
						send("set " + args[0] + " to FALSE.", client);
						break;
					default:
						send("Invalid config setting! (use 'true' or 'false')", client);
						break;
					}
				}
				else {
					send(args[0] + " = " + getPlayer(client).getConfigOption(args[0]), client);
				}
			}
		}
		else {
			for (final Entry<String, Boolean> e : player.getConfig().entrySet()) {
				String key = e.getKey();
				Boolean value = e.getValue();
				
				String c = (value) ? "green" : "red"; // color
				
				send(Utils.padLeft(key, ' ', 20) + ": " + colors("" + e.getValue(), c), client);
			}
		}
	}