refactored VF