added virtual deconstructor