MonitorROS Node1 MonitorROS + MonitorROS() + MonitorROS() + ~MonitorROS() + operator=() + MonitorROS() + 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