diff --git a/Documentation/Examples/cascade_example.cc b/Documentation/Examples/cascade_example.cc
index 35115b31b03e6053f7d04d3236078412c003f110..34b55476d9a4f869bd9a29c51688d0f49e680c37 100644
--- a/Documentation/Examples/cascade_example.cc
+++ b/Documentation/Examples/cascade_example.cc
@@ -12,6 +12,7 @@
 #include <corsika/cascade/Cascade.h>
 #include <corsika/process/ProcessSequence.h>
 #include <corsika/process/stack_inspector/StackInspector.h>
+#include <corsika/process/tracking_line/TrackingLine.h>
 
 #include <corsika/setup/SetupStack.h>
 #include <corsika/setup/SetupTrajectory.h>
@@ -40,7 +41,7 @@ public:
   ProcessSplit() {}
 
   template <typename Particle>
-  double MinStepLength(Particle& p) const {
+  double MinStepLength(Particle& p, setup::Trajectory&) const {
 
     // beam particles for sibyll : 1, 2, 3 for p, pi, k
     // read from cross section code table
@@ -91,7 +92,7 @@ public:
     return next_step;
   }
 
-  template <typename Particle, typename Trajectory, typename Stack>
+  template <typename Particle, typename Stack>
   EProcessReturn DoContinuous(Particle&, Trajectory&, Stack&) const {
     // corsika::utls::ignore(p);
     return EProcessReturn::eOk;
@@ -237,12 +238,13 @@ double s_rndm_(int&) {
 
 int main() {
 
-  stack_inspector::StackInspector<setup::Stack, setup::Trajectory> p0(true);
+  tracking_line::TrackingLine<setup::Stack> tracking;
+  stack_inspector::StackInspector<setup::Stack> p0(true);
   ProcessSplit p1;
   const auto sequence = p0 + p1;
   setup::Stack stack;
 
-  corsika::cascade::Cascade EAS(sequence, stack);
+  corsika::cascade::Cascade EAS(tracking, sequence, stack);
 
   stack.Clear();
   auto particle = stack.NewParticle();
diff --git a/Framework/Cascade/testCascade.cc b/Framework/Cascade/testCascade.cc
index 254e08a8ea2a3aab7a10af76100278e526b67e14..ad4daa2e4df0a554727f1a0584cc88a3af3cff72 100644
--- a/Framework/Cascade/testCascade.cc
+++ b/Framework/Cascade/testCascade.cc
@@ -13,6 +13,7 @@
 
 #include <corsika/process/ProcessSequence.h>
 #include <corsika/process/stack_inspector/StackInspector.h>
+#include <corsika/process/tracking_line/TrackingLine.h>
 
 #include <corsika/stack/super_stupid/SuperStupidStack.h>
 
@@ -72,26 +73,10 @@ public:
 private:
 };
 
-template <typename Stack>
-class NewtonTracking { // naja.. not yet
-  typedef typename Stack::ParticleType Particle;
-
-public:
-  void Init() {}
-  corsika::setup::Trajectory GetTrack(Particle& p) {
-    corsika::geometry::Vector<SpeedType::dimension_type> v = p.GetDirection();
-    corsika::geometry::Line traj(p.GetPosition(), v);
-    {
-      CoordinateSystem& rootCS = RootCoordinateSystem::GetInstance().GetRootCS();
-      cout << v.GetComponents(rootCS) << endl;
-    }
-    return corsika::geometry::Trajectory<corsika::geometry::Line>(traj, 100_ns);
-  }
-};
 
 TEST_CASE("Cascade", "[Cascade]") {
 
-  NewtonTracking<setup::Stack> tracking;
+  tracking_line::TrackingLine<setup::Stack> tracking;
 
   stack_inspector::StackInspector<setup::Stack> p0(true);
   ProcessSplit p1;
@@ -108,7 +93,7 @@ TEST_CASE("Cascade", "[Cascade]") {
   particle.SetEnergy(E0);
   particle.SetPosition(Point(rootCS, {0_m, 0_m, 10_km}));
   particle.SetMomentum(
-      corsika::stack::super_stupid::MomentumVector(rootCS, {0_GeV, 0_GeV, -1_MeV}));
+		       corsika::stack::super_stupid::MomentumVector(rootCS, {0*newton*second, 0*newton*second, -1*newton*second}));
   EAS.Init();
   EAS.Run();
 
diff --git a/Processes/StackInspector/StackInspector.h b/Processes/StackInspector/StackInspector.h
index 2469f83387c0b08044890ca1babfc4b2c454f8b6..e40517499d7c07b984c5d9b30caac469269cf649 100644
--- a/Processes/StackInspector/StackInspector.h
+++ b/Processes/StackInspector/StackInspector.h
@@ -16,9 +16,6 @@
 
 #include <corsika/setup/SetupTrajectory.h>
 
-// namespace corsika::setup {
-// class BaseTrajectory;
-//}
 
 namespace corsika::process {