refactor
fix select N+1 problem