diff --git a/Documentation/Examples/CMakeLists.txt b/Documentation/Examples/CMakeLists.txt
index 2459d4d9a7faf03b3a2d8fdb03b562db7848a4a7..5a5bd65531b948d1b71536e83f7f88a905c6f4fa 100644
--- a/Documentation/Examples/CMakeLists.txt
+++ b/Documentation/Examples/CMakeLists.txt
@@ -31,6 +31,7 @@ target_link_libraries (cascade_example SuperStupidStack CORSIKAunits CORSIKAlogg
   CORSIKAprocesses
   CORSIKAparticles
   CORSIKAgeometry
+  CORSIKAenvironment
   CORSIKAprocesssequence
   )
 #install (TARGETS cascade_example DESTINATION share/examples)
diff --git a/Environment/Environment.h b/Environment/Environment.h
index 5afe69c57000976ef529559696e6bcdca31da609..335f776ee69d76bc77fb2fef628761ae8b67508c 100644
--- a/Environment/Environment.h
+++ b/Environment/Environment.h
@@ -13,11 +13,21 @@
 
 #include <corsika/environment/IMediumModel.h>
 #include <corsika/environment/VolumeTreeNode.h>
+#include <corsika/geometry/Point.h>
+#include <corsika/geometry/Sphere.h>
 #include <corsika/geometry/RootCoordinateSystem.h>
 #include <corsika/setup/SetupEnvironment.h>
+#include <limits>
 
 namespace corsika::environment {
-  struct Universe : public corsika::geometry::Volume {
+  struct Universe : public corsika::geometry::Sphere {
+    Universe(corsika::geometry::CoordinateSystem const& pCS)
+        : corsika::geometry::Sphere(
+              corsika::geometry::Point{
+                  pCS, 0 * corsika::units::si::meter,
+                  0 * corsika::units::si::meter, 0 * corsika::units::si::meter},
+              corsika::units::si::meter * std::numeric_limits<double>::infinity()) {}
+
     bool Contains(corsika::geometry::Point const&) const override { return true; }
   };
 
@@ -25,30 +35,30 @@ namespace corsika::environment {
   class Environment {
   public:
     Environment()
-        : fUniverse(std::make_unique<VolumeTreeNode<IEnvironmentModel>>(
-              std::make_unique<Universe>())) {}
+        : fCoordinateSystem{corsika::geometry::RootCoordinateSystem::GetInstance().GetRootCS()},        
+        fUniverse(std::make_unique<VolumeTreeNode<IEnvironmentModel>>(
+              std::make_unique<Universe>(fCoordinateSystem))) {}
 
     using IEnvironmentModel = corsika::setup::IEnvironmentModel;
 
     auto& GetUniverse() { return fUniverse; }
     auto const& GetUniverse() const { return fUniverse; }
 
-    auto const& GetCoordinateSystem() const {
-      return corsika::geometry::RootCoordinateSystem::GetInstance().GetRootCS();
-    }
+    auto const& GetCoordinateSystem() const { return fCoordinateSystem; }
 
     // factory method for creation of VolumeTreeNodes
-    template <class VolumeType, typename... Args>
-    static auto CreateNode(Args&&... args) {
+    template <class VolumeType, typename... VolumeArgs>
+    static auto CreateNode(VolumeArgs&&... args) {
       static_assert(std::is_base_of_v<corsika::geometry::Volume, VolumeType>,
                     "unusable type provided, needs to be derived from "
                     "\"corsika::geometry::Volume\"");
 
       return std::make_unique<VolumeTreeNode<IEnvironmentModel>>(
-          std::make_unique<VolumeType>(std::forward<Args>(args)...));
+          std::make_unique<VolumeType>(std::forward<VolumeArgs>(args)...));
     }
 
   private:
+    corsika::geometry::CoordinateSystem const& fCoordinateSystem;
     VolumeTreeNode<IEnvironmentModel>::VTNUPtr fUniverse;
   };
 
diff --git a/Framework/Cascade/CMakeLists.txt b/Framework/Cascade/CMakeLists.txt
index 8da2afe065f5fce33f2fa3a9f9a695a930471a09..8b832d21bb9fe0731d6a6294dc6b234e15fddac4 100644
--- a/Framework/Cascade/CMakeLists.txt
+++ b/Framework/Cascade/CMakeLists.txt
@@ -54,6 +54,7 @@ target_link_libraries (
   CORSIKAprocesses
   CORSIKAparticles
   CORSIKAgeometry
+  CORSIKAenvironment
   CORSIKAprocesssequence
   CORSIKAunits
   CORSIKAthirdparty # for catch2
diff --git a/Framework/Cascade/testCascade.cc b/Framework/Cascade/testCascade.cc
index 423940c156782b2978ed402524f209cf489178fb..b39c3f145c697500141ad911bb110b8b7aba8da4 100644
--- a/Framework/Cascade/testCascade.cc
+++ b/Framework/Cascade/testCascade.cc
@@ -80,11 +80,8 @@ private:
 };
 
 TEST_CASE("Cascade", "[Cascade]") {
-
   corsika::random::RNGManager& rmng = corsika::random::RNGManager::GetInstance();
-  ;
-  const std::string str_name = "s_rndm";
-  rmng.RegisterRandomStream(str_name);
+  rmng.RegisterRandomStream("s_rndm");
 
   corsika::environment::Environment env; // dummy environment
   auto& universe = *(env.GetUniverse());
diff --git a/Processes/TrackingLine/TrackingLine.h b/Processes/TrackingLine/TrackingLine.h
index b6b8864087b53fe577029c379996ca9d6ef29d35..205991ecf0b2b613bc97192b15494a824636a0ea 100644
--- a/Processes/TrackingLine/TrackingLine.h
+++ b/Processes/TrackingLine/TrackingLine.h
@@ -35,7 +35,7 @@ namespace corsika::process {
 
     template <typename Stack>
     class TrackingLine { //
-      typedef typename Stack::ParticleType Particle;
+      using Particle = typename Stack::ParticleType;
 
       corsika::environment::Environment const& fEnvironment;