refactored ft, passes