For several reasons… the first ensures that all necessary services are hooked when they need to be. The second, events
were often hooked at the wrong time (after they would be fired). The last, by ensuring a standard pattern, all services are ready can also
be consumed by the delegate at the right time. Delegates also apply a nice clean piece of code to unit test.