diff --git a/Processes/OnShellCheck/testOnShellCheck.cc b/Processes/OnShellCheck/testOnShellCheck.cc
index cfc7d159b5a7884a56dd45e19ee8c8c42f35901d..0d45b1e2946d814d47039d11f74249ace3282526 100644
--- a/Processes/OnShellCheck/testOnShellCheck.cc
+++ b/Processes/OnShellCheck/testOnShellCheck.cc
@@ -37,11 +37,10 @@ TEST_CASE("OnShellCheck", "[processes]") {
   // two energies
   const HEPEnergyType E = 10_GeV;
   // list of arbitrary particles
-  std::array<particles::Code, 4> particleList = {
-      particles::Code::PiPlus, particles::Code::PiMinus, particles::Code::Helium,
-      particles::Code::Gamma};
+  std::array const particleList{particles::Code::PiPlus, particles::Code::PiMinus,
+                                particles::Code::Helium, particles::Code::Gamma};
 
-  std::array<double, 4> mass_shifts = {1.1, 1.001, 1.0, 1.0};
+  std::array const mass_shifts{1.1, 1.001, 1.0, 1.0};
 
   SECTION("check particle masses") {
 
@@ -57,7 +56,7 @@ TEST_CASE("OnShellCheck", "[processes]") {
             corsika::stack::MomentumVector(rootCS, {0_GeV, 0_GeV, 0_GeV}),
             geometry::Point(rootCS, 0_m, 0_m, 0_m), 0_ns});
     // view on secondary particles
-    corsika::stack::SecondaryView view(particle);
+    setup::StackView view{particle};
     // ref. to primary particle through the secondary view.
     // only this way the secondary view is populated
     auto projectile = view.GetProjectile();
diff --git a/Processes/ParticleCut/testParticleCut.cc b/Processes/ParticleCut/testParticleCut.cc
index 2ed4c1d1d15c5b1b2bf6954e73231589b6c68149..05805cd92891d0144778bf54fa8e845081300e74 100644
--- a/Processes/ParticleCut/testParticleCut.cc
+++ b/Processes/ParticleCut/testParticleCut.cc
@@ -55,7 +55,7 @@ TEST_CASE("ParticleCut", "[processes]") {
             corsika::stack::MomentumVector(rootCS, {0_GeV, 0_GeV, 0_GeV}),
             geometry::Point(rootCS, 0_m, 0_m, 0_m), 0_ns});
     // view on secondary particles
-    corsika::stack::SecondaryView view(particle);
+    setup::StackView view{particle};
     // ref. to primary particle through the secondary view.
     // only this way the secondary view is populated
     auto projectile = view.GetProjectile();
@@ -114,7 +114,7 @@ TEST_CASE("ParticleCut", "[processes]") {
             corsika::stack::MomentumVector(rootCS, {0_GeV, 0_GeV, 0_GeV}),
             geometry::Point(rootCS, 0_m, 0_m, 0_m), 0_ns});
     // view on secondary particles
-    corsika::stack::SecondaryView view(particle);
+    setup::StackView view{particle};
     // ref. to primary particle through the secondary view.
     // only this way the secondary view is populated
     auto projectile = view.GetProjectile();
diff --git a/Processes/Pythia/testPythia8.cc b/Processes/Pythia/testPythia8.cc
index 4b1da6d837551d1bba4aded4d0c43cd8f315f1ca..6a8ae279badbbb7336357fefb208f926d55b4748 100644
--- a/Processes/Pythia/testPythia8.cc
+++ b/Processes/Pythia/testPythia8.cc
@@ -130,7 +130,7 @@ TEST_CASE("pythia process") {
 
     random::RNGManager::GetInstance().RegisterRandomStream("pythia");
 
-    corsika::stack::SecondaryView view(particle);
+    setup::StackView view(particle);
 
     process::pythia::Decay model;
 
@@ -179,7 +179,7 @@ TEST_CASE("pythia process") {
                    corsika::stack::MomentumVector, geometry::Point, units::si::TimeType>{
             particles::Code::PiPlus, E0, plab, pos, 0_ns});
     particle.SetNode(nodePtr);
-    corsika::stack::SecondaryView view(particle);
+    setup::StackView view(particle);
 
     process::pythia::Interaction model;
 
diff --git a/Processes/QGSJetII/testQGSJetII.cc b/Processes/QGSJetII/testQGSJetII.cc
index 4f09f12841a185cf3295d6c592a9e617f65a4a13..33168bee7b469f18f34c0159e5ace02dd56b67b5 100644
--- a/Processes/QGSJetII/testQGSJetII.cc
+++ b/Processes/QGSJetII/testQGSJetII.cc
@@ -133,7 +133,7 @@ TEST_CASE("QgsjetIIInterface", "[processes]") {
             particles::Code::Proton, E0, plab, pos, 0_ns});
 
     particle.SetNode(nodePtr);
