anchor.diff:    
     Ranger.TextNode _fpsText;
     Ranger.TextNode _objectDrawnText;
  +  Ranger.TextNode _messageText;
     
     Ranger.GroupNode _help;
     int _listTag;
  
positive.code: 
      _setViewportAABBox();
  
      Ranger.Size<double> size = contentSize;
      double hWdith = size.width / 2.0;
      double hHeight = size.height / 2.0;
  
      _listTag = _loadImage("resources/list.svg", 32, 32,
          hWdith - (hWdith * .7), hHeight - (hHeight * .1), false);
  
      _configOverlay();
  
      scheduleUpdate();
    }
    
    @override
    void onExit() {
      super.onExit();
      Ranger.Application app = Ranger.Application.instance;
      app.animations.stop(_listSprite, Ranger.TweenAnimation.ROTATE);
    }
  
    void toggleHelp() {
      _help.visible = !_help.visible;
    }
    
    // Should be called when zoom changes.
  
negative.code:   Ranger.OverlayLayer _loadingOverlay;
    Ranger.SpriteImage _overlaySpinner;
  
    // Center Zone = scroll ring
    double centerZoneRadius = 0.0;  // computed below
    SingleRangeZone _centerZone;
    StreamSubscription _centerZoneSubscription;
  
    Vector2 shipHudPosition = new Vector2.zero();
    Vector2 zoneEdgePosition = new Vector2.zero();
    Vector2 scrollDirection = new Vector2.zero();
  
    static const double DampingMax = 0.2;
    static const double DampingMin = 0.1;
    double damping = DampingMax;
    double dampingFalloff = 0.05;
    bool _dampingEnabled = true;
    
    HudLayer();
  
    factory HudLayer.asTransparent([bool centered = true, int width, int height]) {
  