further improve performance