start to refactor best match