diff --git a/corsika/detail/modules/writers/EnergyLossWriter.inl b/corsika/detail/modules/writers/EnergyLossWriter.inl
index 379164cd5ac9570c337158f225bded1723c0b026..25cf99ecf231e0b1a8bc61088a09ae81705b9d46 100644
--- a/corsika/detail/modules/writers/EnergyLossWriter.inl
+++ b/corsika/detail/modules/writers/EnergyLossWriter.inl
@@ -82,6 +82,7 @@ namespace corsika {
         deltaX / 1_g * square(1_cm));
 
     if (deltaX < dX_threshold_) {
+      CORSIKA_LOGGER_TRACE(TOutput::getLogger(), "Point-like dE");
       this->write(track.getPosition(0), PID, dE);
       return;
     }
diff --git a/corsika/detail/modules/writers/LongitudinalWriter.inl b/corsika/detail/modules/writers/LongitudinalWriter.inl
index 5c8f8cd4420fe7402fb3b5241654900c7d304aae..1095fcdb021d6d78b2aacb51bcda519ee820dfd6 100644
--- a/corsika/detail/modules/writers/LongitudinalWriter.inl
+++ b/corsika/detail/modules/writers/LongitudinalWriter.inl
@@ -69,6 +69,11 @@ namespace corsika {
     int const binStart = std::ceil(grammageStart / dX_);
     int const binEnd = std::floor(grammageEnd / dX_);
 
+    CORSIKA_LOGGER_TRACE(TOutput::getLogger(),
+                         "grammageStart={} End={} binStart={}, end={}",
+                         grammageStart / 1_g * square(1_cm),
+                         grammageEnd / 1_g * square(1_cm), binStart, binEnd);
+
     for (int bin = binStart; bin <= binEnd; ++bin) {
       if (pid == Code::Photon) {
         profile_.at(bin)[static_cast<int>(number_profile::ProfileIndex::Photon)] +=
diff --git a/corsika/detail/modules/writers/ParticleWriterParquet.inl b/corsika/detail/modules/writers/ParticleWriterParquet.inl
index 74e8b45411b3c90f563d16baf3724f1787182cb0..4c6a49adadc103d38e2dbf5ecd278fcf262b189f 100644
--- a/corsika/detail/modules/writers/ParticleWriterParquet.inl
+++ b/corsika/detail/modules/writers/ParticleWriterParquet.inl
@@ -83,21 +83,6 @@ namespace corsika {
     }
   }
 
-  inline void ParticleWriterParquet::write(unsigned int const A, unsigned int const Z,
-                                           HEPEnergyType const& energy,
-                                           LengthType const& x, LengthType const& y,
-                                           LengthType const& z, double const weight) {
-    // write the next row - we must write `shower_` first.
-    *(output_.getWriter()) << showerId_ << static_cast<int>(get_PDG(A, Z))
-                           << static_cast<float>(energy / 1_GeV)
-                           << static_cast<float>(x / 1_m) << static_cast<float>(y / 1_m)
-                           << static_cast<float>(z / 1_m) << static_cast<float>(weight)
-                           << parquet::EndRow;
-    totalEnergy_ += energy;
-
-    ++countHadrons_;
-  }
-
   /**
    * Return collected library-level summary for output.
    */
diff --git a/corsika/modules/writers/ParticleWriterParquet.hpp b/corsika/modules/writers/ParticleWriterParquet.hpp
index df4ee482b287a875913efe19020cd75e8d315521..12451f4eddbcb55e4e14ca5a1cc21a9e124b9844 100644
--- a/corsika/modules/writers/ParticleWriterParquet.hpp
+++ b/corsika/modules/writers/ParticleWriterParquet.hpp
@@ -53,14 +53,6 @@ namespace corsika {
                units::si::LengthType const& x, units::si::LengthType const& y,
                units::si::LengthType const& z, const double weight);
 
-    /**
-     * Write a Code::Nucleus particle to the file.
-     */
-    void write(unsigned int const A, unsigned int const Z,
-               units::si::HEPEnergyType const& energy, units::si::LengthType const& x,
-               units::si::LengthType const& y, units::si::LengthType const& z,
-               const double weight);
-
     /**
      * Return collected library-level summary for output.
      */
diff --git a/examples/hybrid_MC.cpp b/examples/hybrid_MC.cpp
index 9f9ebb64ed072b788eaed44012dd86e2fdf38b16..eaf4f9881dbf1958f083fc53c8dd12421580b0e4 100644
--- a/examples/hybrid_MC.cpp
+++ b/examples/hybrid_MC.cpp
@@ -291,7 +291,7 @@ int main(int argc, char** argv) {
   corsika::urqmd::UrQMD urqmd_model;
   InteractionCounter urqmdCounted{urqmd_model};
 
-  TrackCheck trackCheck;
+  TrackCheck trackCheck(obsPlane);
 
   // assemble all processes into an ordered process list
   struct EnergySwitch {
diff --git a/tests/modules/testCONEX.cpp b/tests/modules/testCONEX.cpp
index 8d8ce52efe95717594f58c3e965d67f19bc8eae9..9596a8acab4bbed0f42a059d855488900e7e8b97 100644
--- a/tests/modules/testCONEX.cpp
+++ b/tests/modules/testCONEX.cpp
@@ -139,4 +139,7 @@ TEST_CASE("CONEX") {
   conex.doCascadeEquations(stack);
 
   CHECK(w1.getEnergyLost() / 1_TeV == Approx(1.0).epsilon(0.1));
+
+  auto const cfg = conex.getConfig();
+  CHECK(cfg.size() == 0);
 }
diff --git a/tests/output/testWriterEnergyLoss.cpp b/tests/output/testWriterEnergyLoss.cpp
index adab9dec20c9a4d5549d8e6651781db1811cbaa0..43a09f441fdef0c6bbb8e1c0277c96e8722ed271 100644
--- a/tests/output/testWriterEnergyLoss.cpp
+++ b/tests/output/testWriterEnergyLoss.cpp
@@ -65,11 +65,11 @@ TEST_CASE("EnergyLossWriter") {
   auto const injectionHeight = 10_km;
   auto const t = -observationHeight + injectionHeight;
   Point const showerCore{cs, 0_m, 0_m, observationHeight};
-  Point const injectionPos = showerCore + Vector<dimensionless_d>{cs, {0, 0, 1}} * t;
+  Point const injectionPos = showerCore + DirectionVector{cs, {0, 0, 1}} * t;
 
   ShowerAxis const showerAxis{injectionPos, (showerCore - injectionPos), *env,
-                              true, // -> throw exceptions
-                              20};  // -> number of bins
+                              false, // -> throw exceptions
+                              1000}; // -> number of bins
 
   // preparation
   if (boost::filesystem::exists("./output_dir_eloss")) {
@@ -89,16 +89,21 @@ TEST_CASE("EnergyLossWriter") {
 
   // generate straight simple track
   CoordinateSystemPtr rootCS = get_root_CoordinateSystem();
-  Point r0(rootCS, {0_m, 0_m, 7_km});
+  Point r0(rootCS, {0_m, 0_m, 6.555_km});
   SpeedType const V0 = constants::c;
-  VelocityVector v0(rootCS, {V0, 0_m / second, 0_m / second});
+  VelocityVector v0(rootCS, {0_m / second, 0_m / second, -V0});
   Line const line(r0, v0);
   auto const time = 1000_ns;
   StraightTrajectory track(line, time);
+  StraightTrajectory trackShort(line, time / 5e3);     // short
+  StraightTrajectory trackPointLike(line, time / 1e7); // ultra short
   StraightTrajectory trackInverse({track.getPosition(1), -v0}, time);
   // test write
   test.write(track, Code::Proton, 100_GeV);
   test.write(trackInverse, Code::Proton, 100_GeV); // equivalent
+  test.write(trackShort, Code::Proton, 100_GeV);   // this is in a single bin
+  test.write(trackPointLike, Code::Proton,
+             100_GeV); // this is just a located point-like dE
 
   // incompatible binning
   CHECK_THROWS(test.write(100_g / square(1_cm), // extra line break by purpose
@@ -120,7 +125,7 @@ TEST_CASE("EnergyLossWriter") {
   CHECK(config["grammage_threshold"].as<double>() == Approx(0.0001));
 
   auto const summary = test.getSummary();
-  CHECK(summary["sum_dEdX"].as<double>() == 400);
+  CHECK(summary["sum_dEdX"].as<double>() == 600);
   // makes not yet sense:
   // CHECK(summary["Xmax"].as<double>() == 200);
   // CHECK(summary["dEdXmax"].as<double>() == 200);
diff --git a/tests/output/testWriterLongitudinal.cpp b/tests/output/testWriterLongitudinal.cpp
index e4ea950098a42b6bc0c16091018ec673c821626f..beb00767635a7709773a3d9c6381b0fb424d863f 100644
--- a/tests/output/testWriterLongitudinal.cpp
+++ b/tests/output/testWriterLongitudinal.cpp
@@ -67,11 +67,11 @@ TEST_CASE("LongitudinalWriter") {
   auto const injectionHeight = 10_km;
   auto const t = -observationHeight + injectionHeight;
   Point const showerCore{cs, 0_m, 0_m, observationHeight};
-  Point const injectionPos = showerCore + Vector<dimensionless_d>{cs, {0, 0, 1}} * t;
+  Point const injectionPos = showerCore + DirectionVector{cs, {0, 0, 1}} * t;
 
   ShowerAxis const showerAxis{injectionPos, (showerCore - injectionPos), *env,
-                              true, // -> throw exceptions
-                              20};  // -> number of bins
+                              false, // -> throw exceptions
+                              1000}; // -> number of bins
 
   // preparation
   if (boost::filesystem::exists("./output_dir_long")) {
@@ -85,9 +85,9 @@ TEST_CASE("LongitudinalWriter") {
 
   // generate straight simple track
   CoordinateSystemPtr rootCS = get_root_CoordinateSystem();
-  Point r0(rootCS, {0_km, 0_m, 7_m});
+  Point r0(rootCS, {0_km, 0_m, 8_km});
   SpeedType const V0 = constants::c;
-  VelocityVector v0(rootCS, {V0, 0_m / second, 0_m / second});
+  VelocityVector v0(rootCS, {0_m / second, 0_m / second, -V0});
   Line const line(r0, v0);
   auto const time = 1000_ns;
   StraightTrajectory track(line, time);