anchor.diff:  
       _checkDestination();
   
  -    speedX += _accelerationDirection * accelerationX * time;
  -    speedY += _accelerationDirection * accelerationY * time;
  -
  -    x = x +
  -        (directionSystem.mainDirection.x * speedX +
  -            _context.game.physics.gravityDirectionSystem.mainDirection.x *
  -                _context.game.physics.garvitySpeed) *
  -            time;
  -    y = y +
  -        (directionSystem.mainDirection.y * speedY +
  -            _context.game.physics.gravityDirectionSystem.mainDirection.y *
  -                _context.game.physics.garvitySpeed) *
  -            time;
  +    _speedVector += _accelerationVector.scale(_accelerationDirection * time);
  +
  +    _addDistance(
  +        ((directionSystem.mainDirection * _speedVector) +
  +            _context.game.physics.gravityDirectionSystem.mainDirection.scale(
  +                _context.game.physics.garvitySpeed)).scale(time));
   
       return true;
   
  +  }
  +
  +  void _addDistance(StageXL.Vector distanceVector) {
  +    x += distanceVector.x;
  +    y += distanceVector.y;
     }
   
     /**
  
positive.code:   }
  
    bool _speedOverEqualMaxSpeed() {
      return (speedX >= maxSpeed || speedY >= maxSpeed);
    }
  
    bool _speedUnderEqualMinSpeed() {
      return (speedX <= minSpeed || speedY <= minSpeed);
    }
  
    void _checkSpeedLimits() {
  
negative.code:    * Set the horizontal and vertical speed with the same value.
     */
    void set speed(num speed) {
      _speedVector = new StageXL.Vector(speed, speed);
    }
  
    /**
     * Set the horizontal and vertical acceleration with the same value.
     */
    void set acceleration(num acceleration) {
      _accelerationVector = new StageXL.Vector(acceleration, acceleration);
    }
  
    /**
  