Flatten service pyramid

The way services and aspects were composed was a bit of an intimidating pyramid. Splitting them up into a flat list of aspects and the core service object is more readable.