diff --git a/analysis/PWGC2F/femtoscopy/nicafemto/CMakeLists.txt b/analysis/PWGC2F/femtoscopy/nicafemto/CMakeLists.txt
index ae254d76eda35f834fbbfbfe40552e0475efb65f..32b7475bcd7d6b9abe64b37c879a5182add59612 100644
--- a/analysis/PWGC2F/femtoscopy/nicafemto/CMakeLists.txt
+++ b/analysis/PWGC2F/femtoscopy/nicafemto/CMakeLists.txt
@@ -4,14 +4,9 @@ set(NICA_CBM
 )
 
 set(KF_HEADERS
-	${CBMROOT_SOURCE_DIR}/L1
-	${CBMROOT_SOURCE_DIR}/L1/L1Algo
-	${CBMROOT_SOURCE_DIR}/L1/ParticleFinder
 	${CLHEP_INCLUDE_DIR}
 	${Boost_INCLUDE_DIRS}
 	${KFParticle_INCLUDE_DIR}
-	${CBMROOT_SOURCE_DIR}/KF
-	${CBMROOT_SOURCE_DIR}/KF/Interface
 	${CBMROOT_SOURCE_DIR}/external/KFParticle/KFParticle
 #	${CBMROOT_SOURCE_DIR}/analysis/nica_cbm/helpers
 )
