private void showHelp(CommandSender sender) {
        StringBuilder user = new StringBuilder();
        StringBuilder admin = new StringBuilder();
        StringBuilder mod = new StringBuilder();

        for (Command cmd : commands.values()) {
            CommandInfo info = cmd.getClass().getAnnotation(CommandInfo.class);
            if (!plugin.has(sender, info.permission())) continue;

            StringBuilder buffy;
            if (info.permission().startsWith("playerchat.admin")) {
                buffy = admin;
            } else if(info.permission().startsWith("playerchat.mod")) {
            	buffy = mod;
            } else {
                buffy = user;
            }
            buffy.append("\n")
                 .append(ChatColor.RESET).append(info.usage()).append(" ")
                 .append(ChatColor.YELLOW).append(info.desc());
        }

        if (admin.length() == 0 && mod.length() == 0) {
            Messenger.tell(sender, "Available commands: " + user.toString());
        } else {
            Messenger.tell(sender, "User commands: " + user.toString());
            if (mod.length() > 0) Messenger.tell(sender, "Moderator Commands: " + mod.toString());
            if (admin.length() > 0) Messenger.tell(sender, "Admin commands: " + admin.toString());
        }
    }