@Override
    public void completeADay() {
        //call each phase completion. This cannot be run by the dispatch thread obviously
        try {
            for (DAY_PHASES phase : DAY_PHASES.values())
                completeAnArbitraryPhase(phase);
        }
        catch (InterruptedException e) {
            e.printStackTrace();
            System.err.println("interrupted");
            System.exit(-1);
        }
        day++;
    }