try to improve the performance