public static void main(String[] args) throws Exception {
        //update logger with local config if present
        LogHelper.updateLogger();

        initAmazon();

        //load config
        String hosterFileName = "hoster.json";
        if (args.length > 0 && args[0] != null && args[0].length() > 0)
            hosterFileName = args[0];
        HosterConfig hoster = ConfigStorage.loadObject(hosterFileName, HosterConfig.class, true);

        //update or add sites to sdb
        saveSites(hoster.getSitesFileName());

        //finish if no workers are configured
        List<Map> workers = hoster.getWorkers();
        if (workers.size() == 0) {
            System.out.println("No workers configured to be started, exiting");
            System.exit(0);
        }

        //start workers
        service = new WorkerService();
        for (Map worker : workers)
            startWorker(worker);

        //loop for log heartbeat and wait
        while (!service.getExecutor().isTerminated()) {
            try {
                Thread.sleep(hoster.getHosterSleepInterval());
                logHeartBeat();
            } catch (InterruptedException e) {
                Thread.currentThread().interrupt();
            }
        }
    }