diff --git a/Trigger/TrigAlgorithms/TrigmuComb/python/TrigmuCombConfig_newJO.py b/Trigger/TrigAlgorithms/TrigmuComb/python/TrigmuCombConfig_newJO.py
index 3514038b9872662c3b7c7e6c01c846d064d3186d..35c2417cf93cc122fa63cf32735682bf899b11a7 100644
--- a/Trigger/TrigAlgorithms/TrigmuComb/python/TrigmuCombConfig_newJO.py
+++ b/Trigger/TrigAlgorithms/TrigmuComb/python/TrigmuCombConfig_newJO.py
@@ -64,7 +64,11 @@ def l2MuCombRecoCfg(flags):
     acc, alg = muCombCfg(flags)
     alg.L2StandAloneMuonContainerName=muFastInfo
     alg.L2CombinedMuonContainerName = muCombInfo
-    reco.addRecoAlg(alg)
+
+    muCombAcc = ComponentAccumulator()
+    muCombAcc.addEventAlgo(alg)
+
+    reco.mergeReco(muCombAcc)
     reco.merge(acc)
 
     return reco
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Electron/generateElectron.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Electron/generateElectron.py
index b4469d313425d51723a3419e8356dacca2dd7206..7bbf1df01a3651d3e5f7d550f7ce95fc71b33264 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Electron/generateElectron.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Electron/generateElectron.py
@@ -38,8 +38,6 @@ def generateChains( flags,  chainDict ):
                                      HypoToolGen = TrigEgammaFastCaloHypoToolFromDict, 
                                      CA = accCalo)
 
-    fastCaloSequence.createHypoTools(chainDict)
-
     accCalo.printConfig()
 
     fastCaloStep = ChainStep(name=firstStepName, Sequences=[fastCaloSequence], chainDicts=[chainDict])
@@ -73,8 +71,6 @@ def generateChains( flags,  chainDict ):
                                       HypoToolGen = makeFakeHypoTool,
                                       CA = accTrk)
 
-    fastInDetSequence.createHypoTools(chainDict)
-
     fastInDetStep = ChainStep( name=secondStepName, Sequences=[fastInDetSequence], chainDicts=[chainDict])
 
     l1Thresholds=[]
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/generateJet.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/generateJet.py
index 778d9b8dc99212cac95e19a6ec80f78e3fade93e..2ea955bb789f464074bcc20239ddda1edb111166 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/generateJet.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/generateJet.py
@@ -7,6 +7,17 @@ import pprint
 from AthenaCommon.Logging import logging
 log = logging.getLogger( 'TriggerMenuMT.HLTMenuConfig.Jet.generateJet' )
 
+def HLTCaloCellMakerCfg( cellsname, cdaSvc ):
+    from AthenaConfiguration.ComponentFactory import CompFactory
+    cellmaker = CompFactory.HLTCaloCellMaker("HLTCaloCellMaker_FS")
+    cellmaker.RoIs = "FSJETRoI"
+    cellmaker.TrigDataAccessMT = cdaSvc
+    cellmaker.CellsName = cellsname
+
+    result = ComponentAccumulator()
+    result.addEventAlgo(cellmaker)
+    return result
+
 def generateChains( flags, chainDict ):
 
     stepName = getChainStepName('Jet', 1)
@@ -27,14 +38,10 @@ def generateChains( flags, chainDict ):
 
     cellsname = "CaloCellsFS"
     clustersname = "HLT_CaloTopoClustersFS"
+    
+    cellmakerCfg = HLTCaloCellMakerCfg(cellsname, cdaSvc)
 
