try to improve perf