diff --git a/reco/KF/KF.cmake b/reco/KF/KF.cmake
index d4b610375fff8f4d75cfc8d0cd3626f85a912df4..d4aa313d967a136a3fa4e8e617205bd2edd7b440 100644
--- a/reco/KF/KF.cmake
+++ b/reco/KF/KF.cmake
@@ -5,6 +5,8 @@
 set(INCLUDE_DIRECTORIES
   ${CMAKE_CURRENT_SOURCE_DIR}
   ${CMAKE_CURRENT_SOURCE_DIR}/Interface
+  ${CMAKE_CURRENT_SOURCE_DIR}/ParticleFitter
+  ${CMAKE_CURRENT_SOURCE_DIR}/obsolete
   )
 
 set(SRCS
@@ -20,10 +22,6 @@ set(SRCS
   CbmKFUMeasurement.cxx 
   CbmKFVertexInterface.cxx 
 
-#### Tracker interfaces (will be moved to core/detector/*) ################
-  CbmTrackingDetectorInterfaceInit.cxx
-###########################################################################
-
   #Interface/CbmEcalTrackExtrapolationKF.cxx
   Interface/CbmKFStsHit.cxx 
   Interface/CbmKFTrack.cxx 
@@ -43,6 +41,15 @@ set(SRCS
   #CbmKFParticleFinderPID.cxx
   #CbmKFParticleFinderQa.cxx
   #CbmKFParticleInterface.cxx
+  ParticleFitter/CbmL1PFFitter.cxx
+  ParticleFitter/CbmL1PFMCParticle.cxx
+  obsolete/CbmL1TrackMerger.cxx
+  obsolete/CbmL1TofMerger.cxx
+  obsolete/CbmL1TrdTracklet.cxx
+  obsolete/CbmL1TrdTracklet4.cxx
+ # obsolete/CbmL1TrdTrackFinderSts.cxx
+ # obsolete/CbmL1CATrdTrackFinderSA.cxx
+ 
   )
 
 
@@ -87,6 +94,7 @@ set(PUBLIC_DEPENDENCIES
   CbmBase
   CbmData
   CbmRecoBase
+  L1
   FairRoot::Base
   ROOT::Core
   ROOT::Geom
@@ -100,6 +108,7 @@ set(PRIVATE_DEPENDENCIES
   CbmStsBase
   CbmTofBase
   CbmTrdBase
+  KFParticle
   FairLogger::FairLogger
   FairRoot::GeoBase
   FairRoot::ParBase
diff --git a/reco/KF/KFLinkDef.h b/reco/KF/KFLinkDef.h
index ac53d37336fc8ac55b8e7ef02d18958940f932a2..6f16bb68b65a64b3c680125223ecf0c6d20c00dd 100644
--- a/reco/KF/KFLinkDef.h
+++ b/reco/KF/KFLinkDef.h
@@ -36,8 +36,14 @@
 #pragma link C++ class CbmTrdTrackFitterKF + ;
 #pragma link C++ class CbmTofTrackFitterKF + ;
 #pragma link C++ class CbmGlobalTrackFitterKF + ;
-
-#pragma link C++ class CbmTrackingDetectorInterfaceInit + ;
+#pragma link C++ class CbmL1TrackMerger + ;
+#pragma link C++ class CbmL1TofMerger + ;
+#pragma link C++ class CbmL1TrdTracklet + ;
+#pragma link C++ class CbmL1TrdTracklet4 + ;
+//#pragma link C++ class  CbmL1TrdTrackFinderSts+;
+//#pragma link C++ class  CbmL1CATrdTrackFinderSA+;
+
+//#pragma link C++ class CbmTrackingDetectorInterfaceInit + ;
 //KFQA
 /*
 #pragma link C++ class CbmKFPartEfficiencies + ;
diff --git a/reco/L1/ParticleFinder/CbmL1PFFitter.cxx b/reco/KF/ParticleFitter/CbmL1PFFitter.cxx
similarity index 99%
rename from reco/L1/ParticleFinder/CbmL1PFFitter.cxx
rename to reco/KF/ParticleFitter/CbmL1PFFitter.cxx
index 559e18e6fb5be6500b673e7010134a1909951720..ad21d0b959463683dc5a6e702095c0f87bcf0f41 100644
--- a/reco/L1/ParticleFinder/CbmL1PFFitter.cxx
+++ b/reco/KF/ParticleFitter/CbmL1PFFitter.cxx
@@ -13,7 +13,7 @@
  *
  *=====================================================
  *
- *  SIMD Fitter for CbmL1Track class
+ *  SIMD Fitter
  *
  */
 
@@ -29,7 +29,6 @@
 
 //L1Algo tools
 #include "CbmKFVertex.h"
-#include "CbmL1Track.h"
 
 #include "FairRootManager.h"
 
diff --git a/reco/L1/ParticleFinder/CbmL1PFFitter.h b/reco/KF/ParticleFitter/CbmL1PFFitter.h
similarity index 100%
rename from reco/L1/ParticleFinder/CbmL1PFFitter.h
rename to reco/KF/ParticleFitter/CbmL1PFFitter.h
diff --git a/reco/L1/ParticleFinder/CbmL1PFMCParticle.cxx b/reco/KF/ParticleFitter/CbmL1PFMCParticle.cxx
similarity index 100%
rename from reco/L1/ParticleFinder/CbmL1PFMCParticle.cxx
rename to reco/KF/ParticleFitter/CbmL1PFMCParticle.cxx
diff --git a/reco/L1/ParticleFinder/CbmL1PFMCParticle.h b/reco/KF/ParticleFitter/CbmL1PFMCParticle.h
similarity index 100%
rename from reco/L1/ParticleFinder/CbmL1PFMCParticle.h
rename to reco/KF/ParticleFitter/CbmL1PFMCParticle.h
diff --git a/reco/L1/CbmL1CATrdTrackFinderSA.cxx b/reco/KF/obsolete/CbmL1CATrdTrackFinderSA.cxx
similarity index 100%
rename from reco/L1/CbmL1CATrdTrackFinderSA.cxx
rename to reco/KF/obsolete/CbmL1CATrdTrackFinderSA.cxx
diff --git a/reco/L1/CbmL1CATrdTrackFinderSA.h b/reco/KF/obsolete/CbmL1CATrdTrackFinderSA.h
similarity index 100%
rename from reco/L1/CbmL1CATrdTrackFinderSA.h
rename to reco/KF/obsolete/CbmL1CATrdTrackFinderSA.h
diff --git a/reco/L1/CbmL1TofMerger.cxx b/reco/KF/obsolete/CbmL1TofMerger.cxx
similarity index 100%
rename from reco/L1/CbmL1TofMerger.cxx
rename to reco/KF/obsolete/CbmL1TofMerger.cxx
diff --git a/reco/L1/CbmL1TofMerger.h b/reco/KF/obsolete/CbmL1TofMerger.h
similarity index 100%
rename from reco/L1/CbmL1TofMerger.h
rename to reco/KF/obsolete/CbmL1TofMerger.h
diff --git a/reco/L1/CbmL1TrackMerger.cxx b/reco/KF/obsolete/CbmL1TrackMerger.cxx
similarity index 100%
rename from reco/L1/CbmL1TrackMerger.cxx
rename to reco/KF/obsolete/CbmL1TrackMerger.cxx
diff --git a/reco/L1/CbmL1TrackMerger.h b/reco/KF/obsolete/CbmL1TrackMerger.h
similarity index 100%
rename from reco/L1/CbmL1TrackMerger.h
rename to reco/KF/obsolete/CbmL1TrackMerger.h
diff --git a/reco/L1/CbmL1TrdHit.h b/reco/KF/obsolete/CbmL1TrdHit.h
similarity index 97%
rename from reco/L1/CbmL1TrdHit.h
rename to reco/KF/obsolete/CbmL1TrdHit.h
index 1ae98230f9be793a053fc72cf6efa05fca797caf..cf980b6ac928198291f5f85040f2c806d1a88b90 100644
--- a/reco/L1/CbmL1TrdHit.h
+++ b/reco/KF/obsolete/CbmL1TrdHit.h
@@ -21,8 +21,6 @@
 #ifndef _CbmL1TrdHit_h_
 #define _CbmL1TrdHit_h_
 
-#include "CbmKFHit.h"
-
 struct CbmL1TrdHit  //:public CbmL1KFUMeasurement
 {
 
diff --git a/reco/L1/CbmL1TrdTrackFinderSts.cxx b/reco/KF/obsolete/CbmL1TrdTrackFinderSts.cxx
similarity index 100%
rename from reco/L1/CbmL1TrdTrackFinderSts.cxx
rename to reco/KF/obsolete/CbmL1TrdTrackFinderSts.cxx
diff --git a/reco/L1/CbmL1TrdTrackFinderSts.h b/reco/KF/obsolete/CbmL1TrdTrackFinderSts.h
similarity index 100%
rename from reco/L1/CbmL1TrdTrackFinderSts.h
rename to reco/KF/obsolete/CbmL1TrdTrackFinderSts.h
diff --git a/reco/L1/CbmL1TrdTracklet.cxx b/reco/KF/obsolete/CbmL1TrdTracklet.cxx
similarity index 100%
rename from reco/L1/CbmL1TrdTracklet.cxx
rename to reco/KF/obsolete/CbmL1TrdTracklet.cxx
diff --git a/reco/L1/CbmL1TrdTracklet.h b/reco/KF/obsolete/CbmL1TrdTracklet.h
similarity index 100%
rename from reco/L1/CbmL1TrdTracklet.h
rename to reco/KF/obsolete/CbmL1TrdTracklet.h
diff --git a/reco/L1/CbmL1TrdTracklet4.cxx b/reco/KF/obsolete/CbmL1TrdTracklet4.cxx
similarity index 100%
rename from reco/L1/CbmL1TrdTracklet4.cxx
rename to reco/KF/obsolete/CbmL1TrdTracklet4.cxx
diff --git a/reco/L1/CbmL1TrdTracklet4.h b/reco/KF/obsolete/CbmL1TrdTracklet4.h
similarity index 100%
rename from reco/L1/CbmL1TrdTracklet4.h
rename to reco/KF/obsolete/CbmL1TrdTracklet4.h
diff --git a/reco/L1/CMakeLists.txt b/reco/L1/CMakeLists.txt
index 48e538c94f7f7675fac316fa005928f782fefc6e..b47941903b5a7a80ac354852e4af053b66d20530 100644
--- a/reco/L1/CMakeLists.txt
+++ b/reco/L1/CMakeLists.txt
@@ -14,7 +14,7 @@ set(INCLUDE_DIRECTORIES
   ${CMAKE_CURRENT_SOURCE_DIR}
   ${CMAKE_CURRENT_SOURCE_DIR}/L1Algo
   ${CMAKE_CURRENT_SOURCE_DIR}/OffLineInterface
-  ${CMAKE_CURRENT_SOURCE_DIR}/ParticleFinder
+#  ${CMAKE_CURRENT_SOURCE_DIR}/ParticleFinder
   ${CMAKE_CURRENT_SOURCE_DIR}/qa
   ${CMAKE_CURRENT_SOURCE_DIR}/L1Algo/utils
   ${CMAKE_CURRENT_SOURCE_DIR}/catools
@@ -23,19 +23,11 @@ set(INCLUDE_DIRECTORIES
 
 set(SRCS
 
-  # L1Algo / L1CATrackFinder.cxx
-  # CbmL1Performance.cxx
-  # CbmL1ReadEvent.cxx
-  # CbmL1CATrdTrackFinderSA.cxx
-  CbmL1TrdTracklet.cxx
-  CbmL1TrdTracklet4.cxx
-  CbmL1.cxx
-
-  # CbmL1TrdTrackFinderSts.cxx
-  CbmL1TrackMerger.cxx
-  CbmL1TofMerger.cxx
+#### Tracker interfaces (will be moved to core/detector/*) ################
+  CbmTrackingDetectorInterfaceInit.cxx
+###########################################################################
 
-  # L1AlgoInputData.cxx
+  CbmL1.cxx
   OffLineInterface/CbmL1StsTrackFinder.cxx
   OffLineInterface/CbmL1GlobalTrackFinder.cxx
   OffLineInterface/CbmL1GlobalFindTracksEvents.cxx
@@ -47,6 +39,7 @@ set(SRCS
   L1Algo/L1BranchExtender.cxx
   L1Algo/L1TrackFitter.cxx
   L1Algo/L1Grid.cxx
+  CbmL1Util.cxx
   CbmL1Performance.cxx
   CbmL1ReadEvent.cxx
   CbmCaMCModule.cxx
@@ -82,9 +75,6 @@ set(SRCS
   catools/CaToolsWFExpression.cxx
   catools/CaToolsMaterialHelper.cxx
 
-  ParticleFinder/CbmL1PFFitter.cxx
-  ParticleFinder/CbmL1PFMCParticle.cxx
-
   qa/CbmTrackerInputQaTrd.cxx
   qa/CbmTrackerInputQaTof.cxx
   qa/CbmTrackingInputQaSts.cxx
@@ -107,13 +97,12 @@ set(NO_DICT_SRCS
 
 set(HEADERS
   CbmL1Constants.h
-  CbmL1CATrdTrackFinderSA.h
+  CbmL1Util.h
   CbmL1DetectorID.h
   CbmL1MCPoint.h
   CbmL1Hit.h
   CbmL1Track.h
   CbmL1TrackPar.h
-  CbmL1TrdHit.h
   CbmL1Vtx.h
   L1Algo/L1Def.h
   L1Algo/L1Vector.h
@@ -169,7 +158,6 @@ set(PUBLIC_DEPENDENCIES
   CbmBase
   CbmData
   CbmQaBase
-  KF
   FairLogger::FairLogger
   FairRoot::Base
   ROOT::Core
diff --git a/reco/L1/CbmCaTimeSliceReader.cxx b/reco/L1/CbmCaTimeSliceReader.cxx
index bb96dcf479cc181a213a0a8d2d4614853aeca1c7..63cdb5f2ab9ac6795223fc3139ccb8b76df8a56c 100644
--- a/reco/L1/CbmCaTimeSliceReader.cxx
+++ b/reco/L1/CbmCaTimeSliceReader.cxx
@@ -10,7 +10,7 @@
 #include "CbmCaTimeSliceReader.h"
 
 #include "CbmGlobalTrack.h"
-#include "CbmKFMath.h"  // for CopyTrackParam2TC
+#include "CbmL1Util.h"  // for CopyTrackParam2TC
 #include "CbmMuchTrack.h"
 #include "CbmStsTrack.h"
 #include "CbmTofTrack.h"
@@ -190,8 +190,8 @@ void TimeSliceReader::ReadRecoTracks()
       for (int iT = 0; iT < nTracks; ++iT) {
         auto* pInputTrack = static_cast<CbmStsTrack*>(fpBrRecoTracks->At(iT));
         auto& track       = (*fpvTracks)[iT];
-        CbmKFMath::CopyTrackParam2TC(pInputTrack->GetParamFirst(), track.T, track.C);
-        CbmKFMath::CopyTrackParam2TC(pInputTrack->GetParamLast(), track.TLast, track.CLast);
+        cbm::L1Util::CopyTrackParam2TC(pInputTrack->GetParamFirst(), track.T, track.C);
+        cbm::L1Util::CopyTrackParam2TC(pInputTrack->GetParamLast(), track.TLast, track.CLast);
         track.chi2      = pInputTrack->GetChiSq();
         track.NDF       = pInputTrack->GetNDF();
         track.Tpv[6]    = pInputTrack->GetStartTime();
@@ -221,8 +221,8 @@ void TimeSliceReader::ReadRecoTracks()
       for (int iT = 0; iT < nTracks; ++iT) {
         auto* pInputTrack = static_cast<CbmGlobalTrack*>(fpBrRecoTracks->At(iT));
         auto& track       = (*fpvTracks)[iT];
-        CbmKFMath::CopyTrackParam2TC(pInputTrack->GetParamFirst(), track.T, track.C);
-        CbmKFMath::CopyTrackParam2TC(pInputTrack->GetParamLast(), track.TLast, track.CLast);
+        cbm::L1Util::CopyTrackParam2TC(pInputTrack->GetParamFirst(), track.T, track.C);
+        cbm::L1Util::CopyTrackParam2TC(pInputTrack->GetParamLast(), track.TLast, track.CLast);
         track.chi2 = pInputTrack->GetChi2();
         track.NDF  = pInputTrack->GetNDF();
 
diff --git a/reco/L1/CbmL1.cxx b/reco/L1/CbmL1.cxx
index 679791372a74cd0e8970249ab149a8c33031512f..38376d99dbe74465c9886ab8fb8ff812bae567e1 100644
--- a/reco/L1/CbmL1.cxx
+++ b/reco/L1/CbmL1.cxx
@@ -20,9 +20,6 @@
 
 #include "CbmL1.h"
 
-#include "CbmKF.h"
-#include "CbmKFVertex.h"
-#include "CbmL1PFFitter.h"
 #include "CbmMCDataManager.h"
 #include "CbmMuchTrackingInterface.h"
 #include "CbmMvdTrackingInterface.h"
@@ -421,8 +418,9 @@ InitStatus CbmL1::Init()
     // ** Target initialization **
     // ***************************
 
-    auto& target = CbmKF::Instance()->vTargets[0];
-    fInitManager.SetTargetPosition(target.x, target.y, target.z);
+    GetTargetInfo();
+
+    fInitManager.SetTargetPosition(fTargetX, fTargetY, fTargetZ);
 
     // *********************************
     // ** Target field initialization **
@@ -486,7 +484,7 @@ InitStatus CbmL1::Init()
         // TODO: The CA TF result is dependent from type of geometry settings. Should be understood (S.Zharko)
         stationInfo.SetFrontBackStripsGeometry((fscal) mvdInterface->GetStripsStereoAngleFront(iSt),
                                                (fscal) mvdInterface->GetStripsStereoAngleBack(iSt));
-        stationInfo.SetTrackingStatus(target.z < stationInfo.GetZdouble() ? true : false);
+        stationInfo.SetTrackingStatus(fTargetZ < stationInfo.GetZdouble() ? true : false);
         if (fvmDisabledStationIDs[L1DetectorID::kMvd].find(iSt) != fvmDisabledStationIDs[L1DetectorID::kMvd].cend()) {
           stationInfo.SetTrackingStatus(false);
         }
@@ -514,7 +512,7 @@ InitStatus CbmL1::Init()
         // TODO: The CA TF result is dependent from type of geometry settings. Should be understood (S.Zharko)
         stationInfo.SetFrontBackStripsGeometry((fscal) stsInterface->GetStripsStereoAngleFront(iSt),
                                                (fscal) stsInterface->GetStripsStereoAngleBack(iSt));
-        stationInfo.SetTrackingStatus(target.z < stationInfo.GetZdouble() ? true : false);
+        stationInfo.SetTrackingStatus(fTargetZ < stationInfo.GetZdouble() ? true : false);
         if (fvmDisabledStationIDs[L1DetectorID::kSts].find(iSt) != fvmDisabledStationIDs[L1DetectorID::kSts].cend()) {
           stationInfo.SetTrackingStatus(false);
         }
@@ -541,7 +539,7 @@ InitStatus CbmL1::Init()
         // TODO: The CA TF result is dependent from type of geometry settings. Should be understood (S.Zharko)
         stationInfo.SetFrontBackStripsGeometry((fscal) muchInterface->GetStripsStereoAngleFront(iSt),
                                                (fscal) muchInterface->GetStripsStereoAngleBack(iSt));
-        stationInfo.SetTrackingStatus(target.z < stationInfo.GetZdouble() ? true : false);
+        stationInfo.SetTrackingStatus(fTargetZ < stationInfo.GetZdouble() ? true : false);
         if (fvmDisabledStationIDs[L1DetectorID::kMuch].find(iSt) != fvmDisabledStationIDs[L1DetectorID::kMuch].cend()) {
           stationInfo.SetTrackingStatus(false);
         }
@@ -569,7 +567,7 @@ InitStatus CbmL1::Init()
         fscal trdBackPhi  = trdInterface->GetStripsStereoAngleBack(iSt);
         if (L1Algo::TrackingMode::kGlobal == fTrackingMode) { stationInfo.SetTimeInfo(false); }
         stationInfo.SetFrontBackStripsGeometry(trdFrontPhi, trdBackPhi);
-        stationInfo.SetTrackingStatus(target.z < stationInfo.GetZdouble() ? true : false);
+        stationInfo.SetTrackingStatus(fTargetZ < stationInfo.GetZdouble() ? true : false);
         if (iSt == 1 && L1Algo::TrackingMode::kMcbm == fTrackingMode && fMissingHits) {
           stationInfo.SetTrackingStatus(false);
         }
@@ -600,7 +598,7 @@ InitStatus CbmL1::Init()
         fscal tofFrontPhi = tofInterface->GetStripsStereoAngleFront(iSt);
         fscal tofBackPhi  = tofInterface->GetStripsStereoAngleBack(iSt);
         stationInfo.SetFrontBackStripsGeometry(tofFrontPhi, tofBackPhi);
-        stationInfo.SetTrackingStatus(target.z < stationInfo.GetZdouble() ? true : false);
+        stationInfo.SetTrackingStatus(fTargetZ < stationInfo.GetZdouble() ? true : false);
         if (fvmDisabledStationIDs[L1DetectorID::kTof].find(iSt) != fvmDisabledStationIDs[L1DetectorID::kTof].cend()) {
           stationInfo.SetTrackingStatus(false);
         }
@@ -627,10 +625,10 @@ InitStatus CbmL1::Init()
       ca::tools::MaterialHelper matHelper;
       matHelper.SetSafeMaterialInitialization(fDoSafeMaterialInitialization);
 
-      if (!fMatBudgetParallelProjection) { matHelper.SetDoRadialProjection(target.z); }
+      if (!fMatBudgetParallelProjection) { matHelper.SetDoRadialProjection(fTargetZ); }
       matHelper.SetNraysPerDim(fMatBudgetNrays);
 
-      double zLast = target.z + 1.;  // some gap (+1cm) to skip the target material
+      double zLast = fTargetZ + 1.;  // some gap (+1cm) to skip the target material
 
       for (unsigned int ist = 0; ist < vStations.size(); ist++) {
         auto& station = vStations[ist];
@@ -1495,3 +1493,64 @@ void CbmL1::DumpMaterialToFile(TString fileName)
   }
   f->Write();
 }
+
+// ---------------------------------------------------------------------------------------------------------------------
+// Target finder
+//
+
+void CbmL1::GetTargetInfo()
+{
+  // Loop over all nodes till a node with name "target" is found
+  // Extract the required infrmation from the node and store it in the
+  // proper structure
+  // The complete logic depends on the naming convention of the target.
+  // If the node doesn't contain the string target the procedure will fail
+
+  fTargetX = 1.e10;
+  fTargetY = 1.e10;
+  fTargetZ = 1.e10;
+
+  TString targetPath;
+  TGeoNode* targetNode {nullptr};
+  FindTargetNode(targetPath, targetNode);
+
+  if (!targetNode) { LOG(fatal) << "L1: can not find the target!"; }
+
+  Double_t local[3] = {0., 0., 0.};  // target centre, local c.s.
+  Double_t global[3];                // target centre, global c.s.
+  gGeoManager->cd(targetPath);
+  gGeoManager->GetCurrentMatrix()->LocalToMaster(local, global);
+  fTargetX = global[0];
+  fTargetY = global[1];
+  fTargetZ = global[2];
+
+  LOG(info) << " Target found: \"" << targetPath << "\" at ( " << fTargetX << " " << fTargetY << " " << fTargetZ
+            << " ) ";
+}
+
+// ---------------------------------------------------------------------------------------------------------------------
+// Target finder - recursive routine
+//
+
+void CbmL1::FindTargetNode(TString& targetPath, TGeoNode*& targetNode)
+{
+  if (!targetNode) {  // init at the top of the tree
+    targetNode = gGeoManager->GetTopNode();
+    targetPath = "/" + TString(targetNode->GetName());
+  }
+
+  if (TString(targetNode->GetName()).Contains("target")) { return; }
+
+  for (Int_t iNode = 0; iNode < targetNode->GetNdaughters(); iNode++) {
+    TGeoNode* newNode = targetNode->GetDaughter(iNode);
+    TString newPath   = targetPath + "/" + newNode->GetName();
+    FindTargetNode(newPath, newNode);
+    if (newNode) {
+      targetPath = newPath;
+      targetNode = newNode;
+      return;
+    }
+  }
+  targetPath = "";
+  targetNode = nullptr;
+}
diff --git a/reco/L1/CbmL1.h b/reco/L1/CbmL1.h
index 37d698306b2a8688046ac17632bb6dc5a10022f0..df9317cf0f5d471a797408d96d0422669662e811 100644
--- a/reco/L1/CbmL1.h
+++ b/reco/L1/CbmL1.h
@@ -27,7 +27,6 @@
 #include "CbmL1MCPoint.h"
 #include "CbmL1MCTrack.h"
 #include "CbmL1Track.h"
-#include "CbmL1Vtx.h"
 #include "CbmMCDataArray.h"
 #include "CbmMCEventList.h"
 #include "CbmMCTrack.h"
@@ -65,14 +64,13 @@ class L1Algo;
 class L1Event;
 class CbmL1ParticlesFinder;
 class L1FieldSlice;
-class CbmL1Track;
 class CbmL1MCTrack;
 class KFTopoPerformance;
 class CbmMCDataObject;
 class CbmEvent;
 class TProfile2D;
 class TNtuple;
-
+class TGeoNode;
 
 /// Internal structure to handle link keys
 struct CbmL1LinkKey {
@@ -451,6 +449,13 @@ private:
   /// Gets a pointer to L1InitManager (for an access in run_reco.C)
   L1InitManager* GetInitManager() { return &fInitManager; }
 
+  /// Get the target information
+  void GetTargetInfo();
+
+  /// A helper for GetTargetInfo()
+  void FindTargetNode(TString& targetPath, TGeoNode*& targetNode);
+
+
   void WriteHistosCurFile(TObject* obj);
 
   static std::istream& eatwhite(std::istream& is);  // skip spaces
@@ -493,6 +498,10 @@ private:
   bool fDoSafeMaterialInitialization {false};  /// Do safe but slow material initialisation
                                                /// to get around potential problems in TGeoVoxelFinder
 
+  double fTargetX {1.e10};  ///< target position X
+  double fTargetY {1.e10};  ///< target position Y
+  double fTargetZ {1.e10};  ///< target position Z
+
   int fNpointsMvd  = 0;  ///< Number of MC points for MVD
   int fNpointsSts  = 0;  ///< Number of MC points for STS
   int fNpointsMuch = 0;  ///< Number of MC points for MuCh
diff --git a/reco/L1/CbmL1Performance.cxx b/reco/L1/CbmL1Performance.cxx
index d2c424a0b705445ce11f7a5924b35429ce204421..9f02e032d784f6bfdf2f1c040958041079b96ac4 100644
--- a/reco/L1/CbmL1Performance.cxx
+++ b/reco/L1/CbmL1Performance.cxx
@@ -13,13 +13,11 @@
  *
  *====================================================================
  *
- *  L1 Fit performance
+ *  L1 Fit performance 
  *
  *====================================================================
  */
-#include "CbmKF.h"
-#include "CbmKFMath.h"
-#include "CbmKFTrack.h"  // for vertex pulls
+
 #include "CbmL1.h"
 #include "CbmL1Constants.h"
 #include "CbmL1Counters.h"
@@ -37,6 +35,7 @@
 #include "CbmTrdHit.h"
 #include "CbmTrdPoint.h"
 
+#include "FairField.h"
 #include "FairRunAna.h"
 #include "FairTrackParam.h"  // for vertex pulls
 
@@ -118,7 +117,7 @@ void CbmL1::TrackMatch()
       else {
         hitmapChain[chainID] += 1;
       }
-    }    // for iHit
+    }  // for iHit
 
     // RTrack <-> MCTrack identification
     double max_percent = 0.0;  // [%]. maximum persent of hits, which belong to one mcTrack.
@@ -517,8 +516,6 @@ void CbmL1::EfficienciesPerformance()
 void CbmL1::HistoPerformance()  // TODO: check if works correctly. Change vHitFast on match data in CbmL1**Track classes
 {
 
-  //CbmKF &KF = *CbmKF::Instance();
-
   static TProfile *p_eff_all_vs_mom, *p_eff_prim_vs_mom, *p_eff_sec_vs_mom, *p_eff_d0_vs_mom, *p_eff_prim_vs_theta,
     *p_eff_all_vs_pt, *p_eff_prim_vs_pt, *p_eff_all_vs_nhits, *p_eff_prim_vs_nhits, *p_eff_sec_vs_nhits;
 
@@ -1640,23 +1637,17 @@ void CbmL1::FieldApproxCheck()
   TFile* fout        = new TFile("FieldApprox.root", "RECREATE");
   fout->cd();
 
-  FairField* MF = CbmKF::Instance()->GetMagneticField();
-  for (int ist = 0; ist < fNStations; ist++) {
-    double z    = 0;
-    double Xmax = -100, Ymax = -100;
-    if (ist < fNMvdStations) {
-      CbmKFTube& t = CbmKF::Instance()->vMvdMaterial[ist];
-      z            = t.z;
-      Xmax = Ymax = t.R;
-    }
-    else {
-      CbmStsStation* station = CbmStsSetup::Instance()->GetStation(ist - fNMvdStations);
-      z                      = station->GetZ();
+  assert(FairRunAna::Instance());
+  FairField* MF = FairRunAna::Instance()->GetField();
+  assert(MF);
 
-      Xmax = station->GetXmax();
-      Ymax = station->GetYmax();
-    }  // if mvd
+  for (int ist = 0; ist < fpAlgo->GetParameters()->GetNstationsActive(); ist++) {
 
+    const L1Station& st = fpAlgo->GetParameters()->GetStation(ist);
+
+    double z    = st.fZ[0];
+    double Xmax = st.Rmax[0];
+    double Ymax = Xmax;
 
     //    float step = 1.;
 
@@ -1683,9 +1674,9 @@ void CbmL1::FieldApproxCheck()
     L1FieldValue B_L1;
     Double_t bbb, bbb_L1;
 
-    const int M         = 5;  // polinom order
-    const int N         = (M + 1) * (M + 2) / 2;
-    const L1Station& st = fpAlgo->GetParameters()->GetStation(ist);
+    const int M = 5;  // polinom order
+    const int N = (M + 1) * (M + 2) / 2;
+
     for (int i = 0; i < N; i++) {
       FSl.cx[i] = st.fieldSlice.cx[i][0];
       FSl.cy[i] = st.fieldSlice.cy[i][0];
@@ -1772,7 +1763,9 @@ void CbmL1::FieldIntegralCheck()
   TFile* fout        = new TFile("FieldApprox.root", "RECREATE");
   fout->cd();
 
-  FairField* MF = CbmKF::Instance()->GetMagneticField();
+  assert(FairRunAna::Instance());
+  FairField* MF = FairRunAna::Instance()->GetField();
+  assert(MF);
 
   int nPointsZ     = 1000;
   int nPointsPhi   = 100;
diff --git a/reco/L1/CbmL1ReadEvent.cxx b/reco/L1/CbmL1ReadEvent.cxx
index 76b504ea1cce40c9a83675394fbd2b0534560539..42810753fad53423f84c9e7cffd232622d525d7f 100644
--- a/reco/L1/CbmL1ReadEvent.cxx
+++ b/reco/L1/CbmL1ReadEvent.cxx
@@ -20,7 +20,6 @@
  */
 
 #include "CbmEvent.h"
-#include "CbmKF.h"
 #include "CbmL1.h"
 #include "CbmMCDataObject.h"
 #include "CbmMatch.h"
diff --git a/reco/L1/CbmL1TrackPar.h b/reco/L1/CbmL1TrackPar.h
index 6dd5cc7474188c84f2d36e6de3a01c17b86de206..9233e73b8fb0eb20e9c163e8a622f6e3a58e8b13 100644
--- a/reco/L1/CbmL1TrackPar.h
+++ b/reco/L1/CbmL1TrackPar.h
@@ -5,20 +5,25 @@
 #ifndef CbmL1TrackPar_H
 #define CbmL1TrackPar_H
 
-#include "CbmKFTrackInterface.h"
-
 #include "L1TrackPar.h"
 
-struct CbmL1TrackPar : public CbmKFTrackInterface {
+struct CbmL1TrackPar {
 public:
   CbmL1TrackPar() : chi2(0), NDF(0), mass(0), is_electron(0) {}
-  double* GetTrack() override { return T; }
-  double* GetCovMatrix() override { return C; }
-  double& GetRefChi2() override { return chi2; }
-  int& GetRefNDF() override { return NDF; }
-  double GetMass() const override { return mass; }
-  bool IsElectron() const override { return is_electron; }
+  double* GetTrack() { return T; }
+  double* GetCovMatrix() { return C; }
+  double& GetRefChi2() { return chi2; }
+  int& GetRefNDF() { return NDF; }
+  double GetMass() const { return mass; }
+  bool IsElectron() const { return is_electron; }
+
+  int GetNOfHits() { return (NDF - 5) / 2; }  /// Number of hits
 
+  int Id() const { return fId; };
+  void SetId(int id) { fId = id; };
+
+public:
+  int fId;
   double T[L1TrackPar::kNparTr];
   double C[L1TrackPar::kNparCov];
   double chi2;
diff --git a/reco/L1/CbmL1Util.cxx b/reco/L1/CbmL1Util.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..53bfe81db7aff44a9bc77212129468efb36d6a7c
--- /dev/null
+++ b/reco/L1/CbmL1Util.cxx
@@ -0,0 +1,46 @@
+/* Copyright (C) 2023 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
+   SPDX-License-Identifier: GPL-3.0-only
+   Authors: Sergey Gorbunov [committer] */
+
+#include "CbmL1Util.h"
+
+#include "FairTrackParam.h"
+
+namespace cbm::L1Util
+{
+
+  void CopyTC2TrackParam(FairTrackParam* par, Double_t T[], Double_t C[])
+  {
+    if (T) {
+      par->SetX(T[0]);
+      par->SetY(T[1]);
+      par->SetZ(T[5]);
+      par->SetTx(T[2]);
+      par->SetTy(T[3]);
+      par->SetQp(T[4]);
+    }
+    if (C) {
+      for (Int_t i = 0, iCov = 0; i < 5; i++)
+        for (Int_t j = 0; j <= i; j++, iCov++)
+          par->SetCovariance(i, j, C[iCov]);
+    }
+  }
+
+  void CopyTrackParam2TC(const FairTrackParam* par, Double_t T[], Double_t C[])
+  {
+    if (T) {
+      T[0] = par->GetX();
+      T[1] = par->GetY();
+      T[2] = par->GetTx();
+      T[3] = par->GetTy();
+      T[4] = par->GetQp();
+      T[5] = par->GetZ();
+    }
+    if (C) {
+      for (Int_t i = 0, iCov = 0; i < 5; i++)
+        for (Int_t j = 0; j <= i; j++, iCov++)
+          C[iCov] = par->GetCovariance(i, j);
+    }
+  }
+
+}  // namespace cbm::L1Util
diff --git a/reco/L1/CbmL1Util.h b/reco/L1/CbmL1Util.h
new file mode 100644
index 0000000000000000000000000000000000000000..75cc3fc09a225702b8db007525d5fe7783975c8c
--- /dev/null
+++ b/reco/L1/CbmL1Util.h
@@ -0,0 +1,28 @@
+/* Copyright (C) 2023 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
+   SPDX-License-Identifier: GPL-3.0-only
+   Authors: Sergey Gorbunov [committer] */
+
+#ifndef CbmL1Util_H
+#define CbmL1Util_H 1
+
+#include "Rtypes.h"
+
+class FairTrackParam;
+
+///
+/// Collection of useful utilites for CbmL1
+///
+namespace cbm::L1Util
+{
+
+  /// copy fair track param to arrays
+  // TODO: reorganize
+  void CopyTrackParam2TC(const FairTrackParam* par, Double_t T[], Double_t C[]);
+
+  /// copy arrays to fair track param
+  // TODO: reorganize
+  void CopyTC2TrackParam(FairTrackParam* par, Double_t T[], Double_t C[]);
+
+}  // namespace cbm::L1Util
+
+#endif
diff --git a/reco/L1/CbmL1Vtx.h b/reco/L1/CbmL1Vtx.h
index 288802829ee64960bf300103bc02ff4292cf54c3..6b52c024c7a7e122c443aaebb36becba6b2d767d 100644
--- a/reco/L1/CbmL1Vtx.h
+++ b/reco/L1/CbmL1Vtx.h
@@ -21,9 +21,8 @@
 #ifndef CbmL1Vtx_H
 #define CbmL1Vtx_H
 
-#include "CbmKFVertexInterface.h"
 
-struct CbmL1Vtx : public CbmKFVertexInterface {
+struct CbmL1Vtx {
   CbmL1Vtx()
     : MC_mass(0)
     , MC_q(0)
@@ -52,14 +51,14 @@ struct CbmL1Vtx : public CbmKFVertexInterface {
 
   double mass, mass_err;
 
-  Double_t& GetRefX() { return x; }
-  Double_t& GetRefY() { return y; }
-  Double_t& GetRefZ() { return z; }
-  Double_t* GetCovMatrix() { return C; }
-  Double_t& GetRefChi2() { return chi2; }
-  Int_t& GetRefNDF() { return NDF; }
-  Double_t& GetRefMass() { return mass; }
-  Double_t& GetRefMassError() { return mass_err; }
+  double& GetRefX() { return x; }
+  double& GetRefY() { return y; }
+  double& GetRefZ() { return z; }
+  double* GetCovMatrix() { return C; }
+  double& GetRefChi2() { return chi2; }
+  int& GetRefNDF() { return NDF; }
+  double& GetRefMass() { return mass; }
+  double& GetRefMassError() { return mass_err; }
 };
 
 #endif
diff --git a/reco/KF/CbmTrackingDetectorInterfaceInit.cxx b/reco/L1/CbmTrackingDetectorInterfaceInit.cxx
similarity index 100%
rename from reco/KF/CbmTrackingDetectorInterfaceInit.cxx
rename to reco/L1/CbmTrackingDetectorInterfaceInit.cxx
diff --git a/reco/KF/CbmTrackingDetectorInterfaceInit.h b/reco/L1/CbmTrackingDetectorInterfaceInit.h
similarity index 100%
rename from reco/KF/CbmTrackingDetectorInterfaceInit.h
rename to reco/L1/CbmTrackingDetectorInterfaceInit.h
diff --git a/reco/L1/L1Algo/L1Field.cxx b/reco/L1/L1Algo/L1Field.cxx
index 2dbaba5840a2a553c3e958ef1fa32f9c75479367..57172997aa079b9652d03b990d4054a2f5ccda31 100644
--- a/reco/L1/L1Algo/L1Field.cxx
+++ b/reco/L1/L1Algo/L1Field.cxx
@@ -4,7 +4,8 @@
 
 #include "L1Field.h"
 
-#include "CbmKF.h"
+#include "FairField.h"
+#include "FairRunAna.h"
 
 #include <iomanip>
 #include <iostream>
@@ -179,12 +180,12 @@ void L1FieldRegion::CheckConsistency() const
 void L1FieldRegion::Get(const fvec& x, const fvec& y, const fvec& z, fvec* B) const
 {
   if (fgkForceUseOfOriginalField || fUseOriginalField) {
+    // TODO: replace with functional object
+    assert(FairRunAna::Instance());
     for (size_t i = 0; i < fvec::size(); i++) {
       double inPos[3] = {x[i], y[i], z[i]};
-      double outB[3];
-      assert(CbmKF::Instance());
-      assert(CbmKF::Instance()->GetMagneticField());
-      CbmKF::Instance()->GetMagneticField()->GetFieldValue(inPos, outB);  // TODO: replace with functional object
+      double outB[3]  = {0., 0., 0.};
+      if (FairRunAna::Instance()->GetField()) { FairRunAna::Instance()->GetField()->GetFieldValue(inPos, outB); }
       B[0][i] = outB[0];
       B[1][i] = outB[1];
       B[2][i] = outB[2];
diff --git a/reco/L1/L1Algo/utils/L1AlgoDraw.cxx b/reco/L1/L1Algo/utils/L1AlgoDraw.cxx
index 67e72ae7c9b550dd2b4c5e5d9ff76983fa493695..5d4098beaf76faff879f3c95466e7385677475af 100644
--- a/reco/L1/L1Algo/utils/L1AlgoDraw.cxx
+++ b/reco/L1/L1Algo/utils/L1AlgoDraw.cxx
@@ -4,7 +4,6 @@
 
 #include "L1AlgoDraw.h"
 
-#include "CbmKF.h"
 #include "CbmL1.h"
 
 #include "TApplication.h"
@@ -165,8 +164,9 @@ void L1AlgoDraw::DrawMCTracks()
       if (Zlast < par[5]) step = -step;
       while (fabs(par[5] - Zlast) > fabs(step)) {
         double znxt = par[5] + step;
-        CbmKF::Instance()->Propagate(par1, 0, znxt, par1[4]);
-        CbmKF::Instance()->Propagate(par, 0, znxt, par[4]);
+        //TODO: replace this part with some L1 utility
+        // CbmKF::Instance()->Propagate(par1, 0, znxt, par1[4]);
+        // CbmKF::Instance()->Propagate(par, 0, znxt, par[4]);
         double w  = fabs(znxt - Zfrst);
         double w1 = fabs(znxt - Zlast);
         if (w + w1 < 1.e-3) {
diff --git a/reco/L1/L1LinkDef.h b/reco/L1/L1LinkDef.h
index 7ac1d5681782fce84e35846fc44ac26cc66b39e3..53245554a80a3c90ef27ce0bd7bb08df430d2e15 100644
--- a/reco/L1/L1LinkDef.h
+++ b/reco/L1/L1LinkDef.h
@@ -10,20 +10,15 @@
 #pragma link off all classes;
 #pragma link off all functions;
 
+#pragma link C++ class CbmTrackingDetectorInterfaceInit + ;
 #pragma link C++ class CbmL1 + ;
 #pragma link C++ class CbmL1StsTrackFinder + ;
-//#pragma link C++ class  CbmL1TrdTrackFinderSts+;
-#pragma link C++ class CbmL1TrackMerger + ;
-#pragma link C++ class CbmL1TofMerger + ;
 //#pragma link C++ class  CbmL1MuchFinder+;
 //#pragma link C++ class  CbmL1MuchHit+;
 //#pragma link C++ class  CbmL1MuchTrack+;
 //#pragma link C++ class  CbmL1MuchFinderQa+;
-#pragma link C++ class CbmL1TrdTracklet + ;
-#pragma link C++ class CbmL1TrdTracklet4 + ;
 #pragma link C++ class CbmL1GlobalTrackFinder + ;
 #pragma link C++ class CbmL1GlobalFindTracksEvents + ;
-//#pragma link C++ class  CbmL1CATrdTrackFinderSA+;
 //#pragma link C++ class  CbmL1SttHit+;
 //#pragma link C++ class  CbmL1SttTrackFinder+;
 //#pragma link C++ class  CbmL1SttTrack+;
diff --git a/reco/L1/OffLineInterface/CbmL1GlobalTrackFinder.cxx b/reco/L1/OffLineInterface/CbmL1GlobalTrackFinder.cxx
index 27f0629d7ea56f7812714cbc2018d11a291b8d86..554588137708607a615ce549fd520f50370ed564 100644
--- a/reco/L1/OffLineInterface/CbmL1GlobalTrackFinder.cxx
+++ b/reco/L1/OffLineInterface/CbmL1GlobalTrackFinder.cxx
@@ -21,7 +21,7 @@
 
 #include "CbmEvent.h"
 #include "CbmGlobalTrack.h"
-#include "CbmKFMath.h"
+#include "CbmL1Util.h"
 #include "CbmMuchTrack.h"
 #include "CbmStsHit.h"
 #include "CbmStsTrack.h"
@@ -92,8 +92,8 @@ Int_t CbmL1GlobalTrackFinder::CopyL1Tracks(CbmEvent* event)
     CbmGlobalTrack* t = L1_DYNAMIC_CAST<CbmGlobalTrack*>(fGlobalTracks->At(globalTrackIndex++));
     t->SetFlag(0);
     FairTrackParam fpar(*t->GetParamFirst()), lpar(*t->GetParamLast());
-    CbmKFMath::CopyTC2TrackParam(&fpar, T.T, T.C);
-    CbmKFMath::CopyTC2TrackParam(&lpar, T.TLast, T.CLast);
+    cbm::L1Util::CopyTC2TrackParam(&fpar, T.T, T.C);
+    cbm::L1Util::CopyTC2TrackParam(&lpar, T.TLast, T.CLast);
     t->SetParamFirst(&fpar);
     t->SetParamLast(&lpar);
     t->SetChi2(T.chi2);
@@ -177,8 +177,8 @@ void CbmL1GlobalTrackFinder::CbmL1TrackToCbmTrack(CbmL1Track l1track, CbmTrack*
   //track->SetFlag(T->GetQuality());//???
 
   FairTrackParam fpar(*track->GetParamFirst()), lpar(*track->GetParamLast());
-  CbmKFMath::CopyTC2TrackParam(&fpar, T->T, T->C);
-  CbmKFMath::CopyTC2TrackParam(&lpar, T->TLast, T->CLast);
+  cbm::L1Util::CopyTC2TrackParam(&fpar, T->T, T->C);
+  cbm::L1Util::CopyTC2TrackParam(&lpar, T->TLast, T->CLast);
 }
 // -------------------------------------------------------------------------
 
@@ -215,8 +215,8 @@ void CbmL1GlobalTrackFinder::CbmL1TrackToCbmStsTrack(CbmL1Track l1track, CbmStsT
   track->SetLastHitTimeError(T->CLast[20]);
 
   FairTrackParam fpar(*track->GetParamFirst()), lpar(*track->GetParamLast());
-  CbmKFMath::CopyTC2TrackParam(&fpar, T->T, T->C);
-  CbmKFMath::CopyTC2TrackParam(&lpar, T->TLast, T->CLast);
+  cbm::L1Util::CopyTC2TrackParam(&fpar, T->T, T->C);
+  cbm::L1Util::CopyTC2TrackParam(&lpar, T->TLast, T->CLast);
 }
 // -------------------------------------------------------------------------
 
@@ -243,8 +243,8 @@ void CbmL1GlobalTrackFinder::CbmL1TrackToCbmMuchTrack(CbmL1Track l1track, CbmMuc
   //track->SetFlag(T->GetQuality());//???
 
   FairTrackParam fpar(*track->GetParamFirst()), lpar(*track->GetParamLast());
-  CbmKFMath::CopyTC2TrackParam(&fpar, T->T, T->C);
-  CbmKFMath::CopyTC2TrackParam(&lpar, T->TLast, T->CLast);
+  cbm::L1Util::CopyTC2TrackParam(&fpar, T->T, T->C);
+  cbm::L1Util::CopyTC2TrackParam(&lpar, T->TLast, T->CLast);
 }
 // -------------------------------------------------------------------------
 
@@ -272,8 +272,8 @@ void CbmL1GlobalTrackFinder::CbmL1TrackToCbmTrdTrack(CbmL1Track l1track, CbmTrdT
   //track->SetFlag(T->GetQuality());//???
 
   FairTrackParam fpar(*track->GetParamFirst()), lpar(*track->GetParamLast());
-  CbmKFMath::CopyTC2TrackParam(&fpar, T->Tpv, T->Cpv);
-  CbmKFMath::CopyTC2TrackParam(&lpar, T->TLast, T->CLast);
+  cbm::L1Util::CopyTC2TrackParam(&fpar, T->Tpv, T->Cpv);
+  cbm::L1Util::CopyTC2TrackParam(&lpar, T->TLast, T->CLast);
 }
 // -------------------------------------------------------------------------
 
@@ -300,8 +300,8 @@ void CbmL1GlobalTrackFinder::CbmL1TrackToCbmTofTrack(CbmL1Track l1track, CbmTofT
   //track->SetFlag(T->GetQuality());//???
 
   //FairTrackParam fpar(*track->GetParamFirst()), lpar(*track->GetParamLast());
-  //CbmKFMath::CopyTC2TrackParam(&fpar, T->T, T->C);
-  //CbmKFMath::CopyTC2TrackParam(&lpar, T->TLast, T->CLast);
+  //CbmL1Util::CopyTC2TrackParam(&fpar, T->T, T->C);
+  //CbmL1Util::CopyTC2TrackParam(&lpar, T->TLast, T->CLast);
 }
 // -------------------------------------------------------------------------
 
diff --git a/reco/L1/OffLineInterface/CbmL1StsTrackFinder.cxx b/reco/L1/OffLineInterface/CbmL1StsTrackFinder.cxx
index d61263b4a1697abff27f6c885573dcc9aceb55ed..dcf6a6193560a54211205ab6aaa2d0e1d080a11b 100644
--- a/reco/L1/OffLineInterface/CbmL1StsTrackFinder.cxx
+++ b/reco/L1/OffLineInterface/CbmL1StsTrackFinder.cxx
@@ -20,7 +20,7 @@
 #include "CbmL1StsTrackFinder.h"
 
 #include "CbmEvent.h"
-#include "CbmKFMath.h"
+#include "CbmL1Util.h"
 #include "CbmStsHit.h"
 #include "CbmStsTrack.h"
 
@@ -77,8 +77,8 @@ Int_t CbmL1StsTrackFinder::CopyL1Tracks(CbmEvent* event)
     CbmStsTrack* t = L1_DYNAMIC_CAST<CbmStsTrack*>(fTracks->At(trackIndex++));
     t->SetFlag(0);
     FairTrackParam fpar(*t->GetParamFirst()), lpar(*t->GetParamLast());
-    CbmKFMath::CopyTC2TrackParam(&fpar, T.T, T.C);
-    CbmKFMath::CopyTC2TrackParam(&lpar, T.TLast, T.CLast);
+    cbm::L1Util::CopyTC2TrackParam(&fpar, T.T, T.C);
+    cbm::L1Util::CopyTC2TrackParam(&lpar, T.TLast, T.CLast);
     t->SetParamFirst(&fpar);
     t->SetParamLast(&lpar);
     t->SetChiSq(T.chi2);
diff --git a/reco/alignment/CMakeLists.txt b/reco/alignment/CMakeLists.txt
index c2e9448ef00638a41d036b2dee1efd15d139dae2..136aa977142cff387f1bd9f1a92915a6282f32c7 100644
--- a/reco/alignment/CMakeLists.txt
+++ b/reco/alignment/CMakeLists.txt
@@ -17,7 +17,7 @@ set(PUBLIC_DEPENDENCIES
 )
 
 set(PRIVATE_DEPENDENCIES
-  L1
+  KF
   bba::library
   CbmStsBase
 )
diff --git a/reco/offline/steer/CMakeLists.txt b/reco/offline/steer/CMakeLists.txt
index 597907cb4e5f87e1d10b4cec9d165db90d72a9ad..044afdd09e4371f64a65c0bd2e1db1fe2d27f83e 100644
--- a/reco/offline/steer/CMakeLists.txt
+++ b/reco/offline/steer/CMakeLists.txt
@@ -43,6 +43,7 @@ set(PRIVATE_DEPENDENCIES
   CbmTrdReco
   CbmSimSteer
   L1
+  KF
   Algo
   )