diff --git a/Trigger/TrigValidation/TrigUpgradeTest/share/full_menu.py b/Trigger/TrigValidation/TrigUpgradeTest/share/full_menu.py
index 730a1cbbd692780d4a25c15cf5e911a3725ac8d7..7d15d47658b6430d9fca3665a117f7d57eb82c8c 100644
--- a/Trigger/TrigValidation/TrigUpgradeTest/share/full_menu.py
+++ b/Trigger/TrigValidation/TrigUpgradeTest/share/full_menu.py
@@ -88,12 +88,7 @@ if opt.doMuonSlice == True:
     stepFSmuEFCB=ChainStep("Step_FSmuEFCB", [muEFCBFSSequence()])
 
 
-    # 2muons
-    step1_2mufast= ChainStep("Step1_2muFast", [ muFastSequence(),   muFastSequence()], multiplicity=2)
-    step2_2muComb= ChainStep("Step1_2muComb", [ muCombSequence(),   muCombSequence()], multiplicity=2)
-    step3_2muEFSA= ChainStep("Step3_2muEFSA", [ muEFSASequence(),   muEFSASequence()], multiplicity=2)
-    step4_2muEFCB= ChainStep("Step4_2muEFCB", [ muEFCBSequence(),   muEFCBSequence()], multiplicity=2)
-    
+   
 
     emptyStep=ChainStep("Step2_empty")
 
@@ -104,12 +99,17 @@ if opt.doMuonSlice == True:
     MuonChains += [Chain(name='HLT_mu6msonly', Seed="L1_MU6",  ChainSteps=[ step1mufast, emptyStep,   step3muEFSA ])] # removed due to muEFSA isuue(?)
     MuonChains += [Chain(name='HLT_mu20_ivar', Seed="L1_MU6",  ChainSteps=[ step1mufast, step2muComb, step3muIso ])]
 
-    # multi muon trigger 
-    MuonChains += [Chain(name='HLT_2mu6Comb', Seed="L1_MU6", ChainSteps=[ step1mufast, step2muComb ])]
-    MuonChains += [Chain(name='HLT_2mu6',     Seed="L1_MU6", ChainSteps=[ step1mufast, step2muComb, step3muEFSA, step4muEFCB ])]        
+    # multi muon trigger
+    # 2muons
+    step1_2mufast_sym= ChainStep("Step1_2muFast_sym", [ muFastSequence()], multiplicity=2)
+    step2_2muComb_sym= ChainStep("Step1_2muComb_sym", [ muCombSequence()], multiplicity=2)
+    
+    step3_2muEFSA_sym= ChainStep("Step3_2muEFSA_sym", [ muEFSASequence()], multiplicity=2)
+    step4_2muEFCB_sym= ChainStep("Step4_2muEFCB_sym", [ muEFCBSequence()], multiplicity=2)
+ 
+    MuonChains += [Chain(name='HLT_2mu6Comb', Seed="L1_MU6", ChainSteps=[ step1_2mufast_sym, step2_2muComb_sym ])]
+    MuonChains += [Chain(name='HLT_2mu6',     Seed="L1_MU6", ChainSteps=[ step1_2mufast_sym, step2_2muComb_sym, step3_2muEFSA_sym, step4_2muEFCB_sym ])]        
 
-  ##  MuonChains += [Chain(name='HLT_2mu6Comb', Seed="L1_2MU6", ChainSteps=[ step1_2mufast, step2_2muComb ])]
-  ##  MuonChains += [Chain(name='HLT_2mu6',     Seed="L1_2MU6", ChainSteps=[ step1_2mufast, step2_2muComb, step3_2muEFSA, step4_2muEFCB ])]        
 
     #FS Muon trigger
     MuonChains += [Chain(name='HLT_mu6nol1', Seed="L1_MU6", ChainSteps=[stepFSmuEFSA, stepFSmuEFCB])] 
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig.py
index e4abbdd371d7b40a278514dc43e8715512b8342d..7a3976955780b36af9150a5036dda1241c31202b 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig.py
@@ -9,7 +9,7 @@
 
 ++ Seeds
 
-++ Combined chains
+++ Combined chain strategy
 
 - The combined chains use duplicates of the single-object-HypoAlg, called HypoAlgName_for_stepName.
   These duplicates are connected to a dedicated ComboHypoAlg (added by the framework), able to count object multiplicity
