better match functions to find the best fits via iteration