missing virtual destructor added