further improve the performance