@Override
	public boolean onCommand(CommandSender sender, Command command, String label,
			String[] args) {
		String lbl = label.toLowerCase();
		
		// label must be help
		if(lbl.equalsIgnoreCase("help")) {
			String nested;
			
			// get first argument (could be one of the commands)
			try {
				nested = args[0];
			} catch(Exception e) {
				// there are no arguments, so
				// executed the main command
				help(sender, args);
				return true;
			}
			
			// remove first argument (which is a command label)
			String[] newArgs;
			try {
				newArgs = Arrays.copyOfRange(args, 1, args.length);
			} catch(Exception e) {
				newArgs = new String[0];
			}
			
			
			// 
			// Find and execute nested command. 
			// Use the newArgs, so that it doesn't include
			// the label of the nested command. 
			// 
			if(nested.equalsIgnoreCase("-list")) {
				list(sender, newArgs);
			}
			else if(nested.equalsIgnoreCase("-reload")) {
				reload(sender, newArgs);
			}
			else if(nested.equals("?")) {
				commandHelp(sender, newArgs);
			}
			else {
				// didn't execute a nested command
				
				// So don't use newArgs here.
				// The first argument is probably a page name!
				help(sender, args);
			}
			return true;
			
		}
		else {
			// we don't know this command label
			return false;
		}
	}