I agree, not particularly pretty.
mergeLocalAggs is a external/non-activity member (at the moment at least), shared by a few different activities.. so _if_ createHashDistributor/createPullHashDistributor were activity members, it (mergeLocalAggs) would have to call something like activity.queryCreateHashDistributor - to have the activity in general manage/retain the 'distributor'