made abstract classes