add CountedIterator and CountedIterable