public void start() throws TooManyListenersException {
        if (isStarted()) {
            throw new TooManyListenersException();
        }
        setStarted(true);
        Thread engine = new Thread() {
            @Override
            public void run() {
                Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
                Listener.getInstance().listen();
                while (true) {
                    TaskController.getSingleton().sortTasks();
                    EventExecutor.getSingleton().executeEvents();
                    try {
                        Thread.sleep(250);
                    } catch (InterruptedException ex) {
                        Logger.getLogger(DORS.class.getName()).log(Level.SEVERE, null, ex);
                    }
                }
            }
        };
        engine.start();
    }