// can overwrite original object!
static Range addToRange(Range r, float val) {
  if (r == null)
    ret new Range(val);
  if (r.min > r.max)
    r.min = r.max = val;
  else {
    if (val < r.min) r.min = val;
    if (val > r.max) r.max = val;
  }
  ret r;
}