recommend function
noisy but good... need a way to show the result