made destructors virtual