-    corsika::stack::SecondaryView view(particle);
+    setup::StackView view(particle);
     auto projectile = view.GetProjectile();
     auto const projectileMomentum = projectile.GetMomentum();
 
diff --git a/Processes/Sibyll/testSibyll.cc b/Processes/Sibyll/testSibyll.cc
index e9940067054987ca8eb1108fb0df895669daa004..84e04ba21079451cd2e8e2641eaaa641e508ded2 100644
--- a/Processes/Sibyll/testSibyll.cc
+++ b/Processes/Sibyll/testSibyll.cc
@@ -130,7 +130,7 @@ TEST_CASE("SibyllInterface", "[processes]") {
                    corsika::stack::MomentumVector, geometry::Point, units::si::TimeType>{
             particles::Code::Proton, E0, plab, pos, 0_ns});
     particle.SetNode(nodePtr);
-    corsika::stack::SecondaryView view(particle);
+    corsika::setup::StackView view(particle);
 
     Interaction model;
 
@@ -215,7 +215,7 @@ TEST_CASE("SibyllInterface", "[processes]") {
                    corsika::stack::MomentumVector, geometry::Point, units::si::TimeType>{
             particles::Code::Proton, E0, plab, pos, 0_ns});
     particle.SetNode(nodePtr);
-    corsika::stack::SecondaryView view(particle);
+    corsika::setup::StackView view(particle);
 
     Interaction model;
 
@@ -245,7 +245,7 @@ TEST_CASE("SibyllInterface", "[processes]") {
                                      units::si::TimeType, unsigned short, unsigned short>{
             particles::Code::Nucleus, E0, plab, pos, 0_ns, 4, 2});
     particle.SetNode(nodePtr);
-    corsika::stack::SecondaryView view(particle);
+    corsika::setup::StackView view(particle);
 
     Interaction hmodel;
     NuclearInteraction model(hmodel, env);
@@ -266,7 +266,7 @@ TEST_CASE("SibyllInterface", "[processes]") {
         std::tuple<particles::Code, units::si::HEPEnergyType,
                    corsika::stack::MomentumVector, geometry::Point, units::si::TimeType>{
             particles::Code::Lambda0, E0, plab, pos, 0_ns});
-    corsika::stack::SecondaryView view(particle);
+    corsika::setup::StackView view(particle);
 
     Decay model;
 
diff --git a/Processes/UrQMD/testUrQMD.cc b/Processes/UrQMD/testUrQMD.cc
index f7d36c891dc07b942186213a794184598cc12506..71cdd8068864a3c4eda760696374f9b61e193634 100644
--- a/Processes/UrQMD/testUrQMD.cc
+++ b/Processes/UrQMD/testUrQMD.cc
@@ -95,8 +95,7 @@ auto setupStack(int vA, int vZ, HEPEnergyType vMomentum, TNodeType* vNodePtr,
 
   particle.SetNode(vNodePtr);
   return std::make_tuple(
-      std::move(stack),
-      std::make_unique<decltype(corsika::stack::SecondaryView(particle))>(particle));
+      std::move(stack), std::make_unique<decltype(setup::StackView{particle})>(particle));
 }
 
 template <typename TNodeType>
@@ -117,8 +116,7 @@ auto setupStack(particles::Code vProjectileType, HEPEnergyType vMomentum,
 
   particle.SetNode(vNodePtr);
   return std::make_tuple(
-      std::move(stack),
-      std::make_unique<decltype(corsika::stack::SecondaryView(particle))>(particle));
+      std::move(stack), std::make_unique<decltype(setup::StackView{particle})>(particle));
 }
 
 TEST_CASE("UrQMD") {