overhauled the RangeApplier API again