for ( node = m_modules.GetFirst(); node; node = node->GetNext() )
     {
         if ( !node->GetData()->Init() )
         {
             // clean up already initialized modules - process in reverse order
     for ( node = m_modules.GetFirst(); node; node = node->GetNext() )
     {
         if ( !node->GetData()->Init() )
         {
             // clean up already initialized modules - process in reverse order