create abstract class