begin simplifying the range adaptors by ripping out const handling