Is this lazy or eager? It's a bit unclear. I'd rather have a subclass of Iterator that deals with the partitions separately.