improve the algorithm