little change on the abstract class