diff --git a/Framework/Random/RNGManager.cc b/Framework/Random/RNGManager.cc
index ab60ff721f876d728a2f4ee04e3a31b33d121d43..8b595f12302d4109241118199a824ba58f5cd897 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);
+                }
+              }
+            }
+          }
+        }
+      }
     }
   }
 }