refactored abstract class to interface

abstract class not needed
refactored code to use composite subinterface