public void run() {
    // Create and add sprites to the
    // sprite manager
    spriteManager = new SpriteManager(new BackgroundImage(this, backGroundImage));
    // Create 15 sprites from 6 gif
    // files.
    for (int cnt = 0; cnt < 15; cnt++) {
      Point position =
          spriteManager.getEmptyPosition(
              new Dimension(gifImages[0].getWidth(this), gifImages[0].getHeight(this)));
      spriteManager.addSprite(makeSprite(position, cnt % 6));
    } // end for loop

    // Loop, sleep, and update sprite
    // positions once each 83
    // milliseconds
    long time = System.currentTimeMillis();
    while (true) { // infinite loop
      spriteManager.update();
      repaint();
      try {
        time += animationDelay;
        Thread.sleep(Math.max(0, time - System.currentTimeMillis()));
      } catch (InterruptedException e) {
        System.out.println(e);
      } // end catch
    } // end while loop
  } // end run method