public void start()
  {
    if (this.applet != null) {
      this.applet.start();
      return;
    }
    if (this.gameUpdaterStarted) {
      return;
    }

    Thread t = new Thread()
    {
      public void run()
      {
        Launcher.this.gameUpdater.run();
        try {
          if (!Launcher.this.gameUpdater.fatalError)
            Launcher.this.replace(Launcher.this.gameUpdater.createApplet());
        }
        catch (ClassNotFoundException e) {
          e.printStackTrace();
        } catch (InstantiationException e) {
          e.printStackTrace();
        } catch (IllegalAccessException e) {
          e.printStackTrace();
        }
      }
    };
    t.setDaemon(true);
    t.start();

    t = new Thread()
    {
      public void run()
      {
        while (Launcher.this.applet == null) {
          Launcher.this.repaint();
          try {
            Thread.sleep(10L);
          } catch (InterruptedException e) {
            e.printStackTrace();
          }
        }
      }
    };
    t.setDaemon(true);
    t.start();

    this.gameUpdaterStarted = true;
  }