-    from AthenaConfiguration.ComponentFactory import CompFactory
-    cellmaker = CompFactory.HLTCaloCellMaker("HLTCaloCellMaker_FS")
-    cellmaker.RoIs = "FSJETRoI"
-    cellmaker.TrigDataAccessMT = cdaSvc
-    cellmaker.CellsName = cellsname
-
-    inEventReco.addRecoAlg(cellmaker)
+    inEventReco.mergeReco( cellmakerCfg )
 
     from CaloRec.CaloTopoClusterConfig import CaloTopoClusterCfg
     inEventReco.mergeReco( CaloTopoClusterCfg( flags,
@@ -66,6 +73,7 @@ def generateChains( flags, chainDict ):
 
     #hypo
     from TrigHLTJetHypo.TrigJetHypoToolConfig import trigJetHypoToolFromDict
+    from AthenaConfiguration.ComponentFactory import CompFactory
     hypo = CompFactory.TrigJetHypoAlgMT("TrigJetHypoAlgMT_a4tcem_subjesIS")
     jetsfullname = jetprefix+TrigAntiKt4EMTopoSubJES.basename+jetsuffix+"Jets"
     hypo.Jets = jetsfullname
@@ -77,7 +85,7 @@ def generateChains( flags, chainDict ):
                                 HypoToolGen = trigJetHypoToolFromDict,
                                 CA = acc)
 
-    jetStep = ChainStep(stepName, [jetSequence])
+    jetStep = ChainStep(name=stepName, Sequences=[jetSequence], chainDicts=[chainDict])
 
     l1Thresholds=[]
     for part in chainDict['chainParts']:
@@ -87,6 +95,6 @@ def generateChains( flags, chainDict ):
 
     acc.printConfig()
 
-    chain = Chain( chainDict['chainName'], L1Thresholds=l1Thresholds, ChainSteps=[ jetStep ] )
+    chain = Chain( chainDict['chainName'], L1Thresholds=l1Thresholds, ChainSteps=[jetStep] )
 
     return chain
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig_newJO.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig_newJO.py
index 6970ca18cbf3574924e2267ac8fda10ac8165fe0..e936754bc87aff643c94f210fea5162098e8337b 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig_newJO.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig_newJO.py
@@ -73,29 +73,16 @@ def generateDecisionTree(chains):
         """
 
         filtersStep = getFiltersStepSeq( stepNumber )
-        singleRecSeq = getSingleMenuSeq( stepNumber, stepName )
+        singleMenuSeq = getSingleMenuSeq( stepNumber, stepName )
 
         filterName = CFNaming.filterName( stepName )
         filterAlg = CompFactory.RoRSeqFilter( filterName )
 
         acc.addEventAlgo( filterAlg, sequenceName=filtersStep.name )
-        acc.addEventAlgo( filterAlg, sequenceName=singleRecSeq.name )
+        acc.addEventAlgo( filterAlg, sequenceName=singleMenuSeq.name )
 
         log.debug('Creted filter {}'.format(filterName))
         return filterAlg
-
-    @memoize
-    def getComboHypo( stepNumber, step ):
-        """
-        Returns, if need be created, combo hypo for a given step
-        """
-
-        # todo: change name to be retrieved via CFNaming
-        #   so based on input hypos
-        comboHypoName = step.combo.name
-        comboHypo = CompFactory.ComboHypo(comboHypoName)
-
-        return comboHypo
             
     @memoize
     def findInputMaker( stepCounter, stepName ):
@@ -156,11 +143,6 @@ def generateDecisionTree(chains):
             hypoAlg.HypoInputDecisions  = ""
             hypoAlg.HypoOutputDecisions = ""
 
-            if step.isCombo:
-                comboHypo = getComboHypo( stepCounter, step )
-                comboHypo.HypoInputDecisions  = []
-                comboHypo.HypoOutputDecisions = []
-
     # connect all outputs (decision DF)
     for chain in chains:
         for stepCounter, step in enumerate( chain.steps, 1 ):
@@ -169,6 +151,7 @@ def generateDecisionTree(chains):
                 # Filters linking
                 filterAlg = getFilterAlg( stepCounter, step.name )
                 filterAlg.Chains = addAndAssureUniqness( filterAlg.Chains, chain.name, "{} filter alg chains".format( filterAlg.name ) )
+
                 if stepCounter == 1:
                     filterAlg.Input = addAndAssureUniqness( filterAlg.Input, chain.L1decisions[0], "{} L1 input".format( filterAlg.name ) )
                 else: # look into the previous step
@@ -192,7 +175,16 @@ def generateDecisionTree(chains):
                 hypoAlg.HypoOutputDecisions = assureUnsetOrTheSame( hypoAlg.HypoOutputDecisions, hypoOutName,
                     "{} hypo output".format( hypoAlg.name )  )
 
-                hypoAlg.HypoTools.append( sequence._hypoToolConf.confAndCreate( TriggerConfigHLT.getChainDictFromChainName( chain.name ) ) )
+                # Hypo Tools
+                if step.isCombo:
+                    from TriggerMenuMT.HLTMenuConfig.Menu.ChainDictTools import splitChainInDict
+                    chainDictLeg = splitChainInDict(chain.name)[seqCounter]
+                    hypoAlg.HypoTools.append( sequence._hypoToolConf.confAndCreate( chainDictLeg ) )
+
+                    # to be deleted after ComboHypos will be properly configured and included in DF
+                    hypoAlg.HypoTools.append( sequence._hypoToolConf.confAndCreate( TriggerConfigHLT.getChainDictFromChainName( chain.name ) ) )
+                else:
+                    hypoAlg.HypoTools.append( sequence._hypoToolConf.confAndCreate( TriggerConfigHLT.getChainDictFromChainName( chain.name ) ) )
 
 
     for chain in chains:
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponents.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponents.py
index 5c82972d645ede5ac961e4875ac125e65e5bf130..b30c7d10536480bedf9fc035f583182095bf5fd7 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponents.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponents.py
@@ -919,11 +919,6 @@ class InEventReco( ComponentAccumulator ):
         """ Merged CA movnig reconstruction algorithms into the right sequence """
         return self.merge( ca, sequenceName=self.recoSeq.getName() )
 
-    def addRecoAlg( self, alg ):
-        """Reconstruction alg to be run per event"""
-        log.warning( "InViewReco.addRecoAlgo: consider using mergeReco that takes care of the CA accumulation and moving algorithms" )
-        self.addEventAlgo( alg, self.recoSeq.name )
-
     def addHypoAlg(self, alg):
         self.addEventAlgo( alg, self.mainSeq.name )
 
@@ -973,11 +968,6 @@ class InViewReco( ComponentAccumulator ):
         """ Merged CA movnig reconstruction algorithms into the right sequence """
         return self.merge( ca, sequenceName=self.viewsSeq.getName() )
 
-    def addRecoAlg( self, alg ):
-        """Reconstruction alg to be run per view"""
-        log.warning( "InViewReco.addRecoAlgo: consider using mergeReco that takes care of the CA accumulation and moving algorithms" )
-        self.addEventAlgo( alg, self.viewsSeq.name )
-
     def addHypoAlg(self, alg):
         self.addEventAlgo( alg, self.mainSeq.name )
 
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/generateMuon.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/generateMuon.py
index a2411a112fd2131e7c3698c14db59cef2a03ba49..1567e8b6f8b32850abb74270767167758638272d 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/generateMuon.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/generateMuon.py
@@ -18,6 +18,17 @@ def fakeHypoAlgCfg(flags, name="FakeHypoForMuon"):
     HLTTest__TestHypoAlg=CompFactory.HLTTest.TestHypoAlg
     return HLTTest__TestHypoAlg( name, Input="" )
 
+def EFMuonViewDataVerifierCfg():
+    EFMuonViewDataVerifier =  CompFactory.getComp("AthViews::ViewDataVerifier")("EFMuonViewDataVerifier")
+    EFMuonViewDataVerifier.DataObjects = [( 'Muon::MdtPrepDataContainer' , 'StoreGateSvc+MDT_DriftCircles' ),
+                                          ( 'Muon::TgcPrepDataContainer' , 'StoreGateSvc+TGC_Measurements' ),
+                                          ( 'Muon::RpcPrepDataContainer' , 'StoreGateSvc+RPC_Measurements' ),
+                                          ( 'Muon::CscStripPrepDataContainer' , 'StoreGateSvc+CSC_Measurements' ),
+                                          ( 'Muon::CscPrepDataContainer' , 'StoreGateSvc+CSC_Clusters' )]
+    result = ComponentAccumulator()
+    result.addEventAlgo(EFMuonViewDataVerifier)
+    return result
+
 def generateChains( flags, chainDict ):
     chainDict = splitChainDict(chainDict)[0]
     
@@ -93,7 +104,10 @@ def generateChains( flags, chainDict ):
     # Get Reco alg of muFast Step in order to set into the view
     algAcc, alg = l2MuFastAlgCfg( flags, roisKey=reco.name+"RoIs")
 
-    reco.addRecoAlg( alg )
+    l2MuFastAlgAcc = ComponentAccumulator()
+    l2MuFastAlgAcc.addEventAlgo(alg)
+    
+    reco.mergeReco( l2MuFastAlgAcc )
     reco.merge( algAcc )
     #    l2muFastReco = l2MuFastRecoCfg(flags)
     acc.merge( reco, sequenceName=stepReco.getName() )
@@ -111,8 +125,6 @@ def generateChains( flags, chainDict ):
                                      HypoToolGen = TrigMufastHypoToolFromDict,
                                      CA = acc )
 
-    l2muFastSequence.createHypoTools(chainDict)
-
     l2muFastStep = ChainStep( name=stepName, Sequences=[l2muFastSequence], chainDicts=[chainDict] )
 
     ### Set muon step2 ###
@@ -136,14 +148,9 @@ def generateChains( flags, chainDict ):
     from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import InViewReco
     recoMS = InViewReco("EFMuMSReco")
     recoMS.inputMaker().RequireParentView = True
-    EFMuonViewDataVerifier =  CompFactory.getComp("AthViews::ViewDataVerifier")("EFMuonViewDataVerifier")
-    EFMuonViewDataVerifier.DataObjects = [( 'Muon::MdtPrepDataContainer' , 'StoreGateSvc+MDT_DriftCircles' ),
-                                          ( 'Muon::TgcPrepDataContainer' , 'StoreGateSvc+TGC_Measurements' ),
-                                          ( 'Muon::RpcPrepDataContainer' , 'StoreGateSvc+RPC_Measurements' ),
-                                          ( 'Muon::CscStripPrepDataContainer' , 'StoreGateSvc+CSC_Measurements' ),
-                                          ( 'Muon::CscPrepDataContainer' , 'StoreGateSvc+CSC_Clusters' )]
 
-    recoMS.addRecoAlg(EFMuonViewDataVerifier)
+    EFMuonViewDataVerifier = EFMuonViewDataVerifierCfg()
+    recoMS.mergeReco(EFMuonViewDataVerifier)
 
     from MuonConfig.MuonSegmentFindingConfig import MooSegmentFinderAlgCfg
     segCfg = MooSegmentFinderAlgCfg(muonflags,name="TrigMooSegmentFinder",UseTGCNextBC=False, UseTGCPriorBC=False)
@@ -174,8 +181,6 @@ def generateChains( flags, chainDict ):
                                      HypoToolGen = makeFakeHypoTool,
                                      CA = accMS )
 
-    efmuMSSequence.createHypoTools(chainDict)
-
     efmuMSStep = ChainStep( name=stepEFMSName, Sequences=[efmuMSSequence], chainDicts=[chainDict] )
 
     l1Thresholds=[]
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Photon/PhotonRecoSequences.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Photon/PhotonRecoSequences.py
index d15c10cfe6e8b5c8f4e57e8f4e8fc5b71a1d6606..edf03f50c8c74df97a627f59f7d2756f3d03f6b7 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Photon/PhotonRecoSequences.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Photon/PhotonRecoSequences.py
@@ -90,6 +90,16 @@ def l2PhotonAlgCfg( flags ):
 
     return acc, photonFex
 
+
+def photonViewDataVerifierCfg():
+    from AthenaConfiguration.ComponentFactory import CompFactory
+    moveClusters = CompFactory.getComp("AthViews::ViewDataVerifier")("photonViewDataVerifier")
+    moveClusters.DataObjects = [ ('xAOD::TrigEMClusterContainer','StoreGateSvc+HLT_L2CaloEMClusters') ]
+
+    result = ComponentAccumulator()
+    result.addEventAlgo(moveClusters)
+    return result
+
 def l2PhotonRecoCfg( flags ):
     from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import InViewReco
 
@@ -97,14 +107,15 @@ def l2PhotonRecoCfg( flags ):
     reco.inputMaker().RequireParentView = True
     reco.inputMaker().RoIsLink="initialRoI"
 
-    from AthenaConfiguration.ComponentFactory import CompFactory
-    moveClusters = CompFactory.getComp("AthViews::ViewDataVerifier")("photonViewDataVerifier")
-    moveClusters.DataObjects = [ ('xAOD::TrigEMClusterContainer','StoreGateSvc+HLT_L2CaloEMClusters') ]
-
-    reco.addRecoAlg( moveClusters )
+    moveClustersCfg = photonViewDataVerifierCfg()
+    reco.mergeReco( moveClustersCfg )
 
     algAcc, alg = l2PhotonAlgCfg( flags )
-    reco.addRecoAlg( alg )
+
+    l2PhotonAlgAcc = ComponentAccumulator()
+    l2PhotonAlgAcc.addEventAlgo(alg)
+    
+    reco.mergeReco( l2PhotonAlgAcc )
     reco.merge( algAcc )
 
     return reco
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Photon/generatePhoton.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Photon/generatePhoton.py
index 4d7f974abef4c99378402506aa497b37009726e4..398c8b14b457218c1c5a262345d1c5d8a4852a79 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Photon/generatePhoton.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Photon/generatePhoton.py
@@ -37,8 +37,6 @@ def generateChains(flags, chainDict):
                                      HypoToolGen = TrigEgammaFastCaloHypoToolFromDict,
                                      CA = accCalo )
 
-    fastCaloSequence.createHypoTools(chainDict)
-
     fastCaloStep = ChainStep(firstStepName, [fastCaloSequence])
 
 
@@ -63,8 +61,6 @@ def generateChains(flags, chainDict):
                                      HypoToolGen = TrigEgammaFastPhotonHypoToolFromDict,
                                      CA = accPhoton )
 
-    l2PhotonSequence.createHypoTools(chainDict)
-
     l2PhotonStep = ChainStep(secondStepName, [l2PhotonSequence])