hmm I think this should be a real exception not an assert if the iterator has less elements?