virtual added to destructor of first_gen