While we're at it we can make the destructor of the base class virtual to ensure that any polymorphism issues never occur.