make destructor virtual