diff --git a/Trigger/TrigAlgorithms/TrigFastTrackFinder/CMakeLists.txt b/Trigger/TrigAlgorithms/TrigFastTrackFinder/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..5bea96bbee6307c298180970b678b554359fc7fe
--- /dev/null
+++ b/Trigger/TrigAlgorithms/TrigFastTrackFinder/CMakeLists.txt
@@ -0,0 +1,49 @@
+################################################################################
+# Package: TrigFastTrackFinder
+################################################################################
+
+# Declare the package name:
+atlas_subdir( TrigFastTrackFinder )
+
+# Declare the package's dependencies:
+atlas_depends_on_subdirs( PUBLIC
+                          GaudiKernel
+                          Tracking/TrkEvent/TrkEventPrimitives
+                          Trigger/TrigEvent/TrigInDetEvent
+                          Trigger/TrigEvent/TrigSteeringEvent
+                          Trigger/TrigSteer/TrigInterfaces
+                          Trigger/TrigTools/TrigInDetPattRecoTools
+                          PRIVATE
+                          Control/AthenaBaseComps
+                          Control/CxxUtils
+                          DetectorDescription/IRegionSelector
+                          InnerDetector/InDetConditions/InDetBeamSpotService
+                          InnerDetector/InDetDetDescr/InDetIdentifier
+                          InnerDetector/InDetRecEvent/InDetPrepRawData
+                          InnerDetector/InDetRecEvent/InDetRIO_OnTrack
+                          InnerDetector/InDetRecEvent/SiSpacePointsSeed
+                          InnerDetector/InDetRecTools/InDetRecToolInterfaces
+                          Tracking/TrkEvent/TrkParameters
+                          Tracking/TrkEvent/TrkRIO_OnTrack
+                          Tracking/TrkEvent/TrkTrack
+                          Tracking/TrkEvent/TrkTrackSummary
+                          Tracking/TrkTools/TrkToolInterfaces
+                          Trigger/TrigEvent/TrigInDetPattRecoEvent
+                          Trigger/TrigFTK/FTK_DataProviderInterfaces
+                          Trigger/TrigTools/TrigInDetToolInterfaces
+                          Trigger/TrigTools/TrigTimeAlgs )
+
+# External dependencies:
+find_package( TBB )
+
+# Component(s) in the package:
+atlas_add_component( TrigFastTrackFinder
+                     src/*.cxx
+                     src/components/*.cxx
+                     INCLUDE_DIRS ${TBB_INCLUDE_DIRS}
+                     LINK_LIBRARIES ${TBB_LIBRARIES} GaudiKernel TrkEventPrimitives TrigInDetEvent TrigSteeringEvent TrigInterfacesLib TrigInDetPattRecoTools AthenaBaseComps CxxUtils IRegionSelector InDetIdentifier InDetPrepRawData InDetRIO_OnTrack SiSpacePointsSeed InDetRecToolInterfaces TrkParameters TrkRIO_OnTrack TrkTrack TrkTrackSummary TrkToolInterfaces TrigInDetPattRecoEvent FTK_DataProviderInterfaces TrigTimeAlgsLib )
+
+# Install files from the package:
+atlas_install_headers( TrigFastTrackFinder )
+atlas_install_python_modules( python/*.py )
+
diff --git a/Trigger/TrigAlgorithms/TrigFastTrackFinder/TrigFastTrackFinder/TrigFastTrackFinder.h b/Trigger/TrigAlgorithms/TrigFastTrackFinder/TrigFastTrackFinder/TrigFastTrackFinder.h
index 6c8700442641be8b302cce7e0fe6fe68e81ff88f..6d4cf71832b93650f18c30aa734b225eabe35522 100644
--- a/Trigger/TrigAlgorithms/TrigFastTrackFinder/TrigFastTrackFinder/TrigFastTrackFinder.h
+++ b/Trigger/TrigAlgorithms/TrigFastTrackFinder/TrigFastTrackFinder/TrigFastTrackFinder.h
@@ -246,6 +246,8 @@ protected:
 
   std::map<Identifier, std::vector<long int> > m_siClusterMap;
 
+  bool m_useNewLayerNumberScheme;
+
 };
 
 #endif
diff --git a/Trigger/TrigAlgorithms/TrigFastTrackFinder/python/TrigFastTrackFinder_Config.py b/Trigger/TrigAlgorithms/TrigFastTrackFinder/python/TrigFastTrackFinder_Config.py
index 4575bcf0acef866eca1fd5a7e1eff5d99dc35b3c..676b9e4d5a4f6bc7a898dd13a2e08ec1bf212e00 100755
--- a/Trigger/TrigAlgorithms/TrigFastTrackFinder/python/TrigFastTrackFinder_Config.py
+++ b/Trigger/TrigAlgorithms/TrigFastTrackFinder/python/TrigFastTrackFinder_Config.py
@@ -316,14 +316,17 @@ class TrigFastTrackFinderBase(TrigFastTrackFinder):
         self.retrieveBarCodes = False#Look at truth information for spacepoints from barcodes
         #self.SignalBarCodes = [10001] #single particles
         self.SignalBarCodes = [11 ,12] #z->mumu
-       
+        
+        self.useNewLayerNumberScheme = True
+        
         self.OutputCollectionSuffix = type
         from AthenaCommon.AppMgr import ToolSvc
 
-        numberingTool = TrigL2LayerNumberTool()
+        numberingTool = TrigL2LayerNumberTool(name = "TrigL2LayerNumberTool_FTF")
+        numberingTool.UseNewLayerScheme = self.useNewLayerNumberScheme
         ToolSvc += numberingTool
-        self.LayerNumberTool=numberingTool
-
+        self.LayerNumberTool = numberingTool
+        
         timeHist = TrigTimeHistToolConfig("Time")
         timeHist.TimerHistLimits = [0,10000]
         from InDetTrigRecExample.InDetTrigSliceSettings import InDetTrigSliceSettings
@@ -343,11 +346,13 @@ class TrigFastTrackFinderBase(TrigFastTrackFinder):
           from TrigOnlineSpacePointTool.TrigOnlineSpacePointToolConf import TrigSpacePointConversionTool
           spTool = TrigSpacePointConversionTool().clone('TrigSpacePointConversionTool' + remapped_type)
           spTool.DoPhiFiltering = InDetTrigSliceSettings[('doSpPhiFiltering',remapped_type)]
+          spTool.UseNewLayerScheme = self.useNewLayerNumberScheme
           spTool.UseBeamTilt = False
+          spTool.layerNumberTool = numberingTool
           ToolSvc += spTool
           self.SpacePointProviderTool=spTool
           self.MinSPs = 5 #Only process RoI with more than 5 spacepoints 
-
+          
           self.Triplet_MinPtFrac = 1
           self.Triplet_nMaxPhiSlice = 53
           if remapped_type=="cosmics":
@@ -438,6 +443,8 @@ class TrigFastTrackFinderBase(TrigFastTrackFinder):
             from IDScanZFinder.IDScanZFinderConf import TrigZFinder
             theTrigZFinder = TrigZFinder()
             theTrigZFinder.NumberOfPeaks = 3
+            theTrigZFinder.LayerNumberTool=numberingTool
+            
             theTrigZFinder.FullScanMode = True #TODO: know this from the RoI anyway - should set for every event
             ToolSvc += theTrigZFinder
             self.trigZFinder = theTrigZFinder
@@ -455,7 +462,6 @@ class TrigFastTrackFinderBase(TrigFastTrackFinder):
           ToolSvc += resCalc
           self.TrigL2ResidualCalculator = resCalc
           self.doCloneRemoval = InDetTrigSliceSettings[('doCloneRemoval',remapped_type)]
-        print self
 
 
 class TrigFastTrackFinder_Muon(TrigFastTrackFinderBase):
diff --git a/Trigger/TrigAlgorithms/TrigFastTrackFinder/src/TrigFastTrackFinder.cxx b/Trigger/TrigAlgorithms/TrigFastTrackFinder/src/TrigFastTrackFinder.cxx
index a20ee8c5a98039c7dd7bd12ccef5aef37f213617..702e469ff6f943fcd0bfd375e7c042dea2ef6b98 100644
--- a/Trigger/TrigAlgorithms/TrigFastTrackFinder/src/TrigFastTrackFinder.cxx
+++ b/Trigger/TrigAlgorithms/TrigFastTrackFinder/src/TrigFastTrackFinder.cxx
@@ -55,6 +55,7 @@
 #include "TrigInDetPattRecoEvent/TrigL2TimeoutException.h"
 #include "TrigInDetPattRecoEvent/TrigInDetTriplet.h"
 
+
 #include "InDetRecToolInterfaces/ISiTrackMaker.h" 
 #include "TrigInDetPattRecoTools/TrigCombinatorialSettings.h"
 #include "TrigInDetPattRecoTools/TrigTrackSeedGenerator.h"
@@ -118,7 +119,8 @@ TrigFastTrackFinder::TrigFastTrackFinder(const std::string& name, ISvcLocator* p
   m_pixelId(0),
   m_sctId(0),
   m_idHelper(0),
-  m_particleHypothesis(Trk::pion)
+  m_particleHypothesis(Trk::pion),
+  m_useNewLayerNumberScheme(false)
 {
 
   /** Doublet finding properties. */
@@ -171,6 +173,8 @@ TrigFastTrackFinder::TrigFastTrackFinder(const std::string& name, ISvcLocator* p
   declareProperty("FTK_DataProviderService",             m_ftkDataProviderSvc);
   declareProperty("FTK_Refit",           m_ftkRefit = false);
 
+  declareProperty("useNewLayerNumberScheme", m_useNewLayerNumberScheme = false);
+
   // declare monitoring histograms
 
   declareMonitoredStdContainer("trk_pt",         m_trk_pt);
@@ -369,6 +373,12 @@ HLT::ErrorCode TrigFastTrackFinder::hltBeginRun()
   m_tcs.m_minEndcapPix    = m_numberingTool->offsetEndcapPixels(); 
   m_tcs.m_maxEndcapPix    = m_numberingTool->offsetEndcapSCT();
   m_tcs.m_maxSiliconLayer = m_numberingTool->maxSiliconLayerNum();
+  m_tcs.m_layerGeometry.clear();
+
+  if(m_useNewLayerNumberScheme) {
+    const std::vector<TRIG_INDET_SI_LAYER>* pVL = m_numberingTool->layerGeometry();
+    std::copy(pVL->begin(),pVL->end(),std::back_inserter(m_tcs.m_layerGeometry));
+  }
 
   return HLT::OK;
 }
@@ -382,20 +392,6 @@ HLT::ErrorCode TrigFastTrackFinder::hltExecute(const HLT::TriggerElement* /*inpu
 
   clearMembers();
 
-  // Retrieve vertexing information if needed
-
-  const TrigVertexCollection* vertexCollection = nullptr;
-
-  if(m_vertexSeededMode) {
-    //HLT::ErrorCode status = getFeature(inputTE, vertexCollection,"");
-    //
-    //NOTE the inputTE vs outputTE difference - the feature is assumed to come from the same step in the sequence
-    HLT::ErrorCode status = getFeature(outputTE, vertexCollection);
-    if(status != HLT::OK) return status;
-    if(vertexCollection==nullptr) return HLT::ERROR;
-  }
-
- 
   // 2. Retrieve beam spot and magnetic field information 
   //
 
@@ -481,7 +477,29 @@ HLT::ErrorCode TrigFastTrackFinder::hltExecute(const HLT::TriggerElement* /*inpu
     //  m_sp_z.push_back((*spIt).z());
     //  m_sp_r.push_back((*spIt).r());
     //}
-    
+    /*    
+    std::vector<int> lCounter;
+    for(int l=0;l<50;l++) lCounter.push_back(0);
+    for(std::vector<TrigSiSpacePointBase>::const_iterator spIt = convertedSpacePoints.begin(); spIt != convertedSpacePoints.end(); ++spIt) {
+      if((*spIt).layer()>31 || (*spIt).layer()<0) {
+	std::cout<<"Wrong layer "<<(*spIt).layer()<<" z="<<(*spIt).z()<<" r="<<(*spIt).r()<<std::endl;
+      }
+      else lCounter[(*spIt).layer()]++;
+    }
+    int nTotal=0;
+    for(int l=0;l<50;l++) {
+      nTotal+=lCounter[l];
+      std::cout<<"L="<<l<<" nSP="<<lCounter[l]<<std::endl;
+    }
+    std::cout<<"Total "<<nTotal<<" spacepoints out of "<<convertedSpacePoints.size()<<std::endl;
+
+    //  m_sp_x.push_back((*spIt).original_x());
+    //  m_sp_y.push_back((*spIt).original_y());
+    //  m_sp_z.push_back((*spIt).z());
+    //  m_sp_r.push_back((*spIt).r());
+    //}
+    */
+
     if(sc.isFailure()) { 
       ATH_MSG_WARNING("REGTEST / Failed to retrieve offline spacepoints ");
       return HLT::TOOL_FAILURE;
@@ -513,8 +531,11 @@ HLT::ErrorCode TrigFastTrackFinder::hltExecute(const HLT::TriggerElement* /*inpu
     if (m_doZFinder) {
       if ( timerSvc() ) m_ZFinderTimer->start();
       superRoi->setComposite(true);
-      vertexCollection = m_trigZFinder->findZ( convertedSpacePoints, *internalRoI);
-      ATH_MSG_VERBOSE("vertexCollection->size(): " << vertexCollection->size());
+
+      TrigVertexCollection* vertexCollection = m_trigZFinder->findZ( convertedSpacePoints, *internalRoI);
+      ATH_MSG_DEBUG("vertexCollection->size(): " << vertexCollection->size());
+
+
       for (auto vertex : *vertexCollection) {
         ATH_MSG_DEBUG("REGTEST / ZFinder vertex: " << *vertex);
         float z      = vertex->z();
@@ -527,6 +548,7 @@ HLT::ErrorCode TrigFastTrackFinder::hltExecute(const HLT::TriggerElement* /*inpu
       }
       m_tcs.roiDescriptor = superRoi.get();
       ATH_MSG_DEBUG("REGTEST / superRoi: " << *superRoi);
+      delete vertexCollection;
       if ( timerSvc() ) m_ZFinderTimer->stop();
     }
     m_currentStage = 3;
@@ -562,7 +584,9 @@ HLT::ErrorCode TrigFastTrackFinder::hltExecute(const HLT::TriggerElement* /*inpu
     if ( timerSvc() ) m_TripletMakingTimer->start();
     
     TRIG_TRACK_SEED_GENERATOR seedGen(m_tcs);
+
     seedGen.loadSpacePoints(convertedSpacePoints);
+
     seedGen.createSeeds();
     std::vector<TrigInDetTriplet*> triplets;
     seedGen.getSeeds(triplets);