diff --git a/corsika/modules/HadronicElasticModel.hpp b/corsika/modules/HadronicElasticModel.hpp
index 0d5a77473e41fee63e67ca4a47e3244962dac777..1754952f8e6a2791eb9c89c856ea4794b5d133fe 100644
--- a/corsika/modules/HadronicElasticModel.hpp
+++ b/corsika/modules/HadronicElasticModel.hpp
@@ -55,7 +55,7 @@ namespace corsika {
     // Froissart-Martin is not violated up for sqrt s < 10^32 eV with these values [DL].
 
     default_prng_type& RNG_ =
-        RNGManager::getInstance().getRandomStream("HadronicElasticModel");
+        RNGManager<>::getInstance().getRandomStream("HadronicElasticModel");
   };
 
 } // namespace corsika
diff --git a/examples/boundary_example.cpp b/examples/boundary_example.cpp
index e5f707bdef84d99c6a553ad32b58ff0e949f8b86..797f49502563991b9a94181614bb1719efe9f6ec 100644
--- a/examples/boundary_example.cpp
+++ b/examples/boundary_example.cpp
@@ -84,7 +84,7 @@ int main() {
 
   feenableexcept(FE_INVALID);
   // initialize random number sequence(s)
-  RNGManager::getInstance().registerRandomStream("cascade");
+  RNGManager<>::getInstance().registerRandomStream("cascade");
 
   // setup environment, geometry
   using EnvType = setup::Environment;
diff --git a/examples/cascade_example.cpp b/examples/cascade_example.cpp
index 623f443120ec69c52e5bacbecf6dfc02039e87e9..6632e797973aaac278add153b4428860464877f9 100644
--- a/examples/cascade_example.cpp
+++ b/examples/cascade_example.cpp
@@ -63,7 +63,7 @@ int main() {
 
   feenableexcept(FE_INVALID);
   // initialize random number sequence(s)
-  RNGManager::getInstance().registerRandomStream("cascade");
+  RNGManager<>::getInstance().registerRandomStream("cascade");
 
   // setup environment, geometry
   setup::Environment env;
@@ -133,8 +133,8 @@ int main() {
   setup::Tracking tracking;
   StackInspector<setup::Stack> stackInspect(1, true, E0);
 
-  RNGManager::getInstance().registerRandomStream("sibyll");
-  RNGManager::getInstance().registerRandomStream("pythia");
+  RNGManager<>::getInstance().registerRandomStream("sibyll");
+  RNGManager<>::getInstance().registerRandomStream("pythia");
   corsika::sibyll::Interaction sibyll;
   corsika::sibyll::NuclearInteraction sibyllNuc(sibyll, env);
   corsika::sibyll::Decay decay;
diff --git a/examples/cascade_proton_example.cpp b/examples/cascade_proton_example.cpp
index 94db3bd19bb8a7f151b0d342438071dff95ea97e..cd043185db13e95a365a371b438bf3c32abe0293 100644
--- a/examples/cascade_proton_example.cpp
+++ b/examples/cascade_proton_example.cpp
@@ -64,7 +64,7 @@ int main() {
 
   feenableexcept(FE_INVALID);
   // initialize random number sequence(s)
-  RNGManager::getInstance().registerRandomStream("cascade");
+  RNGManager<>::getInstance().registerRandomStream("cascade");
 
   OutputManager output("cascade_proton_outputs");
 
@@ -119,8 +119,8 @@ int main() {
   setup::Tracking tracking;
   StackInspector<setup::Stack> stackInspect(1000, true, E0);
 
-  RNGManager::getInstance().registerRandomStream("sibyll");
-  RNGManager::getInstance().registerRandomStream("pythia");
+  RNGManager<>::getInstance().registerRandomStream("sibyll");
+  RNGManager<>::getInstance().registerRandomStream("pythia");
   // corsika::sibyll::Interaction sibyll;
   corsika::pythia8::Interaction pythia;
   // sibyll::NuclearInteraction sibyllNuc(sibyll, env);
diff --git a/examples/corsika.cpp b/examples/corsika.cpp
index 863e27a98876a9751a076be1934e3e1e60bcac93..ab2bdf232872bfc6574ad03fd23bd271004e316e 100644
--- a/examples/corsika.cpp
+++ b/examples/corsika.cpp
@@ -6,8 +6,6 @@
  * the license.
  */
 
-#define TRACE
-
 /* clang-format off */
 // InteractionCounter used boost/histogram, which
 // fails if boost/type_traits have been included before. Thus, we have
@@ -83,18 +81,21 @@ using namespace std;
 
 using Particle = setup::Stack::particle_type;
 
-void registerRandomStreams(const int seed) {
-  RNGManager::getInstance().registerRandomStream("cascade");
-  RNGManager::getInstance().registerRandomStream("qgsjet");
-  RNGManager::getInstance().registerRandomStream("sibyll");
-  RNGManager::getInstance().registerRandomStream("pythia");
-  RNGManager::getInstance().registerRandomStream("urqmd");
-  RNGManager::getInstance().registerRandomStream("proposal");
-
-  if (seed == 0)
-    RNGManager::getInstance().seedAll();
-  else
-    RNGManager::getInstance().seedAll(seed);
+void registerRandomStreams(int seed) {
+  RNGManager<>::getInstance().registerRandomStream("cascade");
+  RNGManager<>::getInstance().registerRandomStream("qgsjet");
+  RNGManager<>::getInstance().registerRandomStream("sibyll");
+  RNGManager<>::getInstance().registerRandomStream("pythia");
+  RNGManager<>::getInstance().registerRandomStream("urqmd");
+  RNGManager<>::getInstance().registerRandomStream("proposal");
+
+  if (seed == 0) {
+    std::random_device rd;
+    seed = rd();
+    cout << "new random seed (auto) " << seed << endl;
+  }
+
+  RNGManager<>::getInstance().setSeed(seed);
 }
 
 template <typename T>
diff --git a/examples/em_shower.cpp b/examples/em_shower.cpp
index 611b2cb91545daf7a20fcfd31fdfadd5f4e748af..0ff4d28b7425d1fd988af0718ccecbe84b4b8ba1 100644
--- a/examples/em_shower.cpp
+++ b/examples/em_shower.cpp
@@ -56,10 +56,15 @@
 using namespace corsika;
 using namespace std;
 
-void registerRandomStreams() {
+void registerRandomStreams(int seed) {
   RNGManager<>::getInstance().registerRandomStream("cascade");
   RNGManager<>::getInstance().registerRandomStream("proposal");
-  RNGManager<>::getInstance().seedAll();
+  if (seed == 0) {
+    std::random_device rd;
+    seed = rd();
+    cout << "new random seed (auto) " << seed << endl;
+  }
+  RNGManager<>::getInstance().setSeed(seed);
 }
 
 template <typename T>
@@ -75,7 +80,8 @@ int main(int argc, char** argv) {
   }
   feenableexcept(FE_INVALID);
   // initialize random number sequence(s)
-  registerRandomStreams();
+  int seed = 44;
+  registerRandomStreams(seed);
 
   // setup environment, geometry
   using EnvType = setup::Environment;
diff --git a/examples/hybrid_MC.cpp b/examples/hybrid_MC.cpp
index 9993d390e25ccecf752827b49d758a7555e67e72..6271166205f3a7b52f8a9db59225c3bcd044dfde 100644
--- a/examples/hybrid_MC.cpp
+++ b/examples/hybrid_MC.cpp
@@ -68,18 +68,19 @@
 using namespace corsika;
 using namespace std;
 
-void registerRandomStreams(const int seed) {
-  RNGManager::getInstance().registerRandomStream("cascade");
-  RNGManager::getInstance().registerRandomStream("qgsjet");
-  RNGManager::getInstance().registerRandomStream("sibyll");
-  RNGManager::getInstance().registerRandomStream("pythia");
-  RNGManager::getInstance().registerRandomStream("urqmd");
-  RNGManager::getInstance().registerRandomStream("proposal");
-
-  if (seed == 0)
-    RNGManager::getInstance().seedAll();
-  else
-    RNGManager::getInstance().seedAll(seed);
+void registerRandomStreams(int seed) {
+  RNGManager<>::getInstance().registerRandomStream("cascade");
+  RNGManager<>::getInstance().registerRandomStream("qgsjet");
+  RNGManager<>::getInstance().registerRandomStream("sibyll");
+  RNGManager<>::getInstance().registerRandomStream("pythia");
+  RNGManager<>::getInstance().registerRandomStream("urqmd");
+  RNGManager<>::getInstance().registerRandomStream("proposal");
+  if (seed == 0) {
+    std::random_device rd;
+    seed = rd();
+    cout << "new random seed (auto) " << seed << endl;
+  }
+  RNGManager<>::getInstance().setSeed(seed);
 }
 
 template <typename T>
diff --git a/examples/vertical_EAS.cpp b/examples/vertical_EAS.cpp
index 1904927228ab38e94c6a5ae9d8ccaf54699cddfa..90db5adf8b98bf5f7aa3c8ca1a42d5c5f17e3f52 100644
--- a/examples/vertical_EAS.cpp
+++ b/examples/vertical_EAS.cpp
@@ -75,17 +75,18 @@ using namespace std;
 
 using Particle = setup::Stack::particle_type;
 
-void registerRandomStreams(const int seed) {
-  RNGManager::getInstance().registerRandomStream("cascade");
-  RNGManager::getInstance().registerRandomStream("sibyll");
-  RNGManager::getInstance().registerRandomStream("pythia");
-  RNGManager::getInstance().registerRandomStream("urqmd");
-  RNGManager::getInstance().registerRandomStream("proposal");
-
-  if (seed == 0)
-    RNGManager::getInstance().seedAll();
-  else
-    RNGManager::getInstance().seedAll(seed);
+void registerRandomStreams(int seed) {
+  RNGManager<>::getInstance().registerRandomStream("cascade");
+  RNGManager<>::getInstance().registerRandomStream("sibyll");
+  RNGManager<>::getInstance().registerRandomStream("pythia");
+  RNGManager<>::getInstance().registerRandomStream("urqmd");
+  RNGManager<>::getInstance().registerRandomStream("proposal");
+  if (seed == 0) {
+    std::random_device rd;
+    seed = rd();
+    cout << "new random seed (auto) " << seed << endl;
+  }
+  RNGManager<>::getInstance().setSeed(seed);
 }
 
 template <typename T>