optionally return best fit