more general grouping iterator
counting-specific iterator doesnt make enough of a perf difference to be worth the complexity