public void shutdown() {
   this.quit = true;
   // stop everything
   for (RequiresShutdown shutdown : shutdownObjects.keySet()) {
     shutdown.shutdown();
   }
 }
 public void removeShutdownObject(RequiresShutdown obj) {
   if (shutdownObjects.contains(obj)) {
     System.out.println("Removing shutdown " + obj.toString());
   }
   shutdownObjects.remove(obj);
 }
 public void addShutdownObject(RequiresShutdown obj) {
   System.out.println("Adding shutdown " + obj.toString());
   shutdownObjects.put(obj, true);
 }