thanks, yeah, i see our design.  I will remove the FIXME line.

A potential problem i want to raise is the declaration order of the member fields of class ApplicationSystem affects runtime behavior. As for object life cycle of our current codebase, 
finish_observer_ = Application object = ApplicationService < ApplicationEventManager. while if we change  declaration order of ApplicationService & ApplicationEventManager, things would be changed. 

A option to solve the issue is we make the ApplicationEventManager as a singleton. We will check it's validness whenever we need to access its function.  wdyt?