@@ -25,9 +25,6 @@
 
 """
 
-
-
-
 # Classes to configure the CF graph, via Nodes
 from AthenaCommon.CFElements import parOR, seqAND, seqOR, isSequence
 from AthenaCommon.Logging import logging
@@ -35,7 +32,7 @@ from AthenaCommon.AlgSequence import dumpSequence
 from TriggerMenuMT.HLTMenuConfig.Menu.HLTCFDot import  stepCF_DataFlow_to_dot, stepCF_ControlFlow_to_dot, all_DataFlow_to_dot
 from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponentsNaming import CFNaming
 
-import sys, copy
+import copy
 log = logging.getLogger('HLTCFConfig')
 
 
@@ -354,7 +351,6 @@ def createDataFlow(chains, allDicts):
                 
             if len(filter_input) == 0 or (len(filter_input) != 1 and not chain_step.isCombo):
                 log.error("ERROR: Filter for step %s has %d inputs! One is expected", chain_step.name, len(filter_input))
-                sys.exit("ERROR, in configuration of step "+chain_step.name)
                     
 
             # get the filter:
@@ -589,7 +585,6 @@ def findFilter(filter_name, cfseqList):
       #foundFilters = [cfseq.filter for cfseq in cfseqList if filter_name in cfseq.filter.Alg.name()]
       if len(foundFilters) > 1:
           log.error("found %d filters  with name %s", len( foundFilters ), filter_name)
-          sys.exit("ERROR, in filter configuration")
 
       found = bool(foundFilters)
       if found:          
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponents.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponents.py
index 886b368c86a4193a1b3ca7b40b51f7b79fca0115..4bb3140f85561d95990da6f80945360d0426c3ce 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponents.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponents.py
@@ -1,6 +1,6 @@
 # Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 
-import sys, re, copy
+import re, copy
 from AthenaCommon.Logging import logging
 log = logging.getLogger('MenuComponents')
 
@@ -81,7 +81,7 @@ class AlgNode(Node):
             if self.outputProp is not '':
                 self.setPar(self.outputProp,name)
             else:
-                sys.exit("no OutputProp set")
+                log.error("no OutputProp set")
         Node.addOutput(self, name)
 
 
@@ -104,7 +104,7 @@ class AlgNode(Node):
             if self.inputProp is not '':
                 self.setPar(self.inputProp,name)
             else:
-                sys.exit("no InputProp set")
+                log.error("no InputProp set")
         Node.addInput(self, name)
 
 
@@ -230,15 +230,14 @@ class ComboMaker(AlgNode):
         cval = self.Alg.getProperties()[self.prop]  # check necessary to see if chain was added already?
         if type(cval) is dict:
             if chain in cval.keys():
-                log.error("ERROR in cofiguration: ComboAlg %s has already been configured for chain %s", self.name, chain)
-                sys.exit("ERROR, in chain configuration")
+                log.error("ERROR in cofiguration: ComboAlg %s has already been configured for chain %s", self.Alg.name(), chain)
             else:
-                cval[chain]=[allMultis]
+                cval[chain]=allMultis
         else:
             cval=newdict
 
         setattr(self.Alg, self.prop, cval)
-        log.debug("Added chain %s to ComboAlg %s", self.getPar(self.prop), self.name)
+        log.debug("ComboAlg %s has now these chains chain %s", self.Alg.name(), self.getPar(self.prop))
 
 
 
@@ -325,7 +324,6 @@ class MenuSequence(object):
         hypo_output = CFNaming.hypoAlgOutName(self.hypo.Alg.name(), input_maker_output)
         if len(self.hypo.getOutputList()):
             log.error("Hypo " + self.hypo.name() +" has already an output configured: you may want to duplicate the Hypo!")
-            sys.exit("ERROR, in chain configuration")
         self.hypo.addOutput(hypo_output)
 
         # needed for drawing
@@ -363,7 +361,6 @@ def DoMapSeedToL1Decoder(seed):
     stripSeed  = filter(lambda x: x.isalpha(), seed)
     if stripSeed not in mapSeedToL1Decoder:
         log.error("Seed "+ seed + " not mapped to any Decision objects! Available are: " + str(mapSeedToL1Decoder.values()))
-        sys.exit("ERROR, in chain configuration")
     return (mapSeedToL1Decoder[stripSeed])
 
 #################################################
@@ -419,7 +416,6 @@ class Chain(object):
 
         else:
             log.error("found %d sequences in this chain and %d seeds. What to do??", tot_seq, tot_seed)
-            sys.exit("ERROR, in chain configuration")
 
     def decodeHypoToolConfs(self, allChainDicts):
         """ This is extrapolating the hypotool configuration from the (combined) chain name"""
@@ -433,7 +429,6 @@ class Chain(object):
 
             if len(chainDict['chainParts']) != len(step.sequences):              
                 log.error("Error in step %s: found %d chain parts and %d sequences", step.name, len(chainDict['chainParts']), len(step.sequences))
-                sys.exit("ERROR, in chain configuration")
 
             for seq, chainDictPart in zip(step.sequences, chainDict['chainParts']):
                 if seq.ca is not None: # The CA merging took care of everything
@@ -478,14 +473,13 @@ class CFSequence(object):
         filter_output = self.filter.getOutputList()
         if len(filter_output) == 0:
             log.error("ERROR, no filter outputs are set!")
-            sys.exit("ERROR, no filter outputs are set!")
+
         
 
         if len(self.step.sequences):
             # check whether the number of filter outputs are the same as the number of sequences in the step
             if len(filter_output) != len(self.step.sequences):
                 log.error("Found %d filter outputs and %d MenuSequences in Step %s", len(self.filter.getOutputList()), len(self.step.sequences), self.step.name)
-                sys.exit("ERROR: Found %d filter outputs differnt from %d MenuSequences in Step %s", len(self.filter.getOutputList()), len(self.step.sequences), self.step.name)
             nseq=0
             for seq in self.step.sequences:
                 filter_out = filter_output[nseq]