diff --git a/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerConfig.py b/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerConfig.py
index 35e1889d2ed0989dd06a1b18e0ff46d548b1455d..16edb349cb7f3b4a8947114885f8e44c59bdfa08 100644
--- a/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerConfig.py
+++ b/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerConfig.py
@@ -31,6 +31,8 @@ def collectHypos( steps ):
                 if 'HypoInputDecisions'  in alg.getProperties():
                     __log.info( "found hypo " + alg.name() + " in " +stepSeq.name() )
                     hypos[stepSeq.name()].append( alg )
+                else:
+                    __log.info("DID NOT FIND HYPO" + alg.name())
     return hypos
 
 def __decisionsFromHypo( hypo ):
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/ElectronDef.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/ElectronDef.py
index abaa584fd3f61cf9dace5a40a4013edd02ffcbef..119e757f71fe5d17859610240ee3e52ce0df47af 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/ElectronDef.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/ElectronDef.py
@@ -5,98 +5,70 @@ logging.getLogger().info("Importing %s",__name__)
 log = logging.getLogger("TriggerMenuMT.HLTMenuConfig.Egamma.ElectronDef")
 
 
-
+from TriggerMenuMT.HLTMenuConfig.Menu.ChainConfigurationBase import ChainConfigurationBase
 from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import Chain, ChainStep, RecoFragmentsPool
 from TriggerMenuMT.HLTMenuConfig.Menu.TriggerConfigHLT import TriggerConfigHLT
 
+from TrigUpgradeTest.electronMenuDefs import fastCaloSequence, electronSequence        
+
+#----------------------------------------------------------------
+# fragments generating configuration will be functions in New JO, 
+# so let's make them functions already now
+#----------------------------------------------------------------
 
-# fragments generating configuration will be functions in New JO, so let's make them functions already now
 def fastCaloSequenceCfg( flags ):
-    from TrigUpgradeTest.electronMenuDefs import fastCaloSequence
     return fastCaloSequence()
     
 def electronSequenceCfg( flags ):
-    from TrigUpgradeTest.electronMenuDefs import electronSequence        
     return electronSequence()
 
-def generateChain(flags, chainDict ): # in New JO  we will add flags here
-    chainDict = type("chainDict", (object,), chainDict)
-    # translation from  chainDict["chainName"] to chainDict.chainName (less typing),
-    # it is not exact as the things like the multiplicity are not converted to int, however they should be made int in the first place
-    #
-
 
-    # this is the cache, we hope we will be able to get rid of it in future
-    fastCalo = RecoFragmentsPool.retrieve( fastCaloSequenceCfg, None ) # the None will be used for flags in future
-    electronReco = RecoFragmentsPool.retrieve( electronSequenceCfg, None )
-    
-    return Chain(name = chainDict.chainName,
-                 Seed = chainDict.L1item, 
-                 ChainSteps = [
-                     ChainStep('ElectronStep1', [fastCalo]),
-                     ChainStep('ElectronStep2', [electronReco])
-                 ])
-    
-    
-
-
-class Chain_electron:
+#----------------------------------------------------------------
+# Class to configure chain
+#----------------------------------------------------------------
+class ElectronChainConfiguration(ChainConfigurationBase):
 
     def __init__(self, chainDict):
-
-        self.chainSteps = []
-
-        self.chainPart = chainDict['chainParts']
-        self.chainName = chainDict['chainName']
-        self.chainL1Item = chainDict['L1item']        
-        self.chainPartL1Item = self.chainPart['L1item']
-        self.mult = int(self.chainPart['multiplicity'])
-        self.chainPartName = self.chainPart['chainPartName']
-        self.chainPartNameNoMult = self.chainPartName[1:] if self.mult > 1 else self.chainPartName
-        self.chainPartNameNoMult += "_"+self.chainL1Item
-
-
+        ChainConfigurationBase.__init__(self,chainDict)
+        
+    # ----------------------
+    # Assemble the chain depending on information from chainName
+    # ----------------------
     def assembleChain(self):                            
         myStepNames = []
         chainSteps = []
