code: @Override
      public void terminate() throws RemoteException
      {
          furnace.stop();
          try
          {
              Thread.sleep(5000);
          }
          catch (InterruptedException e)
          {
          }
          Runtime.getRuntime().halt(1);
      }
docs: TODO: Should we also do UnicastRemoteObject.unexportObject(this, true)?