added a virtual destructor