Added virtual destructors for polymorphic base classes
Added 'override' keyword on virtual methods