change to virtual inherit