-        if 'etcut' in self.chainName:
+        log.debug("Assembling chain for " + self.chainName)
+        # --------------------
+        # define here the names of the steps and obtain the chainStep configuration 
+        # --------------------
+        if 'etcut' in self.chainName:            
             myStepNames += ["Step1_etcut"]
-            myStepNames += ["Step2_etcut"]
-            
+            myStepNames += ["Step2_etcut"]            
             for step in myStepNames: 
-                chainSteps += [self.getStep(step)]
-
-
-        self.chainSteps = chainSteps
-        myChain = Chain(name = self.chainName, 
-                        Seed = self.chainL1Item, 
-                        ChainSteps = self.chainSteps)
+                chainSteps += [self.getEtCutStep(step)]
+            log.debug("chainSteps are: ", chainSteps )
+        else:
+            raise RuntimeError("Chain configuration unknown for chain: " + self.chainName )
+            
+        myChain = self.buildChain(chainSteps)
         return myChain
-
-
-    def getFastCaloStep(self, stepName):
-        fastCaloStep= fastCaloSequence()
-        step1=ChainStep(stepName, [fastCaloStep])
-        return step1
-
-    def getElectronStep(self, stepName):
-        electronStep= electronSequence()
-        step2=ChainStep(stepName, [electronStep])
-        return step2
         
-    def getStep(self, name):
-        myTriggerConfigHLT = TriggerConfigHLT.currentTriggerConfig()        
-        if name in myTriggerConfigHLT.allChainSteps:
-            return myTriggerConfigHLT.allChainSteps[name]            
-        log.debug("ChainStep has not been configured so far, add to the list!")
-        if name == "Step1_etcut":
-            chainStep = self.getFastCaloStep(name)
-        elif name == "Step2_etcut":
-            chainStep = self.getElectronStep(name)
-        else:
-            raise RuntimeError("chainStepName unknown: " + name )
+    # --------------------
+    # Configuration of etcut chain
+    # --------------------
+    def getEtCutStep(self, stepName):
+        if stepName == "Step1_etcut":
+            log.debug("Configuring step " + stepName)
+            fastCalo = RecoFragmentsPool.retrieve( fastCaloSequenceCfg, None ) # the None will be used for flags in future
+            chainStep =ChainStep(stepName, [fastCalo])
+        elif stepName == "Step2_etcut":
+            log.debug("Configuring step " + stepName)
+            electronReco = RecoFragmentsPool.retrieve( electronSequenceCfg, None )
+            chainStep=ChainStep(stepName, [electronReco])
+        else:            
+            raise RuntimeError("chainStepName unknown: " + stepName )
                         
-        myTriggerConfigHLT.allChainSteps[name]= chainStep    
+        log.debug("Returning chainStep from getEtCutStep function: " + stepName)
         return chainStep
             
             
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/generateElectronChainDefs.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/generateElectronChainDefs.py
index e58b5f4b36a900036e31acb04ea260f1c705e27a..6634c719aa25899b3665fdad2d9e828cf573ae4b 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/generateElectronChainDefs.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/generateElectronChainDefs.py
@@ -1,9 +1,8 @@
-# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 
-from TriggerMenuMT.HLTMenuConfig.Egamma.ElectronDef import generateChain as generateElectronChain
 from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import Chain
 from TriggerMenuMT.HLTMenuConfig.Menu.ChainDictTools import splitChainDict
-#from TriggerMenuMT.HLTMenuConfig.Egamma.ElectronDef import Chain_electron as Chain_electron
+from TriggerMenuMT.HLTMenuConfig.Egamma.ElectronDef import ElectronChainConfiguration as ElectronChainConfiguration
 
 
 from AthenaCommon.Logging import logging
@@ -21,11 +20,8 @@ def generateChainConfigs( chainDict ):
     listOfChainDefs = []
 
     for subChainDict in listOfChainDicts:
-        log.debug("IN ELECTRON GENERATION CODE")
         
