diff --git a/Environment/MediumProperties.h b/Environment/MediumProperties.h
index c26b2a47292cec0eefe5fac080d48bf683eb6ae9..4e3d433d0ab8961f27a8346cbfc0098d49e42dec 100644
--- a/Environment/MediumProperties.h
+++ b/Environment/MediumProperties.h
@@ -41,11 +41,12 @@ namespace corsika::environment {
     double corrected_density_;
     State state_;
     MediumType type_;
-    std::string symbol_;  
+    std::string symbol_;
     double Ieff_;
     double Cbar_;
     double x0_;
     double x1_;
+    double aa_;
     double sk_;
     double dlt0_;
 
@@ -63,11 +64,12 @@ namespace corsika::environment {
     double Ieff() const { return Ieff_; }
     double Cbar() const { return Cbar_; }
     double x0() const { return x0_; }
-    double x1() const { return x1_; }   
-    double sk() const { return sk_; }   
+    double x1() const { return x1_; }
+    double aa() const { return aa_; }
+    double sk() const { return sk_; }
     double dlt0() const { return dlt0_; }
   };
-  
+
 } // namespace corsika::environment
 
 
diff --git a/Environment/readProperties.py b/Environment/readProperties.py
index 3c880239dbf7a4f0e616fe71f6b65fbc3a44d9c7..96d90108ea4332fc66802a4bc95f6da43c4a1ddf 100755
--- a/Environment/readProperties.py
+++ b/Environment/readProperties.py
@@ -299,20 +299,24 @@ def gen_classes(media_db):
      static State state() {{ return data_.state(); }}
      static MediumType type() {{ return data_.type(); }}
      static std::string const symbol() {{ return data_.symbol(); }}
-  
+
      static double Ieff() {{ return data_.Ieff(); }}
      static double Cbar() {{ return data_.Cbar(); }}
      static double x0() {{ return data_.x0(); }}
      static double x1() {{ return data_.x1(); }}
+     static double aa() {{ return data_.aa(); }}
      static double sk() {{ return data_.sk(); }}
      static double dlt0() {{ return data_.dlt0(); }}
 
      //static constexpr Constituents constituents() {{ return {constituents}; }}
      //static constexpr Properties properties() {{ return {properties}; }}
 
-     inline static const MediumData data_ {{ "{name}", "{nice_name}", {weight}, {weight_significant_figure}, {weight_error_last_digit}, {Z_over_A}, {sternheimer_density}, {corrected_density}, State::{state}, MediumType::{type}, "{symbol}", {Ieff}, {Cbar}, {x0}, {x1}, {sk}, {dlt0} }};
+     inline static const MediumData data_ {{ "{name}", "{nice_name}", {weight},
+     {weight_significant_figure}, {weight_error_last_digit}, {Z_over_A},
+     {sternheimer_density}, {corrected_density}, State::{state},
+     MediumType::{type}, "{symbol}", {Ieff}, {Cbar}, {x0}, {x1}, {aa}, {sk}, {dlt0} }};
   }};
-        
+
         """.format(cname=cname,
                    stern_label=entry["sternheimer_label"],
                    stern_index=entry["sternheimer_index"],
@@ -349,15 +353,16 @@ def gen_classes(media_db):
      # static constexpr State state() {{ return State::{state}; }}
      # static constexpr MediumType type() {{ return MediumType::{type}; }}
      # static std::string const symbol() {{ return "{symbol}"; }}
-  
+
      # static constexpr double Ieff() {{ return {Ieff}; }}
      # static constexpr double Cbar() {{ return {Cbar}; }}
      # static constexpr double x0() {{ return {x0}; }}
      # static constexpr double x1() {{ return {x1}; }}
+     # static constexpr double aa() {{ return {aa}; }}
      # static constexpr double sk() {{ return {sk}; }}
      # static constexpr double dlt0() {{ return {dlt0}; }}
 
-        
+
         string += class_string
 
 
diff --git a/Processes/Proposal/ProposalProcessBase.cc b/Processes/Proposal/ProposalProcessBase.cc
index 66a749befab6a10785d365daae72a1fd3433214c..6c5832b5be422a3a82d54ad9be31c31c287d4b19 100644
--- a/Processes/Proposal/ProposalProcessBase.cc
+++ b/Processes/Proposal/ProposalProcessBase.cc
@@ -15,6 +15,7 @@
 #include <corsika/units/PhysicalUnits.h>
 #include <corsika/utl/COMBoost.h>
 #include <cstdlib>
+#include <iostream>
 #include <limits>
 #include <memory>
 #include <random>
@@ -30,24 +31,29 @@ namespace corsika::process::proposal {
                                            corsika::units::si::HEPEnergyType _emCut)
       : emCut_(_emCut)
       , fRNG(corsika::random::RNGManager::GetInstance().GetRandomStream("proposal")) {
-    auto all_compositions = std::vector<const environment::NuclearComposition*>();
+    using namespace corsika::units::si; // required for operator::_MeV
     _env.GetUniverse()->walk([&](auto& vtn) {
-      if (vtn.HasModelProperties())
-        all_compositions.push_back(&vtn.GetModelProperties().GetNuclearComposition());
-    });
-    for (auto& ncarg : all_compositions) {
-      auto comp_vec = std::vector<PROPOSAL::Components::Component>();
-      auto frac_iter = ncarg->GetFractions().cbegin();
-      for (auto& pcode : ncarg->GetComponents()) {
-        comp_vec.emplace_back(GetName(pcode), GetNucleusZ(pcode), GetNucleusA(pcode),
-                              *frac_iter);
-        ++frac_iter;
+      if (vtn.HasModelProperties()) {
+        auto prop = &vtn.GetModelProperties();
+        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();
+        auto frac_iter = comp.GetFractions().cbegin();
+        for (auto& pcode : comp.GetComponents()) {
+          comp_vec.emplace_back(GetName(pcode), GetNucleusZ(pcode), GetNucleusA(pcode),
+                                *frac_iter);
+          ++frac_iter;
+        }
+
+        media[comp.hash()] =
+            PROPOSAL::Medium(medium.name(), medium.Ieff(), -medium.Cbar(), medium.aa(), medium.sk(),
+                             medium.x0(), medium.x1(), medium.dlt0(), medium.corrected_density(), comp_vec);
       }
-      media[ncarg->hash()] = PROPOSAL::Medium(
-          "Modified Air", PROPOSAL::Air().GetI(), PROPOSAL::Air().GetC(),
-          PROPOSAL::Air().GetA(), PROPOSAL::Air().GetM(), PROPOSAL::Air().GetX0(),
-          PROPOSAL::Air().GetX1(), PROPOSAL::Air().GetD0(), 1.0, comp_vec);
-    }
+    });
+
     PROPOSAL::InterpolationDef::order_of_interpolation = 2;
     PROPOSAL::InterpolationDef::nodes_cross_section = 100;
     PROPOSAL::InterpolationDef::nodes_propagate = 1000;