use dict to aggregate