improve the performance