another cut at range_adaptor