diff --git a/Processes/Proposal/Interaction.cc b/Processes/Proposal/Interaction.cc
index e7ccbaec44a26d182f9def29bbf9daa187ad5de6..0e6234cf6284bd15f610109f522eb8c2f2c84022 100644
--- a/Processes/Proposal/Interaction.cc
+++ b/Processes/Proposal/Interaction.cc
@@ -82,8 +82,10 @@ namespace corsika::process::proposal {
       auto point = PROPOSAL::Vector3D(vP.GetPosition().GetX() / 1_cm,
                                       vP.GetPosition().GetY() / 1_cm,
                                       vP.GetPosition().GetZ() / 1_cm);
-      auto p = vP.GetMomentum().GetComponents();
-      auto direction = PROPOSAL::Vector3D(p[0] / 1_GeV, p[1] / 1_GeV, p[2] / 1_GeV);
+      auto d = vP.GetDirection().GetComponents();
+      auto direction = PROPOSAL::Vector3D(d.GetX().magnitude(),
+                                          d.GetY().magnitude(),
+                                          d.GetZ().magnitude());
       auto loss =
           make_tuple(static_cast<int>(type), point, direction, v * primary_energy, 0.);
       auto sec = std::get<SECONDARIES>(calc->second)
diff --git a/Processes/Proposal/Interaction.h b/Processes/Proposal/Interaction.h
index 6f1aeb501d2a7f144bbab3bdf9f54e9611c18ce7..be683506995648a1b2b29eef3134a00f74de4fa3 100644
--- a/Processes/Proposal/Interaction.h
+++ b/Processes/Proposal/Interaction.h
@@ -43,14 +43,6 @@ namespace corsika::process::proposal {
               unique_ptr<PROPOSAL::Displacement>>;
     std::unordered_map<const NuclearComposition*, calculator_t> calculators;
 
-    enum { SECONDARIES, INTERACTION, DISPLACEMENT };
-    template <typename Particle>
-    auto GetCalculator(Particle& vP) {
-      auto& comp = vP.GetNode()->GetModelProperties().GetNuclearComposition();
-      auto calc_it = calculators.find(&comp);
-      if (calc_it != calculators.end()) return calc_it;
-      return BuildCalculator(vP.GetPID(), comp);
-    }
 
     auto BuildCalculator(particles::Code corsika_code, NuclearComposition const& comp) {
       auto medium = media.at(&comp);
@@ -92,6 +84,15 @@ namespace corsika::process::proposal {
       }
     } // namespace corsika::process::proposal
 
+    enum { SECONDARIES, INTERACTION, DISPLACEMENT };
+    template <typename Particle>
+    auto GetCalculator(Particle& vP) {
+        auto& comp = vP.GetNode()->GetModelProperties().GetNuclearComposition();
+        auto calc_it = calculators.find(&comp);
+        if (calc_it != calculators.end()) return calc_it;
+        return BuildCalculator(vP.GetPID(), comp);
+    }
+
   public:
     template <typename TEnvironment>
     Interaction(TEnvironment const& env, CORSIKA_ParticleCut const& cut);