Ringer::IRingerProcedureWrapper< PreProcessing::IPreProcessor > Node1 Ringer::IRingerProcedure Wrapper< PreProcessing ::IPreProcessor > + wrapName + applyPreProcessing() + setRawConfCol() + getRawConfCol() + getSegType() + applyPreProcessing() + name() + ~IRingerProcedureWrapper() + writeCol() + read() # IRingerProcedureWrapper() Node2 IRedirectMsgStream Node2->Node1 Node3 Ringer::IRingerProcedure WrapperBase + empty() + write() + name() + etaDep() + etDep() + releaseMemory() + fullName() + print() + ~IRingerProcedureWrapperBase() Node3->Node1