generator and iterable