-        Electron = generateElectronChain( None, subChainDict )
-        #Electron = Chain_electron(subChainDict).assembleChain() 
-
+        Electron = ElectronChainConfiguration(subChainDict).assembleChain() 
 
         listOfChainDefs += [Electron]
         log.debug('length of chaindefs %s', len(listOfChainDefs) )
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/ChainConfigurationBase.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/ChainConfigurationBase.py
new file mode 100644
index 0000000000000000000000000000000000000000..6b70ec409f90502dff480b94cac1d9016218ff2e
--- /dev/null
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/ChainConfigurationBase.py
@@ -0,0 +1,42 @@
+# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+
+
+from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import Chain, ChainStep, RecoFragmentsPool
+
+#----------------------------------------------------------------
+# Base class to configure chain
+#----------------------------------------------------------------
+class ChainConfigurationBase:
+
+    def __init__(self, chainDict):
+        
+        # Consider using translation from  dict["chainName"] to dict.chainName (less typing),
+        # though need to be able to access list of dictionaries as value of chainPart as well 
+        # dict = type("dict", (object,), dict)
+
+        self.dict = {}
+        self.dict.update(chainDict)
+
+        self.chainName = self.dict['chainName']
+        self.chainL1Item = self.dict['L1item']        
+
+        self.chainPart = self.dict['chainParts']
+        self.chainPartL1Item = self.chainPart['L1item']
+        self.mult = int(self.chainPart['multiplicity'])
+        self.chainPartName = self.chainPart['chainPartName']
+        self.chainPartNameNoMult = self.chainPartName[1:] if self.mult > 1 else self.chainPartName
+        self.chainPartNameNoMult += "_"+self.chainL1Item
+
+
+    # this is the cache, hoping to be able to get rid of it in future
+    def checkRecoFragmentPool(mySequenceCfg):
+        mySequence = RecoFragmentsPool.retrieve(mySequenceCfg, None) # the None will be used for flags in future
+        return mySequence
+
+    def buildChain(self, chainSteps):                            
+        myChain = Chain(name = self.chainName, 
+                        Seed = self.chainL1Item, 
+                        ChainSteps = chainSteps)
+        return myChain
+
+        
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/GenerateMenuMT.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/GenerateMenuMT.py
index 1205f0a54f9fcacd00c6b289a51f27db0a75252d..e0acb90930cac7017fffaded7ed530a7a92e887b 100755
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/GenerateMenuMT.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/GenerateMenuMT.py
@@ -51,13 +51,13 @@ class GenerateMenuMT:
 
     def setTriggerConfigHLT(self):
         # setting the hlt menu configuration
-        #(HLTPrescales) = self.setupMenu()
+        (HLTPrescales) = self.setupMenu()
         self.triggerConfigHLT = TriggerConfigHLT(TriggerFlags.outputHLTconfigFile())
         self.triggerConfigHLT.menuName = TriggerFlags.triggerMenuSetup()
         log.debug("Working with menu: %s", self.triggerConfigHLT.menuName)
 
         
-    def getChainConfig(self, chainDicts):
+    def generateChainConfig(self, chainDicts):
         """
         == Assembles the chain configuration and returns a chain object with (name, L1see and list of ChainSteps)
         """
@@ -86,11 +86,8 @@ class GenerateMenuMT:
                     chainConfigs = TriggerMenuMT.HLTMenuConfig.Egamma.generateElectronChainDefs.generateChainConfigs(chainDict)                    
                 except:
                     log.exception( 'Problems creating ChainDef for chain\n %s ' % (chainDict['chainName']) ) 
-
-
                     continue
-            else:
-                
+            else:                
                 log.error('Chain %s ignored - either trigger signature is turned off or the corresponding chain dictionary cannot be read.' %(chainDict['chainName']))
                 log.debug('Chain dictionary of failed chain is %s.', chainDict)
             
@@ -103,7 +100,7 @@ class GenerateMenuMT:
 
         if len(listOfChainConfigs) == 0:  
             log.error('No Chain Configuration found ')
-            return None
+            return False
         
         elif len(listOfChainConfigs)>1:
             if ("mergingStrategy" in chainDicts[0].keys()):
@@ -127,16 +124,17 @@ class GenerateMenuMT:
 
         log.debug('Creating one big list of of enabled signatures and chains')
         chains = []
