Virtual classes and destructors

If you use a virtual class, you must declare and define a virtual destructor for it. If you don't, the derived classes won't get their destructor called.

An empty block as destructor is good enough.