refactored find-free