Yes, these should be orthogonal, and I think they are now.
* `Aggregator` currently aggregates data
* the errors are computed with the member functions on the `Data` objects - we could alternatively compute errors with a separate abstraction, but then the question is also where to store error information, particularly since you can always calculate it from the information in a `Data` object