* @param client the client
	 */
	private void cmd_help(String arg, final Client client) {
		/*
		 * really should add a topics system and multi-page help files (need a
		 * "pager"); it'd be awesome to have some kind of virtual page up/page
		 * down functionality - maybe that would be workable if I had a real
		 * terminal emulator on the other end. if i code this feature, I could
		 * enable it if I could identify a full terminal emulation on the other
		 * end (telnet negotiation? or maybe just asking via the game for a
		 * response)
		 */

		final Player player = getPlayer(client);

		if ( arg.equals("@reload") ) {
			if (checkAccess(player, Constants.BUILD)) {
				help_reload();
				notify(player, "Game> Help Files Reloaded!\n");
			}
		}
		else {
			if ( arg.equals("") ) arg = "help";

			// config options retrieval
			final boolean pagerEnabled = player.getConfigOption("pager_enabled");
			final int lineWidth = player.getLineLimit();

			boolean isHelpFile = false;

			String[] file = null;

			file = getHelpFile(arg);

			if (file == null) file = getTopicFile(arg);
			else              isHelpFile = true;

			if( file != null ) {
				final String[] temp = Arrays.copyOfRange(file, 1, file.length);

				if( file.length > 25 && pagerEnabled) {
					player.setPager( new Pager(temp) );
					player.setStatus("VIEW");

					op_pager("view", client);
				}
				else {
					final List<String> output = new LinkedList<String>();

					output.add( colors(file[1], "green") + "\r\n" );

					output.addAll( Arrays.asList(temp).subList(2, temp.length) );

					/*for (final String line : Arrays.copyOfRange(file, 2, file.length)) {
					// client.write(check(line) + "\r\n");
					// client.write(line + "\r\n");

					output.add( line );

					// TODO figure out why showDesc ignores the line width if
					// used here, perhaps check(...) is causing the problem?
					// showDesc(check(line), lineWidth, client);
				}*/

					// tell us when the file was last modified/updated?

					send(output, client);
				}

				if( isHelpFile ) {
					final StringBuilder sb = new StringBuilder();

					for(final String key : aliases.keySet()) {
						if( aliases.get(key).equals(arg) ) sb.append(key + " ");
					}

					send("ALIASES: " + sb.toString().trim());
				}
			}
			else {
				Command c = null;

				if ( commandMap.containsKey(arg) ) c = commandMap.get(arg);
				else if ( player.hasCommand(arg) ) c = player.getCommand(arg);

				if( c != null ) send(arg + " - " + c.getDescription(), client);
				else            client.write("No such help file!\r\n");
			}
		}
	}