Refactoring to create an abstract class that makes it easy to support new interface method signatures