refactored vf