anchor.diff:     * Gets the context(State) in which the Sprite was created.
      */
     State get context => _context;
  -
  -  void rotate(num rads) {
  -    rotation += rads;
  -    upDirection = upDirection.rotate(rads);
  -    downDirection = downDirection.rotate(rads);
  -    leftDirection = leftDirection.rotate(rads);
  -    rightDirection = rightDirection.rotate(rads);
  -  }
  -
  -  /*void set rotate(num angle) {
  -    mainDirection.rotate(angle * (math.PI / 180));
  -  }*/
  -
  +  
  +  /**
  +   * Set the horizontal and vertical speed with the same value.
  +   */
  +  void set speed(num speed){
  +    speedX = speed;
  +    speedY = speed;
  +  }
  +
  +  /**
  +   * Rotate the sprite in radians.
  +   */
  +  void rotateRadians(num radians) {
  +    rotation += radians;
  +    mainDirection = mainDirection.rotate(radians);
  +    upDirection = upDirection.rotate(radians);
  +    downDirection = downDirection.rotate(radians);
  +    leftDirection = leftDirection.rotate(radians);
  +    rightDirection = rightDirection.rotate(radians);
  +  }
  +
  +  /**
  +   * Rotate the sprite in angles.
  +   */
  +  void rotateAngles(num angles) {
  +    rotateRadians(angles * (math.PI / 180));
  +  }
  +
  +  /**
  +   * Moving the sprite in a direction.
  +   * 
  +   * Direction can be: up/forward, down/backward, left, right
  +   */
     move(String direction) {
  +    //mainDirection = zeroVector;
  +    StageXL.Vector newDirection = mainDirection;
       switch (direction) {
         case 'up':
         case 'forward':
  -        mainDirection += upDirection;
  +        newDirection += upDirection;
           break;
         case 'down':
         case 'backward':
  -        mainDirection += downDirection;
  +        newDirection += downDirection;
           break;
         case 'left':
  -        mainDirection += leftDirection;
  +        newDirection += leftDirection;
           break;
         case 'right':
  -        mainDirection += rightDirection;
  -        break;
  -    }
  -  }
  -
  +        newDirection += rightDirection;
  +        break;
  +    }
  +    if (newDirection.length > 1) {
  +      mainDirection = newDirection.scaleLength(1);
  +    } else {
  +      mainDirection = newDirection;
  +    }
  +  }
  +
  +  /**
  +   * Stops the movement of the sprite.
  +   */
     stop() {
  -    if (!mainDirection.isZero) mainDirection = new StageXL.Vector.zero();
  +    if (!mainDirection.isZero) mainDirection = zeroVector;
     }
   
   }
  
positive.code:  *          //make some more complex movement
   *        }
   *      }
   * You can find more examples about Sprite class in the Space Invader example.
   * */
  
  class Sprite extends InteractiveBitmap implements StageXL.Animatable {
  
negative.code:           isMovable: isMovable);
  
    /**
     * Defines where the sprite will move next.
     */
    bool advanceTime(num time) {
      if ((x <= 0 || x >= _context.game.world.width) ||
  