perhaps add Aggregator pattern