@Override
 public boolean startDrag(SVGPoint start, Event evt) {
   epsilon = getEpsilonFromY(plotheight - start.getY());
   // opvis.unsetEpsilonExcept(this);
   svgp.requestRedraw(this.task, this);
   return true;
 }
 @Override
 public boolean duringDrag(SVGPoint start, SVGPoint end, Event evt, boolean inside) {
   if (inside) {
     epsilon = getEpsilonFromY(plotheight - end.getY());
   }
   // opvis.unsetEpsilonExcept(this);
   svgp.requestRedraw(this.task, this);
   return true;
 }
    @Override
    public boolean endDrag(SVGPoint start, SVGPoint end, Event evt, boolean inside) {
      if (inside) {
        epsilon = getEpsilonFromY(plotheight - end.getY());
        // opvis.unsetEpsilonExcept(this);

        // FIXME: replace an existing optics cut result!
        final ClusterOrder order = optics.getResult();
        Clustering<Model> cl = OPTICSCut.makeOPTICSCut(order, epsilon);
        order.addChildResult(cl);
      }
      svgp.requestRedraw(this.task, this);
      return true;
    }