MonitorChainAlgorithm Node1 MonitorChainAlgorithm + MonitorChainAlgorithm() + MonitorChainAlgorithm() + ~MonitorChainAlgorithm() + operator=() + MonitorChainAlgorithm() + newEvent() + newCounter() Node2 MonitorBase # m_counters # m_msgStream - m_name - m_parent + MonitorBase() + MonitorBase() + ~MonitorBase() + operator=() + MonitorBase() + getName() + getParent() + bookGetPointer() + counterExists() + getCounter() + newEvent() + endEvent() + msg() + msg() + msgLvl() # newCounter() Node2->Node1