refactor virtual