Whenever this call is made, the iterator benefits are lost, no? i.e. The entire contents of the iterator is loaded.
Should we allow a "limit" argument?