diff --git a/Framework/Cascade/Cascade.h b/Framework/Cascade/Cascade.h
index 9a0ce724302d1665dc539a7265be72d79286eb57..90df44a82e23d15fac2f22cdb233f943ac552bc2 100644
--- a/Framework/Cascade/Cascade.h
+++ b/Framework/Cascade/Cascade.h
@@ -260,15 +260,17 @@ namespace corsika::cascade {
   		// Second Movement
   		position = position + directionAfter * min_distance / 2;
       auto distance = position - vParticle.GetPosition();
-      //distance.norm() != min_distance for distance_interact, distance_decay if q != 0
+      //distance.norm() != min_distance if q != 0
       //small error can be neglected
+      if (distance.norm() != 0_m) {
       velocity = distance.normalized() * velocity.norm();
+      } //no velocity update for very small steps
       
       // here the particle is actually moved along the trajectory to new position:
       // std::visit(setup::ParticleUpdate<Particle>{vParticle}, step);
-      vParticle.SetMomentum(directionAfter.normalized() * vParticle.GetMomentum().GetNorm());
+      vParticle.SetMomentum(directionAfter.normalized() * vParticle.GetMomentum().norm());
       geometry::Line line(vParticle.GetPosition(), velocity);
-      geometry::Trajectory<geometry::Line> stepNew(line, distance.norm() / velocity.GetNorm());
+      geometry::Trajectory<geometry::Line> stepNew(line, distance.norm() / velocity.norm());
       vParticle.SetPosition(position);
       vParticle.SetTime(vParticle.GetTime() + distance.norm() / units::constants::c);
       std::cout << "New Position: " << vParticle.GetPosition().GetCoordinates() << std::endl;
diff --git a/Processes/TrackingLine/TrackingLine.h b/Processes/TrackingLine/TrackingLine.h
index c16dd44b17e6f0b861d9eaa8903031e33026f06c..fd89415abac9318d5979e596f117e8915c550d28 100644
--- a/Processes/TrackingLine/TrackingLine.h
+++ b/Processes/TrackingLine/TrackingLine.h
@@ -121,6 +121,7 @@ namespace corsika::process {
               std::cout << "no intersection (1)!" << std::endl;
               // what to do when this happens? (very unlikely)
             }
+            delete [] solutions;
 		
   		      // First Movement
   		      // assuming magnetic field does not change during movement
@@ -181,6 +182,7 @@ namespace corsika::process {
               std::cout << "no intersection (2)!" << std::endl;
               // what to do when this happens? (very unlikely)
             }
+            delete [] solutions;
 		
   		      // First Movement
   		      // assuming magnetic field does not change during movement