more work on range_adaptor