added virtual class