diff --git a/Framework/Cascade/testCascade.h b/Framework/Cascade/testCascade.h
index b876107dea8849a342630c300437d81506636b12..fa756414ad47cb4eb3d1bdf6432016c7ea3a8a2b 100644
--- a/Framework/Cascade/testCascade.h
+++ b/Framework/Cascade/testCascade.h
@@ -24,7 +24,7 @@ using SetupGeometryDataInterface =
 // combine particle data stack with geometry information for tracking
 template <typename StackIter>
 using StackWithGeometryInterface = corsika::stack::CombinedParticleInterface<
-    corsika::stack::nuclear_extension::ParticleDataStack::PIType,
+    corsika::stack::nuclear_extension::ParticleDataStack::MPIType,
     SetupGeometryDataInterface, StackIter>;
 
 using TestCascadeStack = corsika::stack::CombinedStack<
diff --git a/Framework/StackInterface/SecondaryView.h b/Framework/StackInterface/SecondaryView.h
index b47d5a653e117402d08db90b977f18cd3f2b24c8..572a57f06dd923c952a9929b191b2e3414ac8c8e 100644
--- a/Framework/StackInterface/SecondaryView.h
+++ b/Framework/StackInterface/SecondaryView.h
@@ -57,14 +57,10 @@ namespace corsika::stack {
 
   template <typename StackDataType,
             template <typename> typename ParticleInterface,
-            //template <typename> typename MSecondaryProducer = DefaultSecondaryProducer>
-            template <class T1, template <class> class T2> class MSecondaryProducer> // T2==ParticleInterface
+            template <class T1, template <class> class T2> class MSecondaryProducer>
 
   class SecondaryView : public Stack<StackDataType&, ParticleInterface>,
-                        public MSecondaryProducer<StackDataType, ParticleInterface>
-
-  { //, public MSecondaryProducer<SecondaryView<StackDataType,ParticleInterface,MSecondaryProducer>> {
-
+                        public MSecondaryProducer<StackDataType, ParticleInterface> {
     using ViewType = SecondaryView<StackDataType, ParticleInterface, MSecondaryProducer>;
 
   private:
@@ -101,8 +97,8 @@ namespace corsika::stack {
 
     friend class ParticleBase<StackIterator>;
 
-    template <template <typename> typename M1>
-    friend class MSecondaryProducer;
+    //template <template <typename> typename M1>
+    //friend class MSecondaryProducer;
 
   private:
     /**
@@ -398,12 +394,11 @@ namespace corsika::stack {
     generic and universal.
   */
 #if not defined(__clang__) && defined(__GNUC__) || defined(__GNUG__)
-  template <typename S,
-            // template <typename> typename MSecondaryProducer = corsika::stack::DefaultSecondaryProducer,
-            template <class T1, template <class> class T2> class MSecondaryProducer = corsika::stack::DefaultSecondaryProducer,
-            template <typename> typename _PIType = S::template PIType>
+  template <typename TStack,
+            template <class TStack_, template <class> class MPIType_> class MSecondaryProducer = corsika::stack::DefaultSecondaryProducer,
+            template <typename> typename MPIType_ = TStack::template MPIType>
   struct MakeView {
-    using type = corsika::stack::SecondaryView<typename S::StackImpl, _PIType, MSecondaryProducer>;
+    using type = corsika::stack::SecondaryView<typename TStack::StackImpl, MPIType_, MSecondaryProducer>;
   };
 #endif
 
diff --git a/Framework/StackInterface/Stack.h b/Framework/StackInterface/Stack.h
index 94ee054c85dca11a7f119d1e20c4624c1acfd7be..b277b10839464d2170306a1ed75c4b48a9da088a 100644
--- a/Framework/StackInterface/Stack.h
+++ b/Framework/StackInterface/Stack.h
@@ -50,7 +50,8 @@ namespace corsika::stack {
      loops, ranges, etc.
    */
 
-  template <typename TStackData, template <typename> typename TParticleInterface>
+  template <typename TStackData,
+            template <typename> typename MParticleInterface>
   class Stack {
     using StackDataValueType = std::remove_reference_t<TStackData>;
 
@@ -96,23 +97,23 @@ namespace corsika::stack {
     typedef TStackData
         StackImpl; ///< this is the type of the user-provided data structure
 
-    template <typename SI>
-    using PIType = TParticleInterface<SI>;
+    template <typename TSI>
+    using MPIType = MParticleInterface<TSI>;
 
     /**
      * Via the StackIteratorInterface and ConstStackIteratorInterface
      * specialization, the type of the StackIterator
      * template class is declared for a particular stack data
      * object. Using CRTP, this also determines the type of
-     * TParticleInterface template class simultaneously.
+     * MParticleInterface template class simultaneously.
      */
     using StackIterator =
-        StackIteratorInterface<StackDataValueType, TParticleInterface, Stack>;
+        StackIteratorInterface<StackDataValueType, MParticleInterface, Stack>;
     using ConstStackIterator =
-        ConstStackIteratorInterface<StackDataValueType, TParticleInterface, Stack>;
+        ConstStackIteratorInterface<StackDataValueType, MParticleInterface, Stack>;
 
     /**
-     * this is the full type of the user-declared TParticleInterface
+     * this is the full type of the user-declared MParticleInterface
      */
     using ParticleInterfaceType = typename StackIterator::ParticleInterfaceType;
     /**
@@ -122,15 +123,15 @@ namespace corsika::stack {
     using ParticleType = StackIterator;
 
     // friends are needed since they need access to protected members
-    friend class StackIteratorInterface<StackDataValueType, TParticleInterface, Stack>;
-    friend class ConstStackIteratorInterface<StackDataValueType, TParticleInterface,
+    friend class StackIteratorInterface<StackDataValueType, MParticleInterface, Stack>;
+    friend class ConstStackIteratorInterface<StackDataValueType, MParticleInterface,
                                              Stack>;
-    //friend class SecondaryView<StackDataValueType, TParticleInterface>;
+    //friend class SecondaryView<StackDataValueType, MParticleInterface>;
     template <typename T1,                     //=TStackData,
-              template <typename> typename M1, //=TParticleInterface,
+              template <typename> typename M1, //=MParticleInterface,
                                                //             template<typename>typename M2>
               template <class T2, template <class> class T3> class MSecondaryProducer>
-    friend class SecondaryView; //<TStackData,TParticleInterface,M>; // access for SecondaryView
+    friend class SecondaryView; //<TStackData,MParticleInterface,M>; // access for SecondaryView
 
     friend class ParticleBase<StackIterator>;
 
diff --git a/Framework/StackInterface/testCombinedStack.cc b/Framework/StackInterface/testCombinedStack.cc
index e5a8932ecf5de4244f8ee6470e409d56c7481047..2f09327269eeaa20bedf596449d0b7ecd5c3896c 100644
--- a/Framework/StackInterface/testCombinedStack.cc
+++ b/Framework/StackInterface/testCombinedStack.cc
@@ -277,7 +277,7 @@ public:
 // combined stack
 template <typename StackIter>
 using CombinedTestInterfaceType2 =
-    corsika::stack::CombinedParticleInterface<StackTest::PIType, TestParticleInterface3,
+    corsika::stack::CombinedParticleInterface<StackTest::MPIType, TestParticleInterface3,
                                               StackIter>;
 
 using StackTest2 = CombinedStack<typename StackTest::StackImpl, TestStackData3,
@@ -363,7 +363,7 @@ TEST_CASE("Combined Stack - multi", "[stack]") {
  */
 template <typename StackIter>
 using CombinedTestInterfaceType2 =
-    corsika::stack::CombinedParticleInterface<StackTest::PIType, TestParticleInterface3,
+    corsika::stack::CombinedParticleInterface<StackTest::MPIType, TestParticleInterface3,
                                               StackIter>;
 
 using StackTest2 = CombinedStack<typename StackTest::StackImpl, TestStackData3,
diff --git a/Processes/TrackingLine/testTrackingLineStack.h b/Processes/TrackingLine/testTrackingLineStack.h
index d727064eb10655ac9f91bfe1902d6e9147bfde58..5c714048a5eb1e3978f39f6815c80eaaebcdc8a0 100644
--- a/Processes/TrackingLine/testTrackingLineStack.h
+++ b/Processes/TrackingLine/testTrackingLineStack.h
@@ -31,7 +31,7 @@ using SetupGeometryDataInterface =
 // combine particle data stack with geometry information for tracking
 template <typename StackIter>
 using StackWithGeometryInterface = corsika::stack::CombinedParticleInterface<
-    corsika::stack::nuclear_extension::ParticleDataStack::PIType,
+    corsika::stack::nuclear_extension::ParticleDataStack::MPIType,
     SetupGeometryDataInterface, StackIter>;
 
 using TestTrackingLineStack = corsika::stack::CombinedStack<
diff --git a/Setup/SetupStack.h b/Setup/SetupStack.h
index b838c04840d27d9feb6d27fc4a1fc2b34710ae9d..8721a023606141872dca1d7c7edbb1b094b92320 100644
--- a/Setup/SetupStack.h
+++ b/Setup/SetupStack.h
@@ -16,6 +16,7 @@
 
 #include <corsika/setup/SetupEnvironment.h>
 
+
 namespace corsika::setup {
 
   namespace detail {
@@ -33,7 +34,7 @@ namespace corsika::setup {
     // combine particle data stack with geometry information for tracking
     template <typename TStackIter>
     using StackWithGeometryInterface = corsika::stack::CombinedParticleInterface<
-        stack::nuclear_extension::ParticleDataStack::PIType, SetupGeometryDataInterface,
+        stack::nuclear_extension::ParticleDataStack::MPIType, SetupGeometryDataInterface,
         TStackIter>;
 
     using StackWithGeometry = corsika::stack::CombinedStack<
@@ -47,7 +48,7 @@ namespace corsika::setup {
     // combine dummy stack with geometry information for tracking
     template <typename TStackIter>
     using StackWithHistoryInterface = corsika::stack::CombinedParticleInterface<
-        StackWithGeometry::PIType, history::HistoryEventDataInterface, TStackIter>;
+        StackWithGeometry::MPIType, history::HistoryEventDataInterface, TStackIter>;
 
     using StackWithHistory =
         corsika::stack::CombinedStack<typename StackWithGeometry::StackImpl,
@@ -84,7 +85,7 @@ namespace corsika::setup {
 #if defined(__clang__)
     using TheStackView = corsika::stack::SecondaryView<
         typename corsika::setup::Stack::StackImpl,
-        // CHECK with CLANG: corsika::setup::Stack::PIType>;
+        // CHECK with CLANG: corsika::setup::Stack::MPIType>;
         // corsika::setup::detail::StackWithGeometryInterface>;
         corsika::setup::detail::StackWithHistoryInterface>;
 #elif defined(__GNUC__) || defined(__GNUG__)
diff --git a/Stack/GeometryNodeStackExtension/testGeometryNodeStackExtension.cc b/Stack/GeometryNodeStackExtension/testGeometryNodeStackExtension.cc
index bad4864254345c980cd02e19c840cbd5eb29fe77..596d7b0a126c1d5245e20c85a426f7b5ffcb7cad 100644
--- a/Stack/GeometryNodeStackExtension/testGeometryNodeStackExtension.cc
+++ b/Stack/GeometryNodeStackExtension/testGeometryNodeStackExtension.cc
@@ -32,7 +32,7 @@ using DummyGeometryDataInterface =
 // combine dummy stack with geometry information for tracking
 template <typename TStackIter>
 using StackWithGeometryInterface =
-    corsika::stack::CombinedParticleInterface<dummy::DummyStack::PIType,
+    corsika::stack::CombinedParticleInterface<dummy::DummyStack::MPIType,
                                               DummyGeometryDataInterface, TStackIter>;
 
 using TestStack =
diff --git a/Stack/History/testHistoryStack.cc b/Stack/History/testHistoryStack.cc
index 80b1de4436178020bb6e32d0dd67eacc437417ac..e332d7620d19434d602a085c455e8dc196dd9a1f 100644
--- a/Stack/History/testHistoryStack.cc
+++ b/Stack/History/testHistoryStack.cc
@@ -40,7 +40,7 @@ using DummyHistoryDataInterface =
 // combine dummy stack with geometry information for tracking
 template <typename TStackIter>
 using StackWithHistoryInterface =
-    corsika::stack::CombinedParticleInterface<dummy::DummyStack::PIType,
+    corsika::stack::CombinedParticleInterface<dummy::DummyStack::MPIType,
                                               DummyHistoryDataInterface, TStackIter>;
 
 using TestStack =
diff --git a/Stack/History/testHistoryView.cc b/Stack/History/testHistoryView.cc
index d85693bc083becaa61cf4b33c6868682ced1ccac..874d50f36d935ed0927a632d408d451ed2bdbbf2 100644
--- a/Stack/History/testHistoryView.cc
+++ b/Stack/History/testHistoryView.cc
@@ -30,7 +30,7 @@ using namespace corsika::units::si;
 // combine dummy stack with geometry information for tracking
 template <typename TStackIter>
 using StackWithHistoryInterface = corsika::stack::CombinedParticleInterface<
-    stack::nuclear_extension::ParticleDataStack::PIType,
+    stack::nuclear_extension::ParticleDataStack::MPIType,
     history::HistoryEventDataInterface, TStackIter>;
 
 using TestStack = corsika::stack::CombinedStack<
diff --git a/Stack/NuclearStackExtension/NuclearStackExtension.h b/Stack/NuclearStackExtension/NuclearStackExtension.h
index 79d4da2f9d5492e66f4e4472b91947f790536e1f..e9ead6eb2db33df55abd281e460e74e11eaa2eb4 100644
--- a/Stack/NuclearStackExtension/NuclearStackExtension.h
+++ b/Stack/NuclearStackExtension/NuclearStackExtension.h
@@ -338,7 +338,7 @@ namespace corsika::stack {
     template <typename StackIter>
     using ExtendedParticleInterfaceType =
         corsika::stack::nuclear_extension::NuclearParticleInterface<
-            corsika::stack::super_stupid::SuperStupidStack::PIType, StackIter>;
+            corsika::stack::super_stupid::SuperStupidStack::MPIType, StackIter>;
 
     // the particle data stack with extra nuclear information:
     using ParticleDataStack = corsika::stack::nuclear_extension::NuclearStackExtension<