diff --git a/Processes/Proposal/ProposalProcessBase.cc b/Processes/Proposal/ProposalProcessBase.cc
index 4e0d3a5bac05ef549cb8dde2026f9d0efceabd4b..a29dd15c2611a268a358094503d14a5b09c7a98c 100644
--- a/Processes/Proposal/ProposalProcessBase.cc
+++ b/Processes/Proposal/ProposalProcessBase.cc
@@ -34,13 +34,13 @@ namespace corsika::process::proposal {
     using namespace corsika::units::si; // required for operator::_MeV
     _env.GetUniverse()->walk([&](auto& vtn) {
       if (vtn.HasModelProperties()) {
-        auto prop = &vtn.GetModelProperties();
-        auto medium = mediumData(prop->medium(corsika::geometry::Point(
+        const auto& prop = vtn.GetModelProperties();
+        const auto& medium = mediumData(prop.medium(corsika::geometry::Point(
             geometry::RootCoordinateSystem::GetInstance().GetRootCoordinateSystem(), 0_cm,
             0_cm, 0_cm)));
 
         auto comp_vec = std::vector<PROPOSAL::Components::Component>();
-        auto comp = prop->GetNuclearComposition();
+        const auto& comp = prop.GetNuclearComposition();
         auto frac_iter = comp.GetFractions().cbegin();
         for (auto& pcode : comp.GetComponents()) {
           comp_vec.emplace_back(GetName(pcode), GetNucleusZ(pcode), GetNucleusA(pcode),