asg::AsgService Node1 asg::AsgService + AsgService() + print() + declareServiceInterface() + queryInterface() * initialize() * finalize() Node2 asg::IAsgService + print() Node2->Node1 Node3 INamedInterface Node3->Node2 Node4 AsgServiceBase - AthService() - AthService() - operator=() Node4->Node1 Node5 AthCommonMsg< Service > + msg() + msg() + msgLvl() Node5->Node4 Node6 Service Node6->Node5 Node7 std::vector< std::pair < const InterfaceID & (*)(), void *(*)(asg::AsgService *)> > + elements Node7->Node1 -m_interfaces