public void scheduler()
	{
		this.getServer().getScheduler().scheduleSyncRepeatingTask(this, new Runnable() 
		{

			@Override
			public void run() 
			{
			    List<String> promotedPlayers = new ArrayList<String>();		
				synchronized (timepromote) 
				{
					for(String playername : timepromote.keySet())
					{
						if(sUtil.playerisonline(playername) || config.getBoolean("Time.CountOffline"))
						{
							Long timeleft = timepromote.get(playername);
							timeleft = timeleft -1;
							if(timeleft <=0)
							{
								String msg = messages.getString("PromotedAfterTime").replace("<group>", config.getString("Time.Group"));
								Bukkit.getPlayer(playername).sendMessage(msg.replace("&", "\247"));
								getPermissionsHandler().promote(Bukkit.getPlayer(playername), config.getString("Time.Group"), PROMOTIONTYPE.TIME);
								promotedPlayers.add(playername);
							}
							else
							{
								promotedPlayers.add(playername);
								timepromote.put(playername, timeleft);
							}
						}
					}
					for(String playername : promotedPlayers)
					{
						timepromote.remove(playername);
					}
				}
				if(System.currentTimeMillis() >= nextsave)
				{
					nextsave = System.currentTimeMillis() + 900000;
					for(MPPlugin pl : plugins)
					{
						try
						{
							pl.save();
						}catch(Exception e)
						{
							continue;
						}
					}
				}
			}

		}, 0L, 20L);
	}