refactoring to move generic bits to a super class
Moved generic functionality to superclass
Moved generic bits to superclass