Doing virtual classes the right way