virtual inheriance