diff --git a/Documentation/Examples/boundary_example.cc b/Documentation/Examples/boundary_example.cc
index a2f0d1001fb7c4a71a6dd759fce19b55cd3a0ecf..caaa087a4fb1e32b52daf54276c23626b419d4f0 100644
--- a/Documentation/Examples/boundary_example.cc
+++ b/Documentation/Examples/boundary_example.cc
@@ -114,7 +114,7 @@ int main() {
   // setup processes, decays and interactions
   tracking_line::TrackingLine tracking;
 
-  random::RNGManager::GetInstance().RegisterRandomStream("s_rndm");
+  random::RNGManager::GetInstance().RegisterRandomStream("sibyll");
   process::sibyll::Interaction sibyll;
   process::sibyll::Decay decay;
 
diff --git a/Documentation/Examples/cascade_example.cc b/Documentation/Examples/cascade_example.cc
index fb94eaa5bee349ed4d0e62a840137afa6a9dcb50..93902e146ae7b223644eb8a0e34fb73cf93ebcab 100644
--- a/Documentation/Examples/cascade_example.cc
+++ b/Documentation/Examples/cascade_example.cc
@@ -133,7 +133,7 @@ int main() {
   tracking_line::TrackingLine tracking;
   stack_inspector::StackInspector<setup::Stack> stackInspect(1, true, E0);
 
-  random::RNGManager::GetInstance().RegisterRandomStream("s_rndm");
+  random::RNGManager::GetInstance().RegisterRandomStream("sibyll");
   random::RNGManager::GetInstance().RegisterRandomStream("pythia");
   process::sibyll::Interaction sibyll;
   process::sibyll::NuclearInteraction sibyllNuc(sibyll, env);
diff --git a/Documentation/Examples/cascade_proton_example.cc b/Documentation/Examples/cascade_proton_example.cc
index 5125902df40a4a1c318d02400dbc3f7fb0131775..996d67eb9fd3383801f150c2eb6d50c87f2da36d 100644
--- a/Documentation/Examples/cascade_proton_example.cc
+++ b/Documentation/Examples/cascade_proton_example.cc
@@ -116,7 +116,7 @@ int main() {
   tracking_line::TrackingLine tracking;
   stack_inspector::StackInspector<setup::Stack> stackInspect(1, true, E0);
 
-  random::RNGManager::GetInstance().RegisterRandomStream("s_rndm");
+  random::RNGManager::GetInstance().RegisterRandomStream("sibyll");
   random::RNGManager::GetInstance().RegisterRandomStream("pythia");
   //  process::sibyll::Interaction sibyll(env);
   process::pythia::Interaction pythia;
diff --git a/Documentation/Examples/vertical_EAS.cc b/Documentation/Examples/vertical_EAS.cc
index 3e1af668f1f8a0e07bc82fea9b22eca42b5e1476..17a80986d0485df5043a1216926ca1da9f542f2f 100644
--- a/Documentation/Examples/vertical_EAS.cc
+++ b/Documentation/Examples/vertical_EAS.cc
@@ -56,10 +56,10 @@ using namespace corsika::units::si;
 
 void registerRandomStreams() {
   random::RNGManager::GetInstance().RegisterRandomStream("cascade");
-  random::RNGManager::GetInstance().RegisterRandomStream("qgran");
-  random::RNGManager::GetInstance().RegisterRandomStream("s_rndm");
+  random::RNGManager::GetInstance().RegisterRandomStream("qgsjet");
+  random::RNGManager::GetInstance().RegisterRandomStream("sibyll");
   random::RNGManager::GetInstance().RegisterRandomStream("pythia");
-  random::RNGManager::GetInstance().RegisterRandomStream("UrQMD");
+  random::RNGManager::GetInstance().RegisterRandomStream("urqmd");
 
   random::RNGManager::GetInstance().SeedAll();
 }
diff --git a/Framework/Random/RNGManager.cc b/Framework/Random/RNGManager.cc
index ab60ff721f876d728a2f4ee04e3a31b33d121d43..238b38636e4ef5ec6ab9a3e219ba044d7a503845 100644
--- a/Framework/Random/RNGManager.cc
+++ b/Framework/Random/RNGManager.cc
@@ -7,6 +7,7 @@
  */
 
 #include <corsika/random/RNGManager.h>
+#include <sstream>
 
 void corsika::random::RNGManager::RegisterRandomStream(std::string const& pStreamName) {
   corsika::random::RNG rng;
@@ -20,7 +21,15 @@ void corsika::random::RNGManager::RegisterRandomStream(std::string const& pStrea
 
 corsika::random::RNG& corsika::random::RNGManager::GetRandomStream(
     std::string const& pStreamName) {
-  return rngs.at(pStreamName);
+  if (IsRegistered(pStreamName)) {
+    return rngs.at(pStreamName);
+  } else { // this stream name is not in the map
+    throw std::runtime_error("'" + pStreamName + "' is not a registered stream.");
+  }
+}
+
+bool corsika::random::RNGManager::IsRegistered(std::string const& pStreamName) const {
+  return rngs.count(pStreamName) > 0;
 }
 
 std::stringstream corsika::random::RNGManager::dumpState() const {
@@ -44,10 +53,3 @@ void corsika::random::RNGManager::SeedAll() {
     entry.second.seed(sseq);
   }
 }
-
-/*
-void corsika::random::RNGManager::SetSeedSeq(std::string const& pStreamName,
-                                             std::seed_seq const& pSeedSeq) {
-  seeds[pStreamName] = pSeedSeq;
-}
-*/
diff --git a/Framework/Random/RNGManager.h b/Framework/Random/RNGManager.h
index 15e90d69a294824a3e58d0e60eab38d4ebd37e07..0826642a86e57df9f25ab0c297e5ce080839565b 100644
--- a/Framework/Random/RNGManager.h
+++ b/Framework/Random/RNGManager.h
@@ -12,7 +12,6 @@
 
 #include <map>
 #include <random>
-#include <sstream>
 #include <string>
 
 /*!
@@ -23,7 +22,10 @@ namespace corsika::random {
 
   using RNG = std::mt19937; //!< the actual RNG type that will be used
 
-  class RNGManager : public corsika::utl::Singleton<RNGManager> {
+  /*!
+   * Manage random number generators.
+   */
+  class RNGManager final : public corsika::utl::Singleton<RNGManager> {
 
     friend class corsika::utl::Singleton<RNGManager>;
 
@@ -48,17 +50,17 @@ namespace corsika::random {
      */
     RNG& GetRandomStream(std::string const& pStreamName);
 
+    /*!
+     * Check whether a stream has been registered.
+     */
+    bool IsRegistered(std::string const& pStreamName) const;
+
     /*!
      * dumps the names and states of all registered random-number streams
      * into a std::stringstream.
      */
     std::stringstream dumpState() const;
 
-    /**
-     * set seed_seq of \a pStreamName to \a pSeedSeq
-     */
-    // void SetSeedSeq(std::string const& pStreamName, std::seed_seq& const pSeedSeq);
-
     /**
      * Set explicit seeds for all currently registered streams. The actual seed values
      * are incremented from \a vSeed.
diff --git a/Framework/Random/testRandom.cc b/Framework/Random/testRandom.cc
index 9a1d96fbb7a1dd426643a4fe4eba51c65403330a..14971167d1517e8cef0dfc2a3860f86f25e1c386 100644
--- a/Framework/Random/testRandom.cc
+++ b/Framework/Random/testRandom.cc
@@ -23,18 +23,32 @@ SCENARIO("random-number streams can be registered and retrieved") {
   GIVEN("a RNGManager") {
     RNGManager& rngManager = RNGManager::GetInstance();
 
-    WHEN("a sequence is registered by name") {
-      rngManager.RegisterRandomStream("stream_A");
+    WHEN("the sequence name is not registered") {
+      REQUIRE(rngManager.IsRegistered("stream_A") == false);
 
-      THEN("the sequence can be retrieved") {
-        REQUIRE_NOTHROW(rngManager.GetRandomStream("stream_A"));
-      }
+      THEN("a sequence is registered by name") {
+        rngManager.RegisterRandomStream("stream_A");
 
-      THEN("an unknown sequence cannot be retrieved") {
-        REQUIRE_THROWS(rngManager.GetRandomStream("stream_UNKNOWN"));
-      }
+        THEN("the sequence can be retrieved") {
+          REQUIRE_NOTHROW(rngManager.GetRandomStream("stream_A"));
+
+          THEN("we can check that the sequence exists") {
+            REQUIRE_NOTHROW(rngManager.GetRandomStream("stream_A"));
 
-      // seeding not covered yet
+            THEN("an unknown sequence cannot be retrieved") {
+              REQUIRE(rngManager.IsRegistered("stream_A") == true);
+
+              THEN("an unknown sequence cannot be retrieved") {
+                REQUIRE_THROWS(rngManager.GetRandomStream("stream_UNKNOWN"));
+
+                THEN("an unknown sequence is not registered") {
+                  REQUIRE(rngManager.IsRegistered("stream_UNKNOWN") == false);
+                }
+              }
+            }
+          }
+        }
+      }
     }
   }
 }
diff --git a/Processes/CONEXSourceCut/testCONEXSourceCut.cc b/Processes/CONEXSourceCut/testCONEXSourceCut.cc
index 3dfc6c73e0a320851d6d89fb0af864102ad7f540..dacfc8728d07f5056b5aee36153e97f362097478 100644
--- a/Processes/CONEXSourceCut/testCONEXSourceCut.cc
+++ b/Processes/CONEXSourceCut/testCONEXSourceCut.cc
@@ -27,7 +27,7 @@ using namespace corsika::units::si;
 
 TEST_CASE("CONEXSourceCut") {
   random::RNGManager::GetInstance().RegisterRandomStream("cascade");
-  random::RNGManager::GetInstance().RegisterRandomStream("s_rndm");
+  random::RNGManager::GetInstance().RegisterRandomStream("sibyll");
 
   feenableexcept(FE_INVALID);
 
diff --git a/Processes/QGSJetII/Interaction.h b/Processes/QGSJetII/Interaction.h
index f72cbdcc7bf5aea207afa938010b900e34cbf835..fc44b8f884e487ce1ed904c47d7af3be2b51a177 100644
--- a/Processes/QGSJetII/Interaction.h
+++ b/Processes/QGSJetII/Interaction.h
@@ -55,7 +55,7 @@ namespace corsika::process::qgsjetII {
 
   private:
     corsika::random::RNG& rng_ =
-        corsika::random::RNGManager::GetInstance().GetRandomStream("qgran");
+        corsika::random::RNGManager::GetInstance().GetRandomStream("qgsjet");
     static constexpr int maxMassNumber_ = 208;
   };
 
diff --git a/Processes/QGSJetII/qgsjet-II-04.cc b/Processes/QGSJetII/qgsjet-II-04.cc
index fef484e999b46ea1ea8b196f4cc3a42492e987c3..a318d0a6cb774057203d34a93c977f290c70362b 100644
--- a/Processes/QGSJetII/qgsjet-II-04.cc
+++ b/Processes/QGSJetII/qgsjet-II-04.cc
@@ -26,7 +26,7 @@ datadir::datadir(const std::string& dir) {
 
 double qgran_(int&) {
   static corsika::random::RNG& rng =
-      corsika::random::RNGManager::GetInstance().GetRandomStream("qgran");
+      corsika::random::RNGManager::GetInstance().GetRandomStream("qgsjet");
 
   std::uniform_real_distribution<double> dist;
   return dist(rng);
diff --git a/Processes/QGSJetII/testQGSJetII.cc b/Processes/QGSJetII/testQGSJetII.cc
index b5092ed9d247c43d6062a3614115149db70da803..d9a3dcda735ef3c2e941cc760b1f5389dc7bfd48 100644
--- a/Processes/QGSJetII/testQGSJetII.cc
+++ b/Processes/QGSJetII/testQGSJetII.cc
@@ -117,7 +117,7 @@ TEST_CASE("QgsjetIIInterface", "[processes]") {
 
   const geometry::CoordinateSystem& cs = env.GetCoordinateSystem();
 
-  corsika::random::RNGManager::GetInstance().RegisterRandomStream("qgran");
+  corsika::random::RNGManager::GetInstance().RegisterRandomStream("qgsjet");
 
   SECTION("InteractionInterface") {
 
diff --git a/Processes/Sibyll/Interaction.h b/Processes/Sibyll/Interaction.h
index bcc9b632e8ce622ef55dbb2c25ea6d160f0609c9..fcb3b94e5f342134b16289286e66ee977d157abf 100644
--- a/Processes/Sibyll/Interaction.h
+++ b/Processes/Sibyll/Interaction.h
@@ -57,7 +57,7 @@ namespace corsika::process::sibyll {
 
   private:
     corsika::random::RNG& RNG_ =
-        corsika::random::RNGManager::GetInstance().GetRandomStream("s_rndm");
+        corsika::random::RNGManager::GetInstance().GetRandomStream("sibyll");
 
     const corsika::units::si::HEPEnergyType minEnergyCoM_ =
         10. * 1e9 * corsika::units::si::electronvolt;
diff --git a/Processes/Sibyll/NuclearInteraction.h b/Processes/Sibyll/NuclearInteraction.h
index 8897d199dfa605f76c43a53c6edfeb838f797d7b..ba9c710bb09363da5ee9f82d15bfeb6f41f397ab 100644
--- a/Processes/Sibyll/NuclearInteraction.h
+++ b/Processes/Sibyll/NuclearInteraction.h
@@ -60,7 +60,7 @@ namespace corsika::process::sibyll {
     corsika::process::sibyll::Interaction& hadronicInteraction_;
     std::map<corsika::particles::Code, int> targetComponentsIndex_;
     corsika::random::RNG& RNG_ =
-        corsika::random::RNGManager::GetInstance().GetRandomStream("s_rndm");
+        corsika::random::RNGManager::GetInstance().GetRandomStream("sibyll");
     static constexpr int gNSample_ =
         500; // number of samples in MC estimation of cross section
     static constexpr int gMaxNucleusAProjectile_ = 56;
diff --git a/Processes/Sibyll/sibyll2.3d.cc b/Processes/Sibyll/sibyll2.3d.cc
index 7257e97a84340d7cc9dcf7c3dc7689c529762e3d..16db131f7cede092ced66a7b8eebd4e22658c560 100644
--- a/Processes/Sibyll/sibyll2.3d.cc
+++ b/Processes/Sibyll/sibyll2.3d.cc
@@ -16,7 +16,7 @@ double get_sibyll_mass2(int& id) { return s_mass1_.am2[abs(id) - 1]; }
 
 double s_rndm_(int&) {
   static corsika::random::RNG& rng =
-      corsika::random::RNGManager::GetInstance().GetRandomStream("s_rndm");
+      corsika::random::RNGManager::GetInstance().GetRandomStream("sibyll");
 
   std::uniform_real_distribution<double> dist;
   return dist(rng);
diff --git a/Processes/Sibyll/testSibyll.cc b/Processes/Sibyll/testSibyll.cc
index 2aab98c2ab9716d82e2cd78cf5f0ae6b817381eb..308e8ea1835d8bea50f57c79d4074024d595ba3f 100644
--- a/Processes/Sibyll/testSibyll.cc
+++ b/Processes/Sibyll/testSibyll.cc
@@ -115,7 +115,7 @@ TEST_CASE("SibyllInterface", "[processes]") {
 
   const geometry::CoordinateSystem& cs = env.GetCoordinateSystem();
 
-  random::RNGManager::GetInstance().RegisterRandomStream("s_rndm");
+  random::RNGManager::GetInstance().RegisterRandomStream("sibyll");
 
   SECTION("InteractionInterface") {
 
diff --git a/Processes/UrQMD/UrQMD.cc b/Processes/UrQMD/UrQMD.cc
index a9ee78c119ee00a9a6e3505bf2f612ba9e4ec293..cc9e02f61d2f7c45144260e6871a17e63aa42c60 100644
--- a/Processes/UrQMD/UrQMD.cc
+++ b/Processes/UrQMD/UrQMD.cc
@@ -358,7 +358,7 @@ corsika::process::EProcessReturn UrQMD::DoInteraction(SetupProjectile& projectil
  */
 double corsika::process::UrQMD::ranf_(int&) {
   static corsika::random::RNG& rng =
-      corsika::random::RNGManager::GetInstance().GetRandomStream("UrQMD");
+      corsika::random::RNGManager::GetInstance().GetRandomStream("urqmd");
   static std::uniform_real_distribution<double> dist;
 
   return dist(rng);
diff --git a/Processes/UrQMD/UrQMD.h b/Processes/UrQMD/UrQMD.h
index 1852e3d2e6e2a1336f224d7af05c3abdbd216486..3461c8ca36cd082eb0afc4731cdb44177c883201 100644
--- a/Processes/UrQMD/UrQMD.h
+++ b/Processes/UrQMD/UrQMD.h
@@ -49,7 +49,7 @@ namespace corsika::process::UrQMD {
     void readXSFile(std::string const&);
 
     corsika::random::RNG& rng_ =
-        corsika::random::RNGManager::GetInstance().GetRandomStream("UrQMD");
+        corsika::random::RNGManager::GetInstance().GetRandomStream("urqmd");
 
     std::uniform_int_distribution<int> booleanDist_{0, 1};
     boost::multi_array<corsika::units::si::CrossSectionType, 3> xs_interp_support_table_;
diff --git a/Processes/UrQMD/testUrQMD.cc b/Processes/UrQMD/testUrQMD.cc
index 5690e0c289cd941e2b45b2e5d1849b0e25b52448..fd947e83f60776d36fe986f0471ec827603e116b 100644
--- a/Processes/UrQMD/testUrQMD.cc
+++ b/Processes/UrQMD/testUrQMD.cc
@@ -130,7 +130,7 @@ TEST_CASE("UrQMD") {
   }
 
   feenableexcept(FE_INVALID);
-  corsika::random::RNGManager::GetInstance().RegisterRandomStream("UrQMD");
+  corsika::random::RNGManager::GetInstance().RegisterRandomStream("urqmd");
   UrQMD urqmd;
 
   SECTION("interaction length") {