Implementing Aggregate Factory

As an alternative to #29

What do you think?

No BC changes, as far as I'm aware, but still get that flexibility.