use aggregation framework