Finishing iterator pattern + composite pattern.