I think, the destructor should be virtual