private void initializeThreads() {
   int startdelay = (int) (SettingUtil.getSettingDouble("start_delay_seconds") * 20);
   int savefrequency = SettingUtil.getSettingInt("save_interval_seconds") * 20;
   if (startdelay <= 0) startdelay = 1;
   if (savefrequency <= 0) savefrequency = 300;
   // data
   getServer()
       .getScheduler()
       .scheduleAsyncRepeatingTask(
           this,
           new Runnable() {
             @Override
             public void run() {
               DataManager.saveAllData();
             }
           },
           startdelay,
           savefrequency);
   getServer()
       .getScheduler()
       .scheduleAsyncRepeatingTask(
           this,
           new AsyncIPMatcherTask(),
           50,
           TimeUnit.MINUTES.toMillis(getConfig().getInt("cache_interval_seconds", 10)));
 }