added an iterator superclass