public void move(long delta)
  {
    // since the move tells us how much time has passed
    // by we can use it to drive the animation, however
    // its the not the prettiest solution
    lastFrameChange += delta;

    // if we need to change the frame, update the frame number
    // and flip over the sprite in use
    if(lastFrameChange > frameDuration)
    {
      // reset our frame change time counter
      lastFrameChange = 0;

      // update the frame
      frameNumber++;
      if(frameNumber >= frames.length)
      {
        frameNumber = 0;
      }

      sprite = frames[frameNumber];
    }

    // if we have reached the left hand side of the screen and
    // are moving left then request a logic update
    if((dx < 0) && (x < LEFT_BORDER))
    {
      game.updateLogic();
    }
    // and vice vesa, if we have reached the right hand side of
    // the screen and are moving right, request a logic update
    if((dx > 0) && (x > RIGHT_BORDER))
    {
      game.updateLogic();
    }

    // proceed with normal move
    super.move(delta);
  }