after fixing errors and setting up abstract class