began refactoring, moving up into superclasses