diff --git a/Service/TrackSystemSvc/CMakeLists.txt b/Service/TrackSystemSvc/CMakeLists.txt
index d12bfb8758945e3b5b43083f23de9245b6af2afe..5d49ae93e9e0bf51c2fb2b51f469c8b74336b63f 100644
--- a/Service/TrackSystemSvc/CMakeLists.txt
+++ b/Service/TrackSystemSvc/CMakeLists.txt
@@ -1,4 +1,4 @@
-gaudi_subdir(TrackSystemSvc v0r0)
+# gaudi_subdir(TrackSystemSvc v0r0)
 
 find_package(CLHEP REQUIRED;CONFIG)
 find_package(ROOT 6.14 REQUIRED COMPONENTS Matrix Physics)
@@ -9,26 +9,32 @@ find_package(EDM4HEP REQUIRED)
 #find_package(KalDet REQUIRED)
 find_package(DD4hep COMPONENTS DDCore DDRec REQUIRED)
 
-gaudi_depends_on_subdirs(Service/GearSvc Detector/DetInterface Utilities/DataHelper Utilities/KalTest Utilities/KalDet)
+# gaudi_depends_on_subdirs(Service/GearSvc Detector/DetInterface Utilities/DataHelper Utilities/KalTest Utilities/KalDet)
 
 set(TrackSystemSvc_srcs src/*.cpp)
 set(TrackSystemSvcLib_srcs src/*.cc)
 
-gaudi_install_headers(TrackSystemSvc)
+# gaudi_install_headers(TrackSystemSvc)
 
 #message( "${INCLUDE_DIRS}" )
 #message( "${LINK_LIBRARIES}" )
 
-gaudi_add_library(TrackSystemSvcLib ${TrackSystemSvcLib_srcs}
-    PUBLIC_HEADERS TrackSystemSvc
-    INCLUDE_DIRS GaudiKernel ROOT ${CLHEP_INCLUDE_DIR} gear ${LCIO_INCLUDE_DIRS} ${EDM4HEP_INCLUDE_DIRS}
-    LINK_LIBRARIES DataHelperLib KalTestLib KalDetLib GaudiKernel ROOT ${CLHEP_LIBRARIES} ${GEAR_LIBRARIES} ${LCIO_LIBRARIES}
-     -Wl,--no-as-needed
-     EDM4HEP::edm4hep EDM4HEP::edm4hepDict
-     -Wl,--as-needed
+gaudi_add_library(TrackSystemSvcLib
+                  SOURCES ${TrackSystemSvcLib_srcs}
+                  LINK DataHelperLib 
+                       KalTestLib 
+                       KalDetLib 
+                       Gaudi::GaudiKernel 
+                       ${ROOT_LIBRARIES}
+                       ${CLHEP_LIBRARIES} 
+                       ${GEAR_LIBRARIES}
+                       ${LCIO_LIBRARIES}
+                       EDM4HEP::edm4hep EDM4HEP::edm4hepDict
 )
 
-gaudi_add_module(TrackSystemSvc ${TrackSystemSvc_srcs}
-				INCLUDE_DIRS GaudiKernel gear 
-				LINK_LIBRARIES TrackSystemSvcLib GaudiKernel ${GEAR_LIBRARIES}
+gaudi_add_module(TrackSystemSvc 
+                 SOURCES ${TrackSystemSvc_srcs}
+		 LINK TrackSystemSvcLib 
+                      Gaudi::GaudiKernel
+                      ${GEAR_LIBRARIES}
 )
diff --git a/Utilities/KiTrack/CMakeLists.txt b/Utilities/KiTrack/CMakeLists.txt
index 7a20e00dc7f34a62d6a97bad8e0c4886d6db62a9..4be93398507ceda8e715b7f0aeed65bc4c80d8d3 100644
--- a/Utilities/KiTrack/CMakeLists.txt
+++ b/Utilities/KiTrack/CMakeLists.txt
@@ -1,4 +1,3 @@
-gaudi_subdir(KiTrack v0r0)
 
 find_package(CLHEP REQUIRED;CONFIG)
 find_package(ROOT REQUIRED)
@@ -8,15 +7,72 @@ find_package(EDM4HEP REQUIRED)
 find_package(LCIO REQUIRED)
 find_package(DD4hep COMPONENTS DDCore DDRec REQUIRED)
 
-gaudi_depends_on_subdirs(Service/TrackSystemSvc Utilities/DataHelper)
+# gaudi_depends_on_subdirs(Service/TrackSystemSvc Utilities/DataHelper)
 
-set(KiTrackLib_srcs src/KiTrack/*.cc src/Criteria/*.cc src/ILDImpl/*.cc src/Tools/*.cc)
+set(KiTrackLib_srcs 
+    src/KiTrack/Automaton.cc 
+    src/KiTrack/HopfieldNeuralNet.cc 
+    src/KiTrack/IHit.cc 
+    src/KiTrack/SegmentBuilder.cc 
+    src/KiTrack/Segment.cc 
 
-#gaudi_install_headers(src)
-include_directories(src)
+    src/Criteria/Crit2_DeltaPhi.cc
+    src/Criteria/Crit2_DeltaPhi_MV.cc
+    src/Criteria/Crit2_DeltaRho.cc
+    src/Criteria/Crit2_DeltaTheta_MV.cc
+    src/Criteria/Crit2_Distance_MV.cc
+    src/Criteria/Crit2_HelixWithIP.cc
+    src/Criteria/Crit2_RZRatio.cc
+    src/Criteria/Crit2_StraightTrackRatio.cc
+    src/Criteria/Crit3_2DAngle.cc
+    src/Criteria/Crit3_2DAngleTimesR.cc
+    src/Criteria/Crit3_3DAngle.cc
+    src/Criteria/Crit3_3DAngleTimesR.cc
+    src/Criteria/Crit3_ChangeRZRatio.cc
+    src/Criteria/Crit3_IPCircleDist.cc
+    src/Criteria/Crit3_IPCircleDistTimesR.cc
+    src/Criteria/Crit3_NoZigZag_MV.cc
+    src/Criteria/Crit3_PT.cc
+    src/Criteria/Crit3_PT_MV.cc
+    src/Criteria/Crit4_2DAngleChange.cc
+    src/Criteria/Crit4_3DAngleChange.cc
+    src/Criteria/Crit4_3DAngleChangeNormed.cc
+    src/Criteria/Crit4_DistOfCircleCenters.cc
+    src/Criteria/Crit4_DistToExtrapolation.cc
+    src/Criteria/Crit4_NoZigZag.cc
+    src/Criteria/Crit4_PhiZRatioChange.cc
+    src/Criteria/Crit4_RChange.cc
+    src/Criteria/Criteria.cc
+    src/Criteria/SimpleCircle.cc
 
-gaudi_add_library(KiTrackLib ${KiTrackLib_srcs}
-    PUBLIC_HEADERS KiTrack 
-    LINK_LIBRARIES DataHelperLib TrackSystemSvcLib ROOT ${CLHEP_LIBRARIES} GSL EDM4HEP::edm4hep LCIO
-    #              DD4hep
+
+    src/ILDImpl/FTDHit01.cc
+    src/ILDImpl/FTDHitSimple.cc
+    src/ILDImpl/FTDNeighborPetalSecCon.cc
+    src/ILDImpl/FTDSectorConnector.cc
+    src/ILDImpl/FTDTrack.cc
+    src/ILDImpl/MiniVector.cc
+    src/ILDImpl/MiniVectorHit01.cc
+    src/ILDImpl/SectorSystemFTD.cc
+    src/ILDImpl/SectorSystemVXD.cc
+    src/ILDImpl/VXDHit01.cc
+    src/ILDImpl/VXDHitSimple.cc
+    src/ILDImpl/VXDSectorConnector.cc
+    src/ILDImpl/VXDTrack.cc
+
+    src/Tools/Fitter.cc
+    src/Tools/FTDHelixFitter.cc
+    src/Tools/KiTrackMarlinTools.cc
+    src/Tools/Timer.cc
+)
+
+gaudi_add_library(KiTrackLib 
+                  SOURCES ${KiTrackLib_srcs}
+                  LINK DataHelperLib 
+                       TrackSystemSvcLib 
+                       ${ROOT_LIBRARIES}
+                       ${CLHEP_LIBRARIES}
+                       ${GSL_LIBRARIES}
+                       EDM4HEP::edm4hep
+                       ${LCIO_LIBRARIES}
 )
diff --git a/Utilities/KiTrack/src/ILDImpl/#FTDTrack.cc# b/Utilities/KiTrack/src/ILDImpl/#FTDTrack.cc#
deleted file mode 100644
index 6d928c374e857ebcc3f08f657a8f873024955dbb..0000000000000000000000000000000000000000
--- a/Utilities/KiTrack/src/ILDImpl/#FTDTrack.cc#
+++ /dev/null
@@ -1,132 +0,0 @@
-#include "ILDImpl/FTDTrack.h"
-
-
-#include <algorithm>
-#include <math.h>
-
-//#include "UTIL/LCTrackerConf.h"
-
-// Root, for calculating the chi2 probability. 
-#include "Math/ProbFunc.h"
-
-
-
-using namespace KiTrackMarlin;
-
-/** @return if the absolute z value of hit a is bigger than that of hit b */
-bool compare_IHit_z( IHit* a, IHit* b ){
-   
-   return ( fabs( a->getZ() ) < fabs( b->getZ() ) ); //compare their z values
-   
-}
-
-
-
-FTDTrack::FTDTrack( MarlinTrk::IMarlinTrkSystem* trkSystem ){
-   
-   _trkSystem = trkSystem;
-   _chi2Prob = 0.;
- 
-   _lcioTrack = new edm4hep::Track();
-   
-   
-}
-
-FTDTrack::FTDTrack( std::vector< IFTDHit* > hits , MarlinTrk::IMarlinTrkSystem* trkSystem ){
-   
-   
-   _trkSystem = trkSystem;
-   _chi2Prob = 0.;
-   
-   _lcioTrack = new edm4hep::Track();
-   
-   for( unsigned i=0; i < hits.size(); i++ ){
-      
-      addHit( hits[i] );
-      
-      
-   }
-   
-}
-
-
-FTDTrack::FTDTrack( const FTDTrack& f ){
-
-   //make a new copied lcio track
-  _lcioTrack = new edm4hep::Track( *f._lcioTrack );
-   
-   
-   _hits = f._hits;
-   _chi2Prob = f._chi2Prob;
-   _trkSystem = f._trkSystem;
-
-}
-
-FTDTrack & FTDTrack::operator= (const FTDTrack & f){
-   
-   if (this == &f) return *this;   //protect against self assignment
-   
-   //make a new copied lcio track
-   _lcioTrack = new edm4hep::Track( *f._lcioTrack );
-   
-   
-   _hits = f._hits;
-   _chi2Prob = f._chi2Prob;
-   _trkSystem = f._trkSystem;
-   
-   return *this;
-   
-}
-
-
-
-void FTDTrack::addHit( IFTDHit* hit ){
-  if ( hit != NULL ){
-    _hits.push_back( hit );
-    // and sort the track again
-    sort( _hits.begin(), _hits.end(), compare_IHit_z );
-    _lcioTrack->addToTrackerHits( *hit->getTrackerHit() );
-  }
-}
-
-
-
-
-
-void FTDTrack::fit() {
-   
-   
-   Fitter fitter( _lcioTrack , _trkSystem );
-   
-   
-   _lcioTrack->setChi2( fitter.getChi2( 1/*by fucd AtIP=1 in LCIO, changed to CepC rule in future: lcio::TrackState::AtIP*/ ) );
-   _lcioTrack->setNdf( fitter.getNdf( 1/*lcio::TrackState::AtIP*/ ) );
-   _chi2Prob = fitter.getChi2Prob( 1/*lcio::TrackState::AtIP*/ );
-   
-   edm4hep::TrackState trkState( *fitter.getTrackState( 1/*lcio::TrackState::AtIP*/ ) ) ;
-   trkState.location = 1/*lcio::TrackState::AtIP*/ ;
-   _lcioTrack->addToTrackStates( trkState );
-   
-   
-}
-
-
-double FTDTrack::getQI() const{
-  
-   
-   double QI = _chi2Prob;
-   
-   // make sure QI is between 0 and 1
-   if (QI > 1. ) QI = 1.;
-   if (QI < 0. ) QI = 0.;
-   
-   return QI;
-   
-}
-
-
-
-
-
-
-