cleanup: split applying initializers out of doCreate

one method should only do one thing.

also this allows to apply the initializers to non-services as well
Can return directly