diff --git a/corsika/detail/media/LayeredSphericalAtmosphereBuilder.inl b/corsika/detail/media/LayeredSphericalAtmosphereBuilder.inl
index 17371ff3b775986099e6436894c1213a945e4733..0f17cf7c8ddf03f5a9e036038240e8a786ed0f9c 100644
--- a/corsika/detail/media/LayeredSphericalAtmosphereBuilder.inl
+++ b/corsika/detail/media/LayeredSphericalAtmosphereBuilder.inl
@@ -37,10 +37,10 @@ namespace corsika {
 
   template <typename TMediumInterface, template <typename> typename TMediumModelExtra,
             typename... TModelArgs>
-  inline void LayeredSphericalAtmosphereBuilder<
-      TMediumInterface, TMediumModelExtra,
-      TModelArgs...>::addExponentialLayer(GrammageType b, LengthType c,
-                                          LengthType upperBoundary) {
+  inline typename LayeredSphericalAtmosphereBuilder<TMediumInterface, TMediumModelExtra,
+                                                    TModelArgs...>::volume_tree_node*
+  LayeredSphericalAtmosphereBuilder<TMediumInterface, TMediumModelExtra, TModelArgs...>::
+      addExponentialLayer(GrammageType b, LengthType c, LengthType upperBoundary) {
 
     auto const radius = planetRadius_ + upperBoundary;
     checkRadius(radius);
@@ -68,6 +68,7 @@ namespace corsika {
     }
 
     layers_.push(std::move(node));
+    return layers_.top().get();
   }
 
   template <typename TMediumInterface, template <typename> typename TMediumModelExtra,
diff --git a/corsika/media/LayeredSphericalAtmosphereBuilder.hpp b/corsika/media/LayeredSphericalAtmosphereBuilder.hpp
index 6c178f4589537fff2a79c7e166662791c30a1306..09bcabc06472717a79ed14f62778843aac042f4f 100644
--- a/corsika/media/LayeredSphericalAtmosphereBuilder.hpp
+++ b/corsika/media/LayeredSphericalAtmosphereBuilder.hpp
@@ -75,8 +75,12 @@ namespace corsika {
         , additionalModelArgs_{args...} {}
 
   public:
+    typedef typename VolumeTreeNode<TMediumInterface>::VTN_type volume_tree_node;
+    typedef typename VolumeTreeNode<TMediumInterface>::VTNUPtr volume_tree_node_uptr;
+
     void setNuclearComposition(NuclearComposition const& composition);
-    void addExponentialLayer(GrammageType b, LengthType c, LengthType upperBoundary);
+    volume_tree_node* addExponentialLayer(GrammageType b, LengthType c,
+                                          LengthType upperBoundary);
     void addLinearLayer(LengthType c, LengthType upperBoundary);
 
     void addTabularLayer(std::function<MassDensityType(LengthType)> const& funcRho,
@@ -102,8 +106,7 @@ namespace corsika {
     LengthType planetRadius_;
     std::tuple<TModelArgs...> const additionalModelArgs_;
 
-    std::stack<typename VolumeTreeNode<TMediumInterface>::VTNUPtr>
-        layers_; // innermost layer first
+    std::stack<volume_tree_node_uptr> layers_; // innermost layer first
 
   }; // end class LayeredSphericalAtmosphereBuilder