public ScheduleServer() {

        //create the channel holding the commands
        channel = new LinkedBlockingQueue<>();

        //create the thread unsafe lists
        actions = Multimaps.newListMultimap(new EnumMap<>(DAY_PHASES.class),
                LinkedList::new
        );

        //create map of effects
        pendingEffects = Multimaps.newListMultimap(new HashMap<>(),
                LinkedList::new
        );


        //now create and start the dispatch thread
        //create a simple thread
        dispatch = new Thread(() -> {
            //very simple runnable: keep grabbing commands from the channel and execute them
            try {
                while(active)
                {
                    channel.take().run();
                }
            } catch (InterruptedException e) {/*end of the game*/}
        });
        dispatch.setDaemon(true); //doesn't stop the program from quitting
        dispatch.start();

        //create the workhorse
        threadPool = new ForkJoinPool();

    }