changing interface to abstract class