separating abstract class and super class