refactor bound aggregators to allow re-use