range: allow forward iterators to be used