@Override
    public void run() {
        if (bot.hasMessage()) {
            message = bot.getMessage();
            channel = bot.getChannel();
        }

        if (this.message.startsWith("~kick")) {
        	Vote.voteYes = 0;
            Vote.voteNo  = 0;
            Vote.voters.clear();
            
            tokenize(false, 5, message);
            User[] users = Main.bot.getUsers(channel);
            String totalUsers = "";
            int userCount = 0;
            int voteRequired = 1;

            for (User user : users) {
                ++userCount;
                totalUsers = totalUsers + " " + user.toString();
            }

            voteRequired = 2;

            Main.bot.sendMessage(channel, totalUsers);
            Main.bot.sendMessage(channel, "A vote was called (!vote y, or !vote n): [" + voteRequired + "/" + userCount + "]");
            try {
                Thread.sleep(30000L);
            } catch (InterruptedException ex) {
                Logger.getLogger(Kick.class.getName()).log(Level.SEVERE, null, ex);
            }

            Main.bot.sendMessage(channel, "yes: " + Vote.voteYes + " no: " + Vote.voteNo);

            if ( (Vote.voteYes - Vote.voteNo) >= voteRequired ) {
            	Main.bot.kick(channel, parameters, "vote success.");
            } else {
            	Main.bot.sendMessage(channel, "Vote failed.");
                return;
            }
        }
    }