just moving the two methods that subclasses need to implement to the top of the class