return best match