Index: trunk/MagicSoft/Mars/mbase/MEvtLoop.cc
===================================================================
--- trunk/MagicSoft/Mars/mbase/MEvtLoop.cc	(revision 1895)
+++ trunk/MagicSoft/Mars/mbase/MEvtLoop.cc	(revision 1902)
@@ -701,6 +701,4 @@
         *fLog << warn << "WARNING - Second argument in MEvtLoop::ReadEnv has no meaning... ignored." << endl;
 
-    *fLog << "1: " << "'" << prefix << "'" << (int)print << endl;
-
     prefix = fName;
     prefix += ".";
Index: trunk/MagicSoft/Mars/mbase/MParContainer.cc
===================================================================
--- trunk/MagicSoft/Mars/mbase/MParContainer.cc	(revision 1895)
+++ trunk/MagicSoft/Mars/mbase/MParContainer.cc	(revision 1902)
@@ -520,5 +520,5 @@
         postfix.Insert(0, ".");
 
-    return IsEnvDefined(env, prefix+fName+postfix, print);
+    return IsEnvDefined(env, prefix+postfix, print);
 }
 
@@ -543,14 +543,29 @@
 Int_t MParContainer::GetEnvValue(const TEnv &env, TString prefix, TString postfix, Int_t dflt) const
 {
-    return ((TEnv&)env).GetValue(prefix+fName+"."+postfix, dflt);
+    return GetEnvValue(env, prefix+"."+postfix, dflt);
 }
 
 Double_t MParContainer::GetEnvValue(const TEnv &env, TString prefix, TString postfix, Double_t dflt) const
 {
-    return ((TEnv&)env).GetValue(prefix+fName+"."+postfix, dflt);
+    return GetEnvValue(env, prefix+"."+postfix, dflt);
 }
 
 const char *MParContainer::GetEnvValue(const TEnv &env, TString prefix, TString postfix, const char *dflt) const
 {
-    return ((TEnv&)env).GetValue(prefix+fName+"."+postfix, dflt);
-}
+    return GetEnvValue(env, prefix+"."+postfix, dflt);
+}
+
+Int_t MParContainer::GetEnvValue(const TEnv &env, TString prefix, Int_t dflt) const
+{
+    return ((TEnv&)env).GetValue(prefix, dflt);
+}
+
+Double_t MParContainer::GetEnvValue(const TEnv &env, TString prefix, Double_t dflt) const
+{
+    return ((TEnv&)env).GetValue(prefix, dflt);
+}
+
+const char *MParContainer::GetEnvValue(const TEnv &env, TString prefix, const char *dflt) const
+{
+    return ((TEnv&)env).GetValue(prefix, dflt);
+}
Index: trunk/MagicSoft/Mars/mbase/MParContainer.h
===================================================================
--- trunk/MagicSoft/Mars/mbase/MParContainer.h	(revision 1895)
+++ trunk/MagicSoft/Mars/mbase/MParContainer.h	(revision 1902)
@@ -113,4 +113,8 @@
     const char *GetEnvValue(const TEnv &env, TString prefix, TString postfix, const char *dflt) const;
 
+    Int_t       GetEnvValue(const TEnv &env, TString prefix, Int_t dflt) const;
+    Double_t    GetEnvValue(const TEnv &env, TString prefix, Double_t dflt) const;
+    const char *GetEnvValue(const TEnv &env, TString prefix, const char *dflt) const;
+
     ClassDef(MParContainer, 0)  //The basis for all parameter containers
 };
