some virtual refactoring