IRootSvc Node1 IRootSvc + ~IRootSvc() + open() + connect() + commitOutput() + disconnect() + connection() + getType() + readObject() + writeObject() + createObject() + destructObject() + interfaceID() * getType() * readObject() * writeObject() * createObject() * destructObject() Node3 Athena::RootSvc - m_catalog - m_conns - m_wconn - m_dictSvc + RootSvc() + initialize() + finalize() + queryInterface() + open() + connect() + commitOutput() + disconnect() + connection() + ~RootSvc() + getType() + readObject() + writeObject() + createObject() + destructObject() + interfaceID() - RootSvc() - RootSvc() - operator=() * getType() * readObject() * writeObject() * createObject() * destructObject() Node1->Node3 Node2 IInterface Node2->Node1