anchor.diff:      this.context.clearRect(0,0,canvas.width, canvas.height);
     }
   
  -  void addLine(String name, Line line) {
  -    if (line.points == null || line.validPoints.isEmpty) return;
  -    lines[name] = line;
  -  }
  -  
     void plot() {
       if(axes.values.map((Axis a)=>a.sizeFluid).contains(true) && !this.mouseDrag)
         rectangle = _zoom(lines.values.map((Line l)=>l.rectangle).reduce((value, element)=>value.boundingBox(element)), 1.1);
  
positive.code:     this.canvas.onMouseOut.listen((_)=>this.mouseDrag = false);
      this.canvas.onMouseMove.listen((var e) {
        if (this.mouseDrag) {
          if(this._beingRendered) return;
          this._beingRendered = true;
          var offset = toRectangle(e.offset) - toRectangle(this.oldOffset);
          this.rectangle = _shift(this.rectangle, offset);
          this.oldOffset = e.offset;
          clear();
          plot();
          this._beingRendered=false;
        }
      });
    }
  
negative.code: 
    bool mouseDrag = false;
    Point oldOffset;
    bool _rendering = false;
    bool get rendering=>_rendering;
    void set rendering(bool r) {
      print("setting rendering to $r");
      _rendering=r;
    }
    
    Map<String, Line> lines = new Map<String, Line>();
    Map<String, Line> smoothLines = new Map<String, Line>();
  