how to create abstract classes