public static void main(String[] args) {

        try {

            Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
                @Override
                public void uncaughtException(Thread t, Throwable e) {
                    handleException(e);
                }
            });

            setupEventListeners();
            
            BackgroundTicker.getInstance();
            DownloadManager.getInstance();
            
            defaultOptions = new Options();
            ui = new UI();
            rpc = new RPC();

            Logger.getInstance().info("Arietta started");

        } catch (Throwable e) {
            handleException(e);
        }

    }