vectorfield refactored