-        # we can already use new set of flags
-        from AthenaConfiguration.AllConfigFlags import ConfigFlags
-        from TriggerMenuMT.HLTMenuConfig.Menu.LS2_v1_newJO import setupMenu as setupMenuFlags
-        setupMenuFlags( ConfigFlags ) 
-        ConfigFlags.lock()
+        ## we can already use new set of flags
+        #from AthenaConfiguration.AllConfigFlags import ConfigFlags
+        #from TriggerMenuMT.HLTMenuConfig.Menu.LS2_v1_newJO import setupMenu as setupMenuFlags
+        #setupMenuFlags( ConfigFlags ) 
+        #ConfigFlags.lock()
         
-        #if (TriggerFlags.CombinedSlice.signatures() or TriggerFlags.EgammaSlice.signatures()) and self.doEgammaChains:
-        if ConfigFlags.Trigger.menu.electron and self.doEgammaChains:
-            chains += ConfigFlags.Trigger.menu.electron
-            log.debug("egamma chains "+str(ConfigFlags.Trigger.menu.egamma))
+        #if ConfigFlags.Trigger.menu.electron and self.doEgammaChains:
+        if (TriggerFlags.CombinedSlice.signatures() or TriggerFlags.EgammaSlice.signatures()) and self.doEgammaChains:
+            chains += TriggerFlags.EgammaSlice.signatures() 
+            #chains += ConfigFlags.Trigger.menu.electron
+            #log.debug("egamma chains "+str(ConfigFlags.Trigger.menu.egamma))
         else:
             self.doEgammaChains   = False
 
@@ -191,9 +189,9 @@ class GenerateMenuMT:
         # go over the slices and put together big list of signatures requested
         #(L1Prescales, HLTPrescales, streamConfig) = MenuPrescaleConfig(self.triggerPythonConfig)
         # that does not seem to work
-        #(self.L1Prescales, self.HLTPrescales) = MenuPrescaleConfig(self.triggerConfigHLT)
-        #return (self.HLTPrescales)
-        pass
+        (self.L1Prescales, self.HLTPrescales) = MenuPrescaleConfig(self.triggerConfigHLT)
+        return (self.HLTPrescales)
+        #pass
 
 
 
@@ -214,7 +212,7 @@ class GenerateMenuMT:
             chainDict['chainCounter'] = chainCounter
 
             log.debug("Next: getting chain configuration for chain %s ", chain) 
