public void Stop(){
        ComFire(new ComEvent(this, ComEvent.eType.Information, IModule.eModState.Terminating));

        for (IModule module : modules.values()) {
            System.out.println("Terminating: " + module.ModuleName());
            module.Terminate();
        }

        boolean allModsTerminated = false;
        while(!allModsTerminated){
            try {Thread.sleep(100);} catch (InterruptedException ex) {}
            
            allModsTerminated = true;
            for (IModule module : modules.values()) { allModsTerminated &= module.ModState() == IModule.eModState.Terminated; }
        }

        
        ComFire(new ComEvent(this, ComEvent.eType.Information, IModule.eModState.Terminated));
    }