add ability to create abstract classes