fixed the abstract class