Index: trunk/MagicSoft/Mars/mbase/MParList.cc
===================================================================
--- trunk/MagicSoft/Mars/mbase/MParList.cc	(revision 1895)
+++ trunk/MagicSoft/Mars/mbase/MParList.cc	(revision 1902)
@@ -792,15 +792,55 @@
 Bool_t MParList::ReadEnv(const TEnv &env, TString prefix, Bool_t print)
 {
+    if (print)
+        *fLog << all << "MParList::ReadEnv: " << prefix << " (" << (int)print << ")" << endl;
+
     MParContainer *cont = NULL;
 
     TIter Next(fContainer);
     while ((cont=(MParContainer*)Next()))
-        if (cont->ReadEnv(env, print)==kERROR)
+    {
+        if (cont->InheritsFrom("MTaskList"))
+        {
+            if (cont->ReadEnv(env, prefix, print)==kERROR)
+                return kERROR;
+            continue;
+        }
+
+        // Check For: Job4.ContainerName.Varname
+        if (print)
+            *fLog << all << "Testing: " << prefix+cont->GetName() << endl;
+        Bool_t rc = cont->ReadEnv(env, prefix+cont->GetName(), print);
+        if (rc==kERROR)
             return kERROR;
-
-    Next.Reset();
-    while ((cont=(MParContainer*)Next()))
-        if (cont->ReadEnv(env, prefix, print)==kERROR)
+        if (rc==kTRUE)
+            continue;
+
+        // Check For: Job4.MClassName.Varname
+        if (print)
+            *fLog << all << "Testing: " << prefix+cont->ClassName() << endl;
+        rc = cont->ReadEnv(env, prefix+cont->ClassName(), print);
+        if (rc==kERROR)
             return kERROR;
+        if (rc==kTRUE)
+            continue;
+
+        // Check For: ContainerName.Varname
+        if (print)
+            *fLog << all << "Testing: " << cont->GetName() << endl;
+        rc = cont->ReadEnv(env, cont->GetName(), print);
+        if (rc==kERROR)
+            return kERROR;
+        if (rc==kTRUE)
+            continue;
+
+        // Check For: MClassName.Varname
+        if (print)
+            *fLog << all << "Testing: " << cont->ClassName() << endl;
+        rc = cont->ReadEnv(env, cont->ClassName(), print);
+        if (rc==kERROR)
+            return kERROR;
+        if (rc==kTRUE)
+            continue;
+    }
 
     return kTRUE;
Index: trunk/MagicSoft/Mars/mbase/MTaskList.cc
===================================================================
--- trunk/MagicSoft/Mars/mbase/MTaskList.cc	(revision 1895)
+++ trunk/MagicSoft/Mars/mbase/MTaskList.cc	(revision 1902)
@@ -667,15 +667,55 @@
 Bool_t MTaskList::ReadEnv(const TEnv &env, TString prefix, Bool_t print)
 {
+    if (print)
+        *fLog << all << "MTaskList::ReadEnv: " << prefix << " (" << (int)print << ")" << endl;
+
     MParContainer *cont = NULL;
 
     TIter Next(fTasks);
     while ((cont=(MParContainer*)Next()))
-        if (cont->ReadEnv(env, print)==kERROR)
+    {
+        if (cont->InheritsFrom("MTaskList"))
+        {
+            if (cont->ReadEnv(env, prefix, print)==kERROR)
+                return kERROR;
+            continue;
+        }
+
+        // Check For: Job4.ContainerName.Varname
+        if (print)
+            *fLog << all << "Testing: " << prefix+cont->GetName() << endl;
+        Bool_t rc = cont->ReadEnv(env, prefix+cont->GetName(), print);
+        if (rc==kERROR)
             return kERROR;
-
-    Next.Reset();
-    while ((cont=(MParContainer*)Next()))
-        if (cont->ReadEnv(env, prefix, print)==kERROR)
+        if (rc==kTRUE)
+            continue;
+
+        // Check For: Job4.MClassName.Varname
+        if (print)
+            *fLog << all << "Testing: " << prefix+cont->ClassName() << endl;
+        rc = cont->ReadEnv(env, prefix+cont->ClassName(), print);
+        if (rc==kERROR)
             return kERROR;
+        if (rc==kTRUE)
+            continue;
+
+        // Check For: ContainerName.Varname
+        if (print)
+            *fLog << all << "Testing: " << cont->GetName() << endl;
+        rc = cont->ReadEnv(env, cont->GetName(), print);
+        if (rc==kERROR)
+            return kERROR;
+        if (rc==kTRUE)
+            continue;
+
+        // Check For: MClassName.Varname
+        if (print)
+            *fLog << all << "Testing: " << cont->ClassName() << endl;
+        rc = cont->ReadEnv(env, cont->ClassName(), print);
+        if (rc==kERROR)
+            return kERROR;
+        if (rc==kTRUE)
+            continue;
+    }
 
     return kTRUE;
