MonitorChain Node1 MonitorChain + MonitorChain() + MonitorChain() + ~MonitorChain() + operator=() + MonitorChain() + newEvent() + newCounter() + 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