you should use ``\Traversable`` to allow ``IteratorAggregate`` implementations too