-            chainConfig= self.getChainConfig(chainDict)
+            chainConfig= self.generateChainConfig(chainDict)
 
             log.debug("Finished with retrieving chain configuration for chain %s", chain) 
             self.triggerConfigHLT.allChainConfigs.append(chainConfig)
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1.py
index eebff07b51d8c67c455f0845dc3cf857c8c16608..ee607522968ab934603d3f54ba3980349cf8479d 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1.py
@@ -37,10 +37,9 @@ def setupMenu():
 
      ]
     TriggerFlags.EgammaSlice.signatures = [
-        ['e3_etcut1step', 'L1_EM3', [],  [PhysicsStream], ['RATE:SingleElectron', 'BW:Electron'], -1],
-        ['e3_etcut', 'L1_EM3',      [],  [PhysicsStream], ['RATE:SingleElectron', 'BW:Electron'], -1],
-        ['e5_etcut', 'L1_EM3',      [],  [PhysicsStream], ['RATE:SingleElectron', 'BW:Electron'], -1],
-        ['e7_etcut', 'L1_EM3',      [],  [PhysicsStream], ['RATE:SingleElectron', 'BW:Electron'], -1],
+        ['HLT_e3_etcut', 'L1_EM3',      [],  [PhysicsStream], ['RATE:SingleElectron', 'BW:Electron'], -1],
+        ['HLT_e5_etcut', 'L1_EM3',      [],  [PhysicsStream], ['RATE:SingleElectron', 'BW:Electron'], -1],
+        ['HLT_e7_etcut', 'L1_EM3',      [],  [PhysicsStream], ['RATE:SingleElectron', 'BW:Electron'], -1],
         #['e20',	      'L1_EM10',   [], [PhysicsStream], ['RATE:SingleElectron', 'BW:Electron'], -1],        
         ]
     TriggerFlags.CombinedSlice.signatures = [
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponents.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponents.py
index 66db49a5a03a35ee03791af1f4490c169e43cc21..39d58c7199c76ac048608b6cb571e6a56fae698a 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponents.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponents.py
@@ -209,7 +209,7 @@ class ComboMaker(AlgNode):
 
     def addChain(self, chain):
         log.debug("ComboMaker %s adding chain %s"%(self.Alg.name(),chain))
-        from MenuChains import getConfFromChainName
+        from TriggerMenuMT.HLTMenuConfig.Menu.MenuChains import getConfFromChainName
         confs=getConfFromChainName(chain)
         for conf in confs:
             seed=conf.replace("HLT_", "")
@@ -380,7 +380,7 @@ class Chain:
     def decodeHypoToolConfs(self):
         """ This is extrapolating the hypotool configuration from the (combined) chain name"""
         from TriggerMenuMT.HLTMenuConfig.Menu.MenuChains import getConfFromChainName
-        signatures = getConfFromChainName(self.name)
+        signatures = getConfFromChainName(self.name) #currently a lis of chainPart names
         for step in self.steps:
             if len(signatures) != len(step.sequences):
                 log.error("Error in step %s: found %d signatures and %d sequences"%(step.name, len(signatures), len(step.sequences)))
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/TriggerConfigHLT.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/TriggerConfigHLT.py
index 5d44149900cb95038dd9b1670009695b5cd45154..9fbb2bfada605804052a17b23a5fdee56faf0af1 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/TriggerConfigHLT.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/TriggerConfigHLT.py
@@ -15,7 +15,6 @@ class TriggerConfigHLT:
         return TriggerConfigHLT.sCurrentTriggerConfig
     currentTriggerConfig = staticmethod(currentTriggerConfig)
 
-
     def __init__(self, hltfile=None):
         self.menuName = 'TestMenu'
         self.__HLTFile = hltfile
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/scripts/generateMenuMT.py b/Trigger/TriggerCommon/TriggerMenuMT/scripts/generateMenuMT.py
index 0c3ffce84b7b42a900403d32138f2c59c8787d08..479bd89244b6e7df1a93653ad308c8d8847b1dea 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/scripts/generateMenuMT.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/scripts/generateMenuMT.py
@@ -61,5 +61,3 @@ g.generateMT()
 
 
 
-
-
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/scripts/test_HLTmenu.sh b/Trigger/TriggerCommon/TriggerMenuMT/scripts/test_HLTmenu.sh
index bba2ef6c262f350f5b3adfffd1fc0dfc818e0441..9bc1327118ebb207d9f983e7783940f6b9d30498 100755
--- a/Trigger/TriggerCommon/TriggerMenuMT/scripts/test_HLTmenu.sh
+++ b/Trigger/TriggerCommon/TriggerMenuMT/scripts/test_HLTmenu.sh
@@ -1,3 +1,4 @@
 #!bin/sh
 
+
 athena -l DEBUG --threads=1 --skipEvents=10 --evtMax=20 --filesInput="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data17_13TeV.00327265.physics_EnhancedBias.merge.RAW._lb0100._SFO-1._0001.1" TriggerMenuMT/generateMT.py
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/share/generateMT.py b/Trigger/TriggerCommon/TriggerMenuMT/share/generateMT.py
index e2af3b1baa4c8b0094a4eab27a94a9ea91a99c6d..5c6ac07101f5e6adcf37008c9ed5f8c4289ecc4d 100755
--- a/Trigger/TriggerCommon/TriggerMenuMT/share/generateMT.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/share/generateMT.py
@@ -36,6 +36,11 @@ for unpack in topSequence.L1DecoderTest.rerunRoiUnpackers:
 # Menu and CF construction
 ##########################################
 
+from TriggerJobOpts.TriggerFlags import TriggerFlags
+TriggerFlags.triggerMenuSetup = "LS2_v1"
+
+
+
 from TriggerMenuMT.HLTMenuConfig.Menu.GenerateMenuMT import GenerateMenuMT
 g = GenerateMenuMT()
 g.generateMT()