I made some mistake in the upgrade of my engine (which is my bad) but then I noticed that
when one service initialization fails, the rest of the services are not initialized, but
still the engine will start even then and it did not even log.
There are some patterns in that single method on initialization, some work with
'try', some spawn a new thread. Can we have this cleaned up?
What I was thinking of is that each service should be initialized, creating a thread is
it's own business, exceptions from initialization should be caught, logged and engine
startup should be prevented if any service fails to initialize.