abstract class vs interface fix