slightly better performance, but need query aggregation