make destructor of Domain virtual

The destructor of a virtual base class should almost always be virtual.

see http://www.amazon.com/dp/0201924889 or
http://stackoverflow.com/questions/461203/when-to-use-virtual-destructors