made range/rangeBy distinction