This sounds really weird. Shouldn't it be an abstract factory instead? (Yes, I don't like the service name being passed to `createService`