diff --git a/Documentation/Examples/stack_example.cc b/Documentation/Examples/stack_example.cc
index 6f6dd03824da770253d2a2557e2c467c0ce7752c..3d28e5566b2f53df940bf2769e85c4331d276e87 100644
--- a/Documentation/Examples/stack_example.cc
+++ b/Documentation/Examples/stack_example.cc
@@ -21,6 +21,7 @@
 
 using namespace corsika::units::si;
 using namespace corsika::stack;
+using namespace corsika;
 using namespace std;
 
 void fill(corsika::stack::super_stupid::SuperStupidStack& s) {
@@ -44,7 +45,6 @@ void read(corsika::stack::super_stupid::SuperStupidStack& s) {
     assert(p.GetPID() == corsika::particles::Code::Electron);
     assert(p.GetEnergy() == 1.5_GeV * (i++));
   }
-  // assert(total_energy == 82.5_GeV);
 }
 
 int main() {
diff --git a/Environment/Environment.h b/Environment/Environment.h
index 97931aeffe2fe557b0328f97bbea8712a5dffc7e..611da5d16b767afeeeddbebcf4c94c9d3c3efb85 100644
--- a/Environment/Environment.h
+++ b/Environment/Environment.h
@@ -1,4 +1,26 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Environment/FlatAtmosphere/FlatAtmosphere.h b/Environment/FlatAtmosphere/FlatAtmosphere.h
index 6839def48c2f6fddfafd0beb5fd4ca46058ebd09..efc579a822ccd9d33199becaa884b8c1bc23fa0e 100644
--- a/Environment/FlatAtmosphere/FlatAtmosphere.h
+++ b/Environment/FlatAtmosphere/FlatAtmosphere.h
@@ -8,3 +8,25 @@
  * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
  * the license.
  */
+
+
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
diff --git a/Environment/HomogeneousMedium.h b/Environment/HomogeneousMedium.h
index e426314002fe3996ef375f88c6ae987e22d2c6ae..9691dce339b6897259796b2d4daeaf6301788f83 100644
--- a/Environment/HomogeneousMedium.h
+++ b/Environment/HomogeneousMedium.h
@@ -1,4 +1,26 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Environment/IMediumModel.h b/Environment/IMediumModel.h
index 84832eef0025c4a9c255d88857165bf3b9e0800c..8779ac451c97bfb96d45b295a4b6f82d80938471 100644
--- a/Environment/IMediumModel.h
+++ b/Environment/IMediumModel.h
@@ -1,4 +1,26 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Environment/NuclearComposition.h b/Environment/NuclearComposition.h
index 40bf93ed40b3fedd90f4e1c2c50f24408e8b8894..0efb49bb9fc6b1787ca9ef84b93dd04475ce9e54 100644
--- a/Environment/NuclearComposition.h
+++ b/Environment/NuclearComposition.h
@@ -1,4 +1,26 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Environment/VolumeTreeNode.h b/Environment/VolumeTreeNode.h
index 3331c41bf5e060bb904f5a78f78485af0440d04b..60a3d95602ef8f624c18caf86220ff8286c2ddf6 100644
--- a/Environment/VolumeTreeNode.h
+++ b/Environment/VolumeTreeNode.h
@@ -1,4 +1,26 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Environment/testEnvironment.cc b/Environment/testEnvironment.cc
index 5856818670ec1ddd8df187f624b8ca45e2e4e117..f584920251b18146e14414b4134796919984fc10 100644
--- a/Environment/testEnvironment.cc
+++ b/Environment/testEnvironment.cc
@@ -1,4 +1,26 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Framework/Cascade/Cascade.h b/Framework/Cascade/Cascade.h
index 3adaac2bc3cdb0b0fc23b4f1f986c4e9863a7f65..8c9ea2e1bc3195d49086adc41384a839ef96c83d 100644
--- a/Framework/Cascade/Cascade.h
+++ b/Framework/Cascade/Cascade.h
@@ -1,4 +1,26 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Framework/Cascade/Step.cc b/Framework/Cascade/Step.cc
index ba29d2341a3863ec019e6001ad727c8901bee77d..25c7750310dfc7c28d2a78425f2dd42ff5b7af80 100644
--- a/Framework/Cascade/Step.cc
+++ b/Framework/Cascade/Step.cc
@@ -1,4 +1,26 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Framework/Cascade/testCascade.cc b/Framework/Cascade/testCascade.cc
index 7abf985ad612ba9f6fb23bae31615d2d392b5f93..960bd73159afa4a8c71398fabfa05cf050833a88 100644
--- a/Framework/Cascade/testCascade.cc
+++ b/Framework/Cascade/testCascade.cc
@@ -1,4 +1,26 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Framework/Geometry/BaseTrajectory.h b/Framework/Geometry/BaseTrajectory.h
index 8d13f97a3a96c46549f8a4b8a5baad8951e33353..6e62d87c236a2354b628b73d86d7fc81e5c26e95 100644
--- a/Framework/Geometry/BaseTrajectory.h
+++ b/Framework/Geometry/BaseTrajectory.h
@@ -1,4 +1,15 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Framework/Geometry/BaseVector.h b/Framework/Geometry/BaseVector.h
index c41d8edf205f84b2066f83a61a253130225ab207..4f4c723e057aac3ce95d491bfb0ffc2413a6aae7 100644
--- a/Framework/Geometry/BaseVector.h
+++ b/Framework/Geometry/BaseVector.h
@@ -1,4 +1,15 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Framework/Geometry/CoordinateSystem.cc b/Framework/Geometry/CoordinateSystem.cc
index 35e2941678d970b1868626a252785055d4413be4..f42b13a6636b24bc61353daf5682c9084dbb8aa0 100644
--- a/Framework/Geometry/CoordinateSystem.cc
+++ b/Framework/Geometry/CoordinateSystem.cc
@@ -1,4 +1,15 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Framework/Geometry/CoordinateSystem.h b/Framework/Geometry/CoordinateSystem.h
index aaf226f3833b732488bcb457f76c0dbbd80049dc..9790225d980565a4eec7139016c5e5369da1d70d 100644
--- a/Framework/Geometry/CoordinateSystem.h
+++ b/Framework/Geometry/CoordinateSystem.h
@@ -1,4 +1,26 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Framework/Geometry/FourVector.h b/Framework/Geometry/FourVector.h
index 0a917a153d23a623f8d34881300a2ebccdc3ed6d..d9e792d9cfaad7d595c9ec79696890567bd3614f 100644
--- a/Framework/Geometry/FourVector.h
+++ b/Framework/Geometry/FourVector.h
@@ -1,4 +1,15 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Framework/Geometry/Helix.h b/Framework/Geometry/Helix.h
index caf2c34d0009bb2e33ba0bcbf0babcdf7136ba41..5875f6738ed7008ddb3ba6b8511d10bd2e261d71 100644
--- a/Framework/Geometry/Helix.h
+++ b/Framework/Geometry/Helix.h
@@ -1,4 +1,15 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Framework/Geometry/Line.h b/Framework/Geometry/Line.h
index ce795d8d9ffc918c9b6559278ee6a8cf58bdd282..f6730d5eb5bda2c7c179e11a1f5944810c242361 100644
--- a/Framework/Geometry/Line.h
+++ b/Framework/Geometry/Line.h
@@ -1,4 +1,15 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Framework/Geometry/Point.h b/Framework/Geometry/Point.h
index f05bd31d1ca628f1f32834a9e6d6300e6ef2578c..053d9605f2a1978c0c80a637cf777a39cf79244f 100644
--- a/Framework/Geometry/Point.h
+++ b/Framework/Geometry/Point.h
@@ -1,4 +1,26 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Framework/Geometry/QuantityVector.h b/Framework/Geometry/QuantityVector.h
index dafef96b6a36e40f7b64d26582b70496ddb6017c..2c65a90f007f417f8e10d7fb6eb506d8063f85c6 100644
--- a/Framework/Geometry/QuantityVector.h
+++ b/Framework/Geometry/QuantityVector.h
@@ -1,4 +1,26 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Framework/Geometry/RootCoordinateSystem.h b/Framework/Geometry/RootCoordinateSystem.h
index 0e641b3a349e22173fd894e7bd005a8f71530a2b..34091bcf47bc09d124f74b004752d46ad7837647 100644
--- a/Framework/Geometry/RootCoordinateSystem.h
+++ b/Framework/Geometry/RootCoordinateSystem.h
@@ -1,4 +1,15 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Framework/Geometry/Sphere.h b/Framework/Geometry/Sphere.h
index 5a38820a3fecc600d6c2b55177ababc777b7c13c..436008dc15b1ace9faedc603ca9bdbda4b6ff769 100644
--- a/Framework/Geometry/Sphere.h
+++ b/Framework/Geometry/Sphere.h
@@ -1,4 +1,15 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Framework/Geometry/Trajectory.h b/Framework/Geometry/Trajectory.h
index 5be99e363ebe2b734510e36b2b8a21a5d86ecb38..168121f03499d2716d183da86f87a7b2ab8b25f9 100644
--- a/Framework/Geometry/Trajectory.h
+++ b/Framework/Geometry/Trajectory.h
@@ -1,4 +1,15 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Framework/Geometry/Vector.h b/Framework/Geometry/Vector.h
index 5ac1f118b789b500ad26a23f840bda954b2c9800..01b75835d09428f5632888683eaefa560326b0e0 100644
--- a/Framework/Geometry/Vector.h
+++ b/Framework/Geometry/Vector.h
@@ -1,4 +1,26 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Framework/Geometry/Volume.h b/Framework/Geometry/Volume.h
index c6c953d9511132e8663a25a3f05cbbd82b98916a..c4fd7e8146d43b86241e5f03995df7886f0ce47e 100644
--- a/Framework/Geometry/Volume.h
+++ b/Framework/Geometry/Volume.h
@@ -1,4 +1,15 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Framework/Geometry/testFourVector.cc b/Framework/Geometry/testFourVector.cc
index a4063f0ef9a9b7d3528142c2d06094e9e70c7755..fe7378885adf3801364d74dfa7672ea49cf15f8d 100644
--- a/Framework/Geometry/testFourVector.cc
+++ b/Framework/Geometry/testFourVector.cc
@@ -1,4 +1,15 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Framework/Geometry/testGeometry.cc b/Framework/Geometry/testGeometry.cc
index 0a6dbbdecdad0f49f5dc902f3997c5a0f37afd7c..03d10b4f31b909b734aa232c95164c45f3abfd02 100644
--- a/Framework/Geometry/testGeometry.cc
+++ b/Framework/Geometry/testGeometry.cc
@@ -1,4 +1,26 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Framework/Particles/NuclearData.xml b/Framework/Particles/NuclearData.xml
index 930a3565a1156689df02552b9e82e0cc7c9dfec2..1a92b0d5a8a4796e8d4419075e76192d2a4e4d1c 100644
--- a/Framework/Particles/NuclearData.xml
+++ b/Framework/Particles/NuclearData.xml
@@ -1,5 +1,8 @@
 <chapter name="Nuclear Data">
 
+<particle id="1000000000" name="nucleus" A="0" Z="0" >
+</particle> 
+
 <particle id="1000010010" name="hydrogen" A="1" Z="1" >
 </particle> 
 
diff --git a/Framework/Particles/ParticleData.xml b/Framework/Particles/ParticleData.xml
index 16e7878abe42147c0d2ec3a285465c975ecec93c..6c8c3d0a06fec27481d508c030ddad6a7df8f925 100644
--- a/Framework/Particles/ParticleData.xml
+++ b/Framework/Particles/ParticleData.xml
@@ -4,7 +4,7 @@
 <particle id="0" name="void" spinType="0" chargeType="0" colType="0" 
           m0="0.00000"> 
 </particle> 
- 
+
 <!--
 <particle id="1" name="d" antiName="dbar" spinType="2" chargeType="-1" colType="1" 
           m0="0.33000"> 
diff --git a/Framework/Particles/ParticleProperties.cc b/Framework/Particles/ParticleProperties.cc
index 7df29e065beb35100afddb77a1e22ff70480eb01..f26513a48345a555a15f3274c1a98c3dd389e300 100644
--- a/Framework/Particles/ParticleProperties.cc
+++ b/Framework/Particles/ParticleProperties.cc
@@ -1,4 +1,15 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Framework/Particles/pdxml_reader.py b/Framework/Particles/pdxml_reader.py
index 2e463a0e1d7c9a227d9f49160d4916ecf3390761..99544cf5029c933ef9a43478dae73d28c2efbb56 100755
--- a/Framework/Particles/pdxml_reader.py
+++ b/Framework/Particles/pdxml_reader.py
@@ -251,7 +251,7 @@ def read_nuclei_db(filename, particle_db, classnames):
         }
     
     return particle_db
-    
+
 
 
 
diff --git a/Framework/Particles/testParticles.cc b/Framework/Particles/testParticles.cc
index 30cbbca868befbb4ae3ea6c5db558ab1038d5547..1ca8b2188b5004c22c3168b5ad90290aa10a8ffb 100644
--- a/Framework/Particles/testParticles.cc
+++ b/Framework/Particles/testParticles.cc
@@ -45,6 +45,8 @@ TEST_CASE("ParticleProperties", "[Particles]") {
   SECTION("Names") {
     REQUIRE(Electron::GetName() == "e-");
     REQUIRE(PiMinus::GetName() == "pi-");
+    REQUIRE(Nucleus::GetName() == "nucleus");
+    REQUIRE(Iron::GetName() == "iron");
   }
 
   SECTION("PDG") {
diff --git a/Framework/ProcessSequence/BaseProcess.h b/Framework/ProcessSequence/BaseProcess.h
index 8b4014478f5ebef33e4acd76f6b7315f2c1e5041..1ed474b34c519a35c701a7cd27d2b45b320bf493 100644
--- a/Framework/ProcessSequence/BaseProcess.h
+++ b/Framework/ProcessSequence/BaseProcess.h
@@ -1,4 +1,26 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Framework/ProcessSequence/ContinuousProcess.h b/Framework/ProcessSequence/ContinuousProcess.h
index 9a3424a35d4637a9e21212a0909f2456f71b3597..a449bc4905fa42c3d08c225e507ca01147822e04 100644
--- a/Framework/ProcessSequence/ContinuousProcess.h
+++ b/Framework/ProcessSequence/ContinuousProcess.h
@@ -1,4 +1,26 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Framework/ProcessSequence/DecayProcess.h b/Framework/ProcessSequence/DecayProcess.h
index 82be572d6fc8e19260fa50a5267f1171c20e042b..96199a3a7ff1c2cd7d42e340dbaf5512efd90b0d 100644
--- a/Framework/ProcessSequence/DecayProcess.h
+++ b/Framework/ProcessSequence/DecayProcess.h
@@ -1,4 +1,26 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Framework/ProcessSequence/DiscreteProcess.h b/Framework/ProcessSequence/DiscreteProcess.h
index 40b54453007855540a72910ab9da708201b17b88..c03e4b41bc150fa223dac91962f02b0c8bce158b 100644
--- a/Framework/ProcessSequence/DiscreteProcess.h
+++ b/Framework/ProcessSequence/DiscreteProcess.h
@@ -1,4 +1,26 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Framework/ProcessSequence/InteractionProcess.h b/Framework/ProcessSequence/InteractionProcess.h
index 96472755376c4cf630f8ac92e92c5c08eb1c2f48..27883b256011d0a066f4151a204ec83554a72d6b 100644
--- a/Framework/ProcessSequence/InteractionProcess.h
+++ b/Framework/ProcessSequence/InteractionProcess.h
@@ -1,4 +1,26 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Framework/ProcessSequence/ProcessReturn.h b/Framework/ProcessSequence/ProcessReturn.h
index 94a69406ac42c9ec7caccb53e0e42493ec15fe32..566b5f6d800c7130be1287da395ec1da5429c8de 100644
--- a/Framework/ProcessSequence/ProcessReturn.h
+++ b/Framework/ProcessSequence/ProcessReturn.h
@@ -1,4 +1,26 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Framework/ProcessSequence/ProcessSequence.h b/Framework/ProcessSequence/ProcessSequence.h
index 4d4d3fbfdaff3d075f6cc613da78ece584ed7142..7bff1dabd050c60909e5288b2169bd007113dc81 100644
--- a/Framework/ProcessSequence/ProcessSequence.h
+++ b/Framework/ProcessSequence/ProcessSequence.h
@@ -1,4 +1,26 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Framework/ProcessSequence/ProcessSignature.h b/Framework/ProcessSequence/ProcessSignature.h
index 38503b87b49fcd900cc8d2b28f4872e9aeabc419..31d37139120e26eb74c75976da357bbbcfa04765 100644
--- a/Framework/ProcessSequence/ProcessSignature.h
+++ b/Framework/ProcessSequence/ProcessSignature.h
@@ -1,4 +1,26 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Framework/ProcessSequence/testProcessSequence.cc b/Framework/ProcessSequence/testProcessSequence.cc
index 8fd46418ac838ca1af0f2beb3691bf599a40eb05..77f500054503eb82088b0a9fee633e53cbb7c862 100644
--- a/Framework/ProcessSequence/testProcessSequence.cc
+++ b/Framework/ProcessSequence/testProcessSequence.cc
@@ -1,4 +1,26 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Framework/Random/ExponentialDistribution.h b/Framework/Random/ExponentialDistribution.h
index dc17b20997e9932aaedfc8f26eeec3c2d63a1392..347d4048274f0574194213a43e52404dc8b0a71c 100644
--- a/Framework/Random/ExponentialDistribution.h
+++ b/Framework/Random/ExponentialDistribution.h
@@ -1,4 +1,26 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Framework/Random/RNGManager.cc b/Framework/Random/RNGManager.cc
index c02f7a4329b52cd397ba78c404381430c6d030b1..c88694b24c6dd6344fc28635e8d4ed8307f2324f 100644
--- a/Framework/Random/RNGManager.cc
+++ b/Framework/Random/RNGManager.cc
@@ -1,4 +1,26 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Framework/Random/RNGManager.h b/Framework/Random/RNGManager.h
index 9637b4b8279a48169a523df687eab0146afada38..12e19189bd2a2d3ccf46baff33d6392ce96fc987 100644
--- a/Framework/Random/RNGManager.h
+++ b/Framework/Random/RNGManager.h
@@ -1,4 +1,26 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Framework/Random/UniformRealDistribution.h b/Framework/Random/UniformRealDistribution.h
index 1328377dc2d88114c447cd5a4558dfec21cdf112..e73fbeb1e423d0cce8e1f25722881a6977b50519 100644
--- a/Framework/Random/UniformRealDistribution.h
+++ b/Framework/Random/UniformRealDistribution.h
@@ -1,4 +1,26 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Framework/Random/testRandom.cc b/Framework/Random/testRandom.cc
index c362d393fea3bc8bf4c4ad72949dd0c6a8d0bf86..4fcc1c64cb7a551330a2316ae854c63b45656700 100644
--- a/Framework/Random/testRandom.cc
+++ b/Framework/Random/testRandom.cc
@@ -1,4 +1,26 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Framework/StackInterface/ParticleBase.h b/Framework/StackInterface/ParticleBase.h
index 5bf2ece2b1e26af2ccfad2b34e5c3a9534250d86..e148f138982ae313407748a052b865777a84b4d6 100644
--- a/Framework/StackInterface/ParticleBase.h
+++ b/Framework/StackInterface/ParticleBase.h
@@ -22,6 +22,23 @@ namespace corsika::stack {
    The base class to define the readout of particle properties from a
    particle stack. Every stack must implement this readout via the
    ParticleBase class.
+
+   The StackIterator template argument is derived from StackIteratorInterface, which is of type
+   <code>
+   template <typename StackData, template <typename> typename ParticleInterface>
+   class StackIteratorInterface : public ParticleInterface<StackIteratorInterface<StackData, ParticleInterface>>
+   </code>
+
+   where StackData must refer to a Stack type, and ParticleInterface<StackIteratorInterface> is the corresponding particle readout class. 
+
+   Thus, StackIteratorInterface is a CRTP class, injecting the full StackIteratorInterface machinery into the ParticleInterface (aka ParticleBase) type! 
+
+   The declartion of a StackIteratorInterface type simultaneously declares the corresponding ParticleInterface type. 
+
+   Furthermore, the operator* of the StackIteratorInterface returns a
+   static_cast to the ParticleInterface type, allowing a direct
+   readout of the particle data from the iterator. 
+
   */
 
   template <typename StackIterator>
@@ -31,6 +48,7 @@ namespace corsika::stack {
     ParticleBase() = default;
 
   private:
+    /*
     // those copy constructors and assigments should never be implemented
     ParticleBase(ParticleBase&) = delete;
     ParticleBase operator=(ParticleBase&) = delete;
@@ -38,10 +56,11 @@ namespace corsika::stack {
     ParticleBase operator=(ParticleBase&&) = delete;
     ParticleBase(const ParticleBase&) = delete;
     ParticleBase operator=(const ParticleBase&) = delete;
-
+    */
   public:
-    /** delete this particle on the stack. The corresponding iterator
-     *  will be invalidated by this operation
+    /**
+     * Delete this particle on the stack. The corresponding iterator
+     * will be invalidated by this operation
      */
     void Delete() { GetIterator().GetStack().Delete(GetIterator()); }
 
@@ -55,7 +74,7 @@ namespace corsika::stack {
       return GetStack().AddSecondary(GetIterator(), args...);
     }
 
-    //  protected: // todo should [MAY]be proteced, but don't now how to 'friend Stack'
+    // protected: // todo should [MAY]be proteced, but don't now how to 'friend Stack'
     // Function to provide CRTP access to inheriting class (type)
     /**
      * return the corresponding StackIterator for this particle
@@ -66,7 +85,8 @@ namespace corsika::stack {
     }
 
   protected:
-    /** @name Access to underlying stack data
+    /**
+        @name Access to underlying stack data
         @{
     */
     auto& GetStackData() { return GetIterator().GetStackData(); }
@@ -78,7 +98,7 @@ namespace corsika::stack {
     /**
      * return the index number of the underlying iterator object
      */
-    int GetIndex() const { return GetIterator().GetIndex(); }
+    unsigned int GetIndex() const { return GetIterator().GetIndex(); }
   };
 
 } // namespace corsika::stack
diff --git a/Framework/StackInterface/Stack.h b/Framework/StackInterface/Stack.h
index bc9aa2e5c0ee0388df07a6ea4a90b4c3865c4485..7f42bbc5665d667a926e9df56f81489ffdd97d24 100644
--- a/Framework/StackInterface/Stack.h
+++ b/Framework/StackInterface/Stack.h
@@ -27,36 +27,67 @@ namespace corsika::stack {
      ParticleInterface, which is one of the essential template
      parameters for the Stack.
 
-     Important: ParticleInterface must inherit from ParticleBase !
+     <b>Important:</b> ParticleInterface must inherit from ParticleBase !
    */
 
   template <typename>
   class ParticleInterface; // forward decl
 
-  /**
-     Interface definition of a Stack object. The Stack implements the
+  /**     
+     The Stack class provides (and connects) the main particle data storage machinery. 
+
+     The StackData type is the user-provided bare data storage
+     object. This can be of any complexity, from a simple struct
+     (fortran common block), to a combination of different and
+     distributed data sources. 
+
+     The user-provided ParticleInterface template type is the base
+     class type of the StackIteratorInterface class (CRTP) and must
+     provide all functions to read single particle data from the
+     StackData, given an 'unsigned int' index. 
+     
+     The Stack implements the
      std-type begin/end function to allow integration in normal for
-     loops etc.
+     loops, ranges, etc.
    */
 
   template <typename StackData, template <typename> typename ParticleInterface>
   class Stack : public StackData {
 
   public:
-    typedef Stack<StackData, ParticleInterface> StackType;
-    typedef StackIteratorInterface<StackData, ParticleInterface> StackIterator;
-    typedef ConstStackIteratorInterface<StackData, ParticleInterface> ConstStackIterator;
-    // typedef const StackIterator ConstStackIterator;
+    typedef StackData StackImpl; ///< this is the type of the user-provided data structure
+    template<typename SI> using PIType = ParticleInterface<SI>;
+    //typedef ParticleInterface<StackIteratorInterface> StackParticleInterface;  ///< this is the type of the user-provided ParticleInterface
+    //typedef Stack<StackData, ParticleInterface> StackType;
+
+    /**
+     * 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
+     * ParticleInterface template class simultaneously.
+     */
+    typedef StackIteratorInterface<StackData, ParticleInterface>
+      StackIterator;
+    typedef ConstStackIteratorInterface<StackData,
+      ParticleInterface> ConstStackIterator;
+    /**
+     * this is the full type of the declared ParticleInterface: typedef typename
+     */
     typedef typename StackIterator::ParticleInterfaceType ParticleType;
+    
     friend class StackIteratorInterface<StackData, ParticleInterface>;
     friend class ConstStackIteratorInterface<StackData, ParticleInterface>;
 
+  protected:
+    using StackData::Copy;
+    using StackData::Swap;
+
   public:
     using StackData::GetCapacity;
     using StackData::GetSize;
 
     using StackData::Clear;
-    using StackData::Copy;
 
     using StackData::DecrementSize;
     using StackData::IncrementSize;
@@ -88,9 +119,12 @@ namespace corsika::stack {
       IncrementSize();
       return StackIterator(*this, GetSize() - 1, parent, v...);
     }
-    void Copy(StackIterator& a, StackIterator& b) { Copy(a.GetIndex(), b.GetIndex()); }
+    void Swap(StackIterator a, StackIterator b) { Swap(a.GetIndex(), b.GetIndex()); }
+    void Swap(ConstStackIterator a, ConstStackIterator b) { Swap(a.GetIndex(), b.GetIndex()); }
+    void Copy(StackIterator a, StackIterator b) { Copy(a.GetIndex(), b.GetIndex()); }
+    void Copy(ConstStackIterator a, StackIterator b) { Copy(a.GetIndex(), b.GetIndex()); }
     /// delete this particle
-    void Delete(StackIterator& p) {
+    void Delete(StackIterator p) {
       if (GetSize() == 0) { /*error*/
         throw std::runtime_error("Stack, cannot delete entry since size is zero");
       }
@@ -98,7 +132,7 @@ namespace corsika::stack {
       DeleteLast();
       // p.SetInvalid();
     }
-    void Delete(ParticleType& p) { Delete(p.GetIterator()); }
+    void Delete(ParticleType p) { Delete(p.GetIterator()); }
     /// delete last particle on stack by decrementing stack size
     void DeleteLast() { DecrementSize(); }
     /// check if there are no further particles on stack
diff --git a/Framework/StackInterface/StackIteratorInterface.h b/Framework/StackInterface/StackIteratorInterface.h
index ad00c6c0939a4e99c020164ef4cd85cbc81a8788..effdd876a987734dc5d98c14b874d158af102366 100644
--- a/Framework/StackInterface/StackIteratorInterface.h
+++ b/Framework/StackInterface/StackIteratorInterface.h
@@ -51,11 +51,13 @@ namespace corsika::stack {
   class StackIteratorInterface
       : public ParticleInterface<StackIteratorInterface<StackData, ParticleInterface>> {
 
+  public:
     typedef Stack<StackData, ParticleInterface> StackType;
     /*typedef
         typename std::conditional<std::is_const<StackData>::value,
                                   const Stack<const StackData, ParticleInterface>&,
                                   Stack<StackData, ParticleInterface>&>::type StackType;*/
+    
     typedef ParticleInterface<StackIteratorInterface<StackData, ParticleInterface>>
         ParticleInterfaceType;
 
@@ -63,7 +65,7 @@ namespace corsika::stack {
     friend class ParticleBase<StackIteratorInterface>; // for access to GetStackData
 
   private:
-    int fIndex = 0;
+    unsigned int fIndex = 0;
     StackType* fData = 0; // info: Particles and StackIterators become invalid when parent
                           // Stack is copied or deleted!
 
@@ -75,7 +77,7 @@ namespace corsika::stack {
         @param data reference to the stack [rw]
         @param index index on stack
      */
-    StackIteratorInterface(StackType& data, const int index)
+    StackIteratorInterface(StackType& data, const unsigned int index)
         : fIndex(index)
         , fData(&data) {}
 
@@ -87,7 +89,7 @@ namespace corsika::stack {
        ParticleInterfaceType::SetParticleData(...) function
      */
     template <typename... Args>
-    StackIteratorInterface(StackType& data, const int index, const Args... args)
+    StackIteratorInterface(StackType& data, const unsigned int index, const Args... args)
         : fIndex(index)
         , fData(&data) {
       (**this).SetParticleData(args...);
@@ -104,7 +106,7 @@ namespace corsika::stack {
        ParticleInterfaceType::SetParticleData(...) function
     */
     template <typename... Args>
-    StackIteratorInterface(StackType& data, const int index,
+    StackIteratorInterface(StackType& data, const unsigned int index,
                            StackIteratorInterface& parent, const Args... args)
         : fIndex(index)
         , fData(&data) {
@@ -124,6 +126,9 @@ namespace corsika::stack {
       ++fIndex;
       return tmp;
     }
+    StackIteratorInterface operator+(int delta) {
+      return StackIteratorInterface(*fData, fIndex+delta);
+    }
     bool operator==(const StackIteratorInterface& rhs) { return fIndex == rhs.fIndex; }
     bool operator!=(const StackIteratorInterface& rhs) { return fIndex != rhs.fIndex; }
     /// Convert to value type
@@ -141,7 +146,7 @@ namespace corsika::stack {
      */
     ///@{
     /// Get current particle index
-    inline int GetIndex() const { return fIndex; }
+    inline unsigned int GetIndex() const { return fIndex; }
     /// Get current particle Stack object
     inline StackType& GetStack() { return *fData; }
     /// Get current particle const Stack object
@@ -153,6 +158,8 @@ namespace corsika::stack {
     ///@}
   }; // end class StackIterator
 
+
+  
   /**
      @class ConstStackIteratorInterface
 
@@ -164,6 +171,7 @@ namespace corsika::stack {
       : public ParticleInterface<
             ConstStackIteratorInterface<StackData, ParticleInterface>> {
 
+  public:
     typedef Stack<StackData, ParticleInterface> StackType;
     typedef ParticleInterface<ConstStackIteratorInterface<StackData, ParticleInterface>>
         ParticleInterfaceType;
@@ -172,7 +180,7 @@ namespace corsika::stack {
     friend class ParticleBase<ConstStackIteratorInterface>; // for access to GetStackData
 
   private:
-    int fIndex = 0;
+    unsigned int fIndex = 0;
     const StackType* fData = 0; // info: Particles and StackIterators become invalid when
                                 // parent Stack is copied or deleted!
 
@@ -180,7 +188,7 @@ namespace corsika::stack {
     ConstStackIteratorInterface() = delete;
 
   public:
-    ConstStackIteratorInterface(const StackType& data, const int index)
+    ConstStackIteratorInterface(const StackType& data, const unsigned int index)
         : fIndex(index)
         , fData(&data) {}
 
@@ -210,6 +218,9 @@ namespace corsika::stack {
       ++fIndex;
       return tmp;
     }
+    ConstStackIteratorInterface operator+(int delta) {
+      return ConstStackIteratorInterface(*fData, fIndex+delta);
+    }
     bool operator==(const ConstStackIteratorInterface& rhs) {
       return fIndex == rhs.fIndex;
     }
@@ -227,7 +238,7 @@ namespace corsika::stack {
         Only the const versions for read-only access
      */
     ///@{
-    inline int GetIndex() const { return fIndex; }
+    inline unsigned int GetIndex() const { return fIndex; }
     inline const StackType& GetStack() const { return *fData; }
     inline const StackData& GetStackData() const { return fData->GetStackData(); }
     ///@}
diff --git a/Framework/StackInterface/testStackInterface.cc b/Framework/StackInterface/testStackInterface.cc
index cde5a76e2b72dc7563efbd554a3024c4d28fff9f..3a5e945c46e4faa552724ee743241de935f48a41 100644
--- a/Framework/StackInterface/testStackInterface.cc
+++ b/Framework/StackInterface/testStackInterface.cc
@@ -29,8 +29,8 @@ public:
   // these functions are needed for the Stack interface
   void Init() {}
   void Clear() { fData.clear(); }
-  int GetSize() const { return fData.size(); }
-  int GetCapacity() const { return fData.size(); }
+  unsigned int GetSize() const { return fData.size(); }
+  unsigned int GetCapacity() const { return fData.size(); }
   void Copy(const int i1, const int i2) { fData[i2] = fData[i1]; }
   void Swap(const int i1, const int i2) {
     double tmp0 = fData[i1];
@@ -97,8 +97,8 @@ TEST_CASE("Stack", "[Stack]") {
     s.Init();
     s.Clear();
     s.IncrementSize();
-    s.Copy(0, 0);
-    s.Swap(0, 0);
+    s.Copy(s.cbegin(), s.begin());
+    s.Swap(s.begin(), s.begin());
     s.GetCapacity();
     REQUIRE(s.GetSize() == 1);
     s.DecrementSize();
diff --git a/Framework/Units/testUnits.cc b/Framework/Units/testUnits.cc
index e8f389a05818615475dd988cce1181f6bf66ba42..406da9fe9e5863427cc9cb36ef6d27cc4b5718a2 100644
--- a/Framework/Units/testUnits.cc
+++ b/Framework/Units/testUnits.cc
@@ -1,4 +1,26 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Framework/Utilities/Bit.h b/Framework/Utilities/Bit.h
index 7306e76d8d7f979fe18974452cd67a25b75b99c7..741d6ca3ced74417acb98395dbc04c8089a69f8f 100644
--- a/Framework/Utilities/Bit.h
+++ b/Framework/Utilities/Bit.h
@@ -1,4 +1,26 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Framework/Utilities/COMBoost.cc b/Framework/Utilities/COMBoost.cc
index 5d8b00857b66afb73c7cbbe922b65e87c57e767a..62990bc2dac395e6f4e658c98e262fa7b435f97e 100644
--- a/Framework/Utilities/COMBoost.cc
+++ b/Framework/Utilities/COMBoost.cc
@@ -1,4 +1,26 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Framework/Utilities/COMBoost.h b/Framework/Utilities/COMBoost.h
index eebc8358ad5f5891587c3ee9bda036e7c6b98784..5f300e2ff207e6701156cc1fba45bfe1438786d5 100644
--- a/Framework/Utilities/COMBoost.h
+++ b/Framework/Utilities/COMBoost.h
@@ -1,4 +1,26 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Framework/Utilities/CorsikaFenv.h b/Framework/Utilities/CorsikaFenv.h
index e7df5953461aa4d98dab8fa917b8b20847a22ddd..dd35268b35fb3f3092d7fa266996e6acb23c9ea2 100644
--- a/Framework/Utilities/CorsikaFenv.h
+++ b/Framework/Utilities/CorsikaFenv.h
@@ -1,4 +1,26 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Framework/Utilities/CorsikaFenvDefault.cc b/Framework/Utilities/CorsikaFenvDefault.cc
index f1bb7732bfe111ca3c71018282ac346bacadeee2..c6c90ca2f2c0f1a55780b007606d1ef3823f713a 100644
--- a/Framework/Utilities/CorsikaFenvDefault.cc
+++ b/Framework/Utilities/CorsikaFenvDefault.cc
@@ -1,4 +1,26 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Framework/Utilities/CorsikaFenvFallback.cc b/Framework/Utilities/CorsikaFenvFallback.cc
index ed71c5b6c07096fe3d846fd82d5afa5c284e6599..9d03760c8bb2f651db405ac8b260663395487991 100644
--- a/Framework/Utilities/CorsikaFenvFallback.cc
+++ b/Framework/Utilities/CorsikaFenvFallback.cc
@@ -1,4 +1,26 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Framework/Utilities/CorsikaFenvOSX.cc b/Framework/Utilities/CorsikaFenvOSX.cc
index 4495ebd1e823ad5a9a1b894d07c09ae8f842d068..f0cf4eb5456b4ab9d9b928385a25eaa5d85be6ea 100644
--- a/Framework/Utilities/CorsikaFenvOSX.cc
+++ b/Framework/Utilities/CorsikaFenvOSX.cc
@@ -1,4 +1,26 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Framework/Utilities/Singleton.h b/Framework/Utilities/Singleton.h
index 3780cc99a1398833a77729e26eb11f9b089ba753..25563940cf7736a69857b0168de2ed356f45e6c3 100644
--- a/Framework/Utilities/Singleton.h
+++ b/Framework/Utilities/Singleton.h
@@ -1,4 +1,26 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Framework/Utilities/testCOMBoost.cc b/Framework/Utilities/testCOMBoost.cc
index 501db86435b535f14b47e6f072cbf885878e8293..b7d917f85861f50ec3fcee35dd2864ad43a58aed 100644
--- a/Framework/Utilities/testCOMBoost.cc
+++ b/Framework/Utilities/testCOMBoost.cc
@@ -1,4 +1,26 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Framework/Utilities/testCorsikaFenv.cc b/Framework/Utilities/testCorsikaFenv.cc
index eb4885b9a233135356e8a047b1dc4c86861e25b4..c8ae63ca546e0f7745b1e27785083d4ec4ebfad0 100644
--- a/Framework/Utilities/testCorsikaFenv.cc
+++ b/Framework/Utilities/testCorsikaFenv.cc
@@ -1,4 +1,26 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Framework/Utilities/try_feenableexcept.cc b/Framework/Utilities/try_feenableexcept.cc
index 9ca52262c2903878a70e4090f031f8915b619265..2b77a898d25b77b8cae0c00294d07aa1476f0d04 100644
--- a/Framework/Utilities/try_feenableexcept.cc
+++ b/Framework/Utilities/try_feenableexcept.cc
@@ -1,4 +1,26 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Main/Environment.h b/Main/Environment.h
index 6839def48c2f6fddfafd0beb5fd4ca46058ebd09..6e64a7418fb7849096f1bcdddb8f24842dfa82bf 100644
--- a/Main/Environment.h
+++ b/Main/Environment.h
@@ -8,3 +8,14 @@
  * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
  * the license.
  */
+
+
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
diff --git a/Main/Stack.h b/Main/Stack.h
index 6839def48c2f6fddfafd0beb5fd4ca46058ebd09..6e64a7418fb7849096f1bcdddb8f24842dfa82bf 100644
--- a/Main/Stack.h
+++ b/Main/Stack.h
@@ -8,3 +8,14 @@
  * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
  * the license.
  */
+
+
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
diff --git a/Main/shower.cc b/Main/shower.cc
index 5ca8d4ab2532081c4654cd51e98b9bcdda9cc2f6..9e9cbb1db5459a75a715feb2f9ebfb66253b6748 100644
--- a/Main/shower.cc
+++ b/Main/shower.cc
@@ -1,4 +1,15 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Processes/HadronicElasticModel/HadronicElasticModel.cc b/Processes/HadronicElasticModel/HadronicElasticModel.cc
index 943195b681a117ac9b36a1968d78ab8a8ab87629..9d85ac5e679472b9dc8198d39ae7928b5a9a559f 100644
--- a/Processes/HadronicElasticModel/HadronicElasticModel.cc
+++ b/Processes/HadronicElasticModel/HadronicElasticModel.cc
@@ -1,4 +1,15 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Processes/HadronicElasticModel/HadronicElasticModel.h b/Processes/HadronicElasticModel/HadronicElasticModel.h
index 8ddc55fa0504dc0950c7b4cb751c47df61b4ecb0..0ef645fafc5dffcf934621b55efe9c8591b8c447 100644
--- a/Processes/HadronicElasticModel/HadronicElasticModel.h
+++ b/Processes/HadronicElasticModel/HadronicElasticModel.h
@@ -1,4 +1,15 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Processes/NullModel/NullModel.cc b/Processes/NullModel/NullModel.cc
index 09956e7c703468d635cf5e7770fc067c036b52b7..f08d79f67381105b4dac1b4cd6d41655228be473 100644
--- a/Processes/NullModel/NullModel.cc
+++ b/Processes/NullModel/NullModel.cc
@@ -1,4 +1,15 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Processes/NullModel/NullModel.h b/Processes/NullModel/NullModel.h
index 6222e290f53e3d2e5d193ad7597f2a086b9eb2ff..09e78db15eea63e471431143cee61f696ac9fc45 100644
--- a/Processes/NullModel/NullModel.h
+++ b/Processes/NullModel/NullModel.h
@@ -1,4 +1,15 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Processes/NullModel/testNullModel.cc b/Processes/NullModel/testNullModel.cc
index 6bf7d99da7af02d8b0b4cd60b6f69628e28532e9..d68329d16ed740ece7e2cf93ed1bc35a795fbd4a 100644
--- a/Processes/NullModel/testNullModel.cc
+++ b/Processes/NullModel/testNullModel.cc
@@ -1,4 +1,15 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Processes/Sibyll/SibStack.h b/Processes/Sibyll/SibStack.h
index 11a5bb2bf131f2c941aa3505792c5b813447f50e..dd563d90fbada42875b7d5df1c16dfd2eb668da9 100644
--- a/Processes/Sibyll/SibStack.h
+++ b/Processes/Sibyll/SibStack.h
@@ -29,34 +29,34 @@ namespace corsika::process::sibyll {
     void Init();
 
     void Clear() { s_plist_.np = 0; }
-    int GetSize() const { return s_plist_.np; }
-    int GetCapacity() const { return 8000; }
+    unsigned int GetSize() const { return s_plist_.np; }
+    unsigned int GetCapacity() const { return 8000; }
 
-    void SetId(const int i, const int v) { s_plist_.llist[i] = v; }
-    void SetEnergy(const int i, const corsika::units::si::HEPEnergyType v) {
+    void SetId(const unsigned int i, const int v) { s_plist_.llist[i] = v; }
+    void SetEnergy(const unsigned int i, const corsika::units::si::HEPEnergyType v) {
       using namespace corsika::units::si;
       s_plist_.p[3][i] = v / 1_GeV;
     }
-    void SetMass(const int i, const corsika::units::si::HEPMassType v) {
+    void SetMass(const unsigned int i, const corsika::units::si::HEPMassType v) {
       using namespace corsika::units::si;
       s_plist_.p[4][i] = v / 1_GeV;
     }
-    void SetMomentum(const int i, const MomentumVector& v) {
+    void SetMomentum(const unsigned int i, const MomentumVector& v) {
       using namespace corsika::units::si;
       auto tmp = v.GetComponents();
       for (int idx = 0; idx < 3; ++idx) s_plist_.p[idx][i] = tmp[idx] / 1_GeV;
     }
 
-    int GetId(const int i) const { return s_plist_.llist[i]; }
+    int GetId(const unsigned int i) const { return s_plist_.llist[i]; }
     corsika::units::si::HEPEnergyType GetEnergy(const int i) const {
       using namespace corsika::units::si;
       return s_plist_.p[3][i] * 1_GeV;
     }
-    corsika::units::si::HEPEnergyType GetMass(const int i) const {
+    corsika::units::si::HEPEnergyType GetMass(const unsigned int i) const {
       using namespace corsika::units::si;
       return s_plist_.p[4][i] * 1_GeV;
     }
-    MomentumVector GetMomentum(const int i) const {
+    MomentumVector GetMomentum(const unsigned int i) const {
       using corsika::geometry::CoordinateSystem;
       using corsika::geometry::QuantityVector;
       using corsika::geometry::RootCoordinateSystem;
@@ -69,15 +69,15 @@ namespace corsika::process::sibyll {
       return v1;
     }
 
-    void Copy(const int i1, const int i2) {
+    void Copy(const unsigned int i1, const unsigned int i2) {
       s_plist_.llist[i2] = s_plist_.llist[i1];
-      for (int i=0; i<5; ++i)
+      for (unsigned int i=0; i<5; ++i)
 	s_plist_.p[i][i2] = s_plist_.p[i][i1];
     }
 
-    void Swap(const int i1, const int i2) {
+    void Swap(const unsigned int i1, const unsigned int i2) {
       std::swap(s_plist_.llist[i1], s_plist_.llist[i2]);
-      for (int i=0; i<5; ++i)
+      for (unsigned int i=0; i<5; ++i)
 	std::swap(s_plist_.p[i][i1], s_plist_.p[i][i2]);
     }
 
diff --git a/Processes/StackInspector/StackInspector.cc b/Processes/StackInspector/StackInspector.cc
index 312fe40ec82dfd4f1faf12870e397ef4fbe794bc..fa592342b0e6f4f6705a72a0d4cfaa3e3d1bfcb7 100644
--- a/Processes/StackInspector/StackInspector.cc
+++ b/Processes/StackInspector/StackInspector.cc
@@ -1,4 +1,15 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Processes/StackInspector/StackInspector.h b/Processes/StackInspector/StackInspector.h
index 8bb2ca45c498f7535aa6cae2761142ff8dabce74..98f6c0e2140e71159a459dfaf27769bbbd764d6f 100644
--- a/Processes/StackInspector/StackInspector.h
+++ b/Processes/StackInspector/StackInspector.h
@@ -1,4 +1,15 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Processes/StackInspector/testStackInspector.cc b/Processes/StackInspector/testStackInspector.cc
index 784be88f99131372f528b264660e7db6f93d3625..68937e34b44c357785daea9e47450477291d9d6c 100644
--- a/Processes/StackInspector/testStackInspector.cc
+++ b/Processes/StackInspector/testStackInspector.cc
@@ -1,4 +1,15 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Processes/TrackWriter/TrackWriter.cc b/Processes/TrackWriter/TrackWriter.cc
index 65dec50ca0aab6d87d9471c99a1f32f788c5ddc6..781acf0b4d5744fcc1da45560d6220425efbb37d 100644
--- a/Processes/TrackWriter/TrackWriter.cc
+++ b/Processes/TrackWriter/TrackWriter.cc
@@ -1,4 +1,15 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Processes/TrackWriter/TrackWriter.h b/Processes/TrackWriter/TrackWriter.h
index c61d2a6c883882a7422539dd854e32af964852f5..aa81bccec5d398ea16525e37e607a27581f8c7cf 100644
--- a/Processes/TrackWriter/TrackWriter.h
+++ b/Processes/TrackWriter/TrackWriter.h
@@ -1,4 +1,15 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Processes/TrackingLine/TrackingLine.h b/Processes/TrackingLine/TrackingLine.h
index b829814766625213c5ed115471a7b50b5ecaaf80..df3f514536656f56c9f7c4dfec92cb26b5525484 100644
--- a/Processes/TrackingLine/TrackingLine.h
+++ b/Processes/TrackingLine/TrackingLine.h
@@ -1,4 +1,15 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Processes/TrackingLine/testTrackingLine.cc b/Processes/TrackingLine/testTrackingLine.cc
index 7dde7aec23efa39835a673305729f9b2f0782dbc..ff8761cb3d9d273491010613355adbde896afbc0 100644
--- a/Processes/TrackingLine/testTrackingLine.cc
+++ b/Processes/TrackingLine/testTrackingLine.cc
@@ -1,4 +1,15 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Setup/SetupEnvironment.h b/Setup/SetupEnvironment.h
index 08780b73b38311412a11500adb9d37a67a6d4228..d7d01b9ae31cad6d5c7bd0b4066cad3e739de115 100644
--- a/Setup/SetupEnvironment.h
+++ b/Setup/SetupEnvironment.h
@@ -1,4 +1,15 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Setup/SetupLogger.h b/Setup/SetupLogger.h
index 76148050fc5a7f5f5fa8a03a0d96d1b12e465777..591244b46589d28de791e153e837967ed5f47a62 100644
--- a/Setup/SetupLogger.h
+++ b/Setup/SetupLogger.h
@@ -1,4 +1,15 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Setup/SetupStack.h b/Setup/SetupStack.h
index 0ab05fffbf177b72a21880e5b2b2043a4aba448d..b39a7ed62e1c7f16fdc3166477461f63369eebad 100644
--- a/Setup/SetupStack.h
+++ b/Setup/SetupStack.h
@@ -1,4 +1,15 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Setup/SetupTrajectory.h b/Setup/SetupTrajectory.h
index 0e93b3e4466eb98caa7ee3ccefd1edcf3946d104..a00c1d548fedfc7ac5eeb01c22948da2b9f3ac2e 100644
--- a/Setup/SetupTrajectory.h
+++ b/Setup/SetupTrajectory.h
@@ -1,4 +1,15 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Stack/CMakeLists.txt b/Stack/CMakeLists.txt
index 4cf17a6163a1503f61ad50d4bb1658c4d35727c4..a9645130bd9f81cd4415fbfeccc88e5a736b7160 100644
--- a/Stack/CMakeLists.txt
+++ b/Stack/CMakeLists.txt
@@ -1,3 +1,4 @@
 
 add_subdirectory (DummyStack)
 add_subdirectory (SuperStupidStack)
+add_subdirectory (NuclearStackExtension)
diff --git a/Stack/DummyStack/DummyStack.h b/Stack/DummyStack/DummyStack.h
index adcf494a57b1d46f13d09d9f39e153866b70ea04..54b490529beb3b8456b7ab7c43c35ba2196c3b6a 100644
--- a/Stack/DummyStack/DummyStack.h
+++ b/Stack/DummyStack/DummyStack.h
@@ -1,4 +1,26 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/Stack/DummyStack/SuperStupidStack.h b/Stack/DummyStack/SuperStupidStack.h
deleted file mode 100644
index 3abbb3139abb243f5782241db711edf852d98424..0000000000000000000000000000000000000000
--- a/Stack/DummyStack/SuperStupidStack.h
+++ /dev/null
@@ -1,108 +0,0 @@
-
-/*
- * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
- *
- * See file AUTHORS for a list of contributors.
- *
- * This software is distributed under the terms of the GNU General Public
- * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
- * the license.
- */
-
-#ifndef _include_superstupidstack_h_
-#define _include_superstupidstack_h_
-
-#include <corsika/particles/ParticleProperties.h>
-#include <corsika/stack/Stack.h>
-#include <corsika/units/PhysicalUnits.h>
-
-#include <string>
-#include <vector>
-
-namespace corsika::stack {
-
-  namespace super_stupid {
-
-    using corsika::particles::Code;
-    using corsika::units::si::EnergyType;
-    using corsika::units::si::operator""_GeV; // literals;
-
-    /**
-     * Example of a particle object on the stack.
-     */
-
-    template <typename _Stack>
-    class ParticleRead : public StackIteratorInfo<_Stack, ParticleRead<_Stack> > {
-
-      using StackIteratorInfo<_Stack, ParticleRead>::GetIndex;
-      using StackIteratorInfo<_Stack, ParticleRead>::GetStack;
-
-    public:
-      void SetId(const Code id) { GetStack().SetId(GetIndex(), id); }
-      void SetEnergy(const EnergyType& e) { GetStack().SetEnergy(GetIndex(), e); }
-
-      Code GetId() const { return GetStack().GetId(GetIndex()); }
-      const EnergyType& GetEnergy() const { return GetStack().GetEnergy(GetIndex()); }
-    };
-
-    /**
-     *
-     * Memory implementation of the most simple (stupid) particle stack object.
-     */
-
-    class SuperStupidStackImpl {
-
-    public:
-      void Init() {}
-
-      void Clear() {
-        fDataE.clear();
-        fDataId.clear();
-      }
-
-      int GetSize() const { return fDataId.size(); }
-      int GetCapacity() const { return fDataId.size(); }
-
-      void SetId(const int i, const Code id) { fDataId[i] = id; }
-      void SetEnergy(const int i, const EnergyType& e) { fDataE[i] = e; }
-
-      const Code GetId(const int i) const { return fDataId[i]; }
-      const EnergyType& GetEnergy(const int i) const { return fDataE[i]; }
-
-      /**
-       *   Function to copy particle at location i2 in stack to i1
-       */
-      void Copy(const int i1, const int i2) {
-        fDataE[i2] = fDataE[i1];
-        fDataId[i2] = fDataId[i1];
-      }
-
-    protected:
-      void IncrementSize() {
-        fDataE.push_back(0_GeV);
-        fDataId.push_back(Code::unknown);
-      }
-      void DecrementSize() {
-        if (fDataE.size() > 0) {
-          fDataE.pop_back();
-          fDataId.pop_back();
-        }
-      }
-
-    private:
-      /// the actual memory to store particle data
-
-      std::vector<Code> fDataId;
-      std::vector<EnergyType> fDataE;
-
-    }; // end class SuperStupidStackImpl
-
-    typedef StackIterator<SuperStupidStackImpl, ParticleRead<SuperStupidStackImpl> >
-        Particle;
-    typedef Stack<SuperStupidStackImpl, Particle> SuperStupidStack;
-
-  } // namespace super_stupid
-
-} // namespace corsika::stack
-
-#endif
diff --git a/Stack/NuclearStackExtension/NuclearStackExtension.h b/Stack/NuclearStackExtension/NuclearStackExtension.h
index 1d5955fd4a14516df4e643f11d3d35a3e20d294f..581104e718de44b5627eb675fc4bcb9e12ac99c3 100644
--- a/Stack/NuclearStackExtension/NuclearStackExtension.h
+++ b/Stack/NuclearStackExtension/NuclearStackExtension.h
@@ -14,28 +14,40 @@
 
 #include <corsika/stack/super_stupid/SuperStupidStack.h>
 
+#include <corsika/particles/ParticleProperties.h>
+#include <corsika/stack/Stack.h>
+#include <corsika/units/PhysicalUnits.h>
+
+#include <corsika/geometry/Point.h>
+#include <corsika/geometry/Vector.h>
+
+#include <algorithm>
 #include <vector>
 
 namespace corsika::stack {
 
   namespace nuclear_extension {
 
-    using corsika::stack::super_stupid::MomentumVector;
-    
-    template <typename StackIteratorInterface>
-    class ParticleInterface
-        : public corsika::stack::super_stupid::ParticleInterface<StackIteratorInterface> {
+    typedef corsika::geometry::Vector<corsika::units::si::hepmomentum_d> MomentumVector;
+
+    /**
+     * Define ParticleInterface for NuclearStackExtension Stack derived from ParticleInterface of Inner stack class
+     */    
+    template<template <typename> typename InnerParticleInterface, typename StackIteratorInterface>
+      class NuclearParticleInterface : public InnerParticleInterface<StackIteratorInterface> {
 
+    public:
+      //template<typename >
+      using ExtendedParticleInterface = NuclearParticleInterface<InnerParticleInterface, StackIteratorInterface>;
+      
     protected:
-      //      using corsika::stack::ParticleBase<StackIteratorInterface>::GetStack;
-      //using corsika::stack::super_stupid::ParticleInterface<StackIteratorInterface>::GetStackData;
-      using corsika::stack::ParticleBase<StackIteratorInterface>::GetStackData;
-      using corsika::stack::ParticleBase<StackIteratorInterface>::GetIndex;
+      using InnerParticleInterface<StackIteratorInterface>::GetStackData;
+      using InnerParticleInterface<StackIteratorInterface>::GetIndex;
 
     public:
       void SetParticleData(const corsika::particles::Code vDataPID,
                            const corsika::units::si::HEPEnergyType vDataE,
-                           const corsika::stack::super_stupid::MomentumVector& vMomentum,
+                           const MomentumVector& vMomentum,
                            const corsika::geometry::Point& vPosition,
                            const corsika::units::si::TimeType vTime,
 			   const int vA = 0,
@@ -46,23 +58,29 @@ namespace corsika::stack {
 	    err << "NuclearStackExtension: no A and Z specified for new Nucleus!";
 	    throw std::runtime_error(err.str());
 	  }
-	  SetNuclearRef(corsika::stack::ParticleBase<StackIteratorInterface>::GetStackData().GetNucleusNextRef()); // store this nucleus data ref
+	  //SetNuclearRef(corsika::stack::ParticleBase<StackIteratorInterface>::GetStackData().GetNucleusNextRef()); // store this nucleus data ref
+	  SetNuclearRef(GetStackData().GetNucleusNextRef()); // store this nucleus data ref
 	  SetNuclearA(vA);
 	  SetNuclearZ(vZ);
 	} else {
 	  SetNuclearRef(-1); // this is not a nucleus
 	}
-        corsika::stack::super_stupid::ParticleInterface<StackIteratorInterface>::SetParticleData(vDataPID,
-												 vDataE,
-												 vMomentum,
-												 vPosition,
-												 vTime);
+        //corsika::stack::super_stupid::NuclearParticleInterface<StackIteratorInterface>::
+	InnerParticleInterface<StackIteratorInterface>::
+	//InnerParticleInterface::
+	  SetParticleData(vDataPID,
+			  vDataE,
+			  vMomentum,
+			  vPosition,
+			  vTime);
       }
 
-      void SetParticleData(ParticleInterface<StackIteratorInterface>& parent,
+      //      void SetParticleData(NuclearParticleInterface<StackIteratorInterface>& parent,
+      void SetParticleData(InnerParticleInterface<StackIteratorInterface>& parent,
+			   //void SetParticleData(InnerParticleInterface& parent,
                            const corsika::particles::Code vDataPID,
                            const corsika::units::si::HEPEnergyType vDataE,
-                           const corsika::stack::super_stupid::MomentumVector& vMomentum,
+                           const MomentumVector& vMomentum,
                            const corsika::geometry::Point& vPosition,
                            const corsika::units::si::TimeType vTime,
 			   const int vA = 0,
@@ -100,33 +118,32 @@ namespace corsika::stack {
     /**
      * Memory implementation of the most simple (stupid) particle stack object.
      */
-
-    class NuclearStackExtensionImpl
-        : public corsika::stack::super_stupid::SuperStupidStackImpl {
+    template<typename InnerStackImpl>
+      class NuclearStackExtensionImpl : public InnerStackImpl {
 
     public:
-      void Init() { corsika::stack::super_stupid::SuperStupidStackImpl::Init(); }
+      void Init() { InnerStackImpl::Init(); }
 
       void Clear() {
-        corsika::stack::super_stupid::SuperStupidStackImpl::Clear();
+        InnerStackImpl::Clear();
         fNuclearRef.clear();
         fNuclearA.clear();
         fNuclearZ.clear();
       }
 
-      int GetSize() const { return fNuclearRef.size(); }
-      int GetCapacity() const { return fNuclearRef.size(); }
+      unsigned int GetSize() const { return fNuclearRef.size(); }
+      unsigned int GetCapacity() const { return fNuclearRef.size(); }
 
-      void SetNuclearA(const int i, const int vA) { fNuclearA[GetNucleusRef(i)] = vA; }
-      void SetNuclearZ(const int i, const int vZ) { fNuclearZ[GetNucleusRef(i)] = vZ; }
-      void SetNuclearRef(const int i, const int v) { fNuclearRef[i] = v; }
+      void SetNuclearA(const unsigned int i, const int vA) { fNuclearA[GetNucleusRef(i)] = vA; }
+      void SetNuclearZ(const unsigned int i, const int vZ) { fNuclearZ[GetNucleusRef(i)] = vZ; }
+      void SetNuclearRef(const unsigned int i, const int v) { fNuclearRef[i] = v; }
       
-      int GetNuclearA(const int i) const { return fNuclearA[GetNucleusRef(i)]; }
-      int GetNuclearZ(const int i) const { return fNuclearZ[GetNucleusRef(i)]; }
+      int GetNuclearA(const unsigned int i) const { return fNuclearA[GetNucleusRef(i)]; }
+      int GetNuclearZ(const unsigned int i) const { return fNuclearZ[GetNucleusRef(i)]; }
       // this function will create new storage for Nuclear Properties, and return the reference to it
       int GetNucleusNextRef() { fNuclearA.push_back(0); fNuclearZ.push_back(0); return fNuclearA.size()-1; }
 
-      int GetNucleusRef(const int i) const {
+      int GetNucleusRef(const unsigned int i) const {
 	if (fNuclearRef[i]>=0)
 	  return fNuclearRef[i];
 	std::ostringstream err;
@@ -137,8 +154,13 @@ namespace corsika::stack {
       /**
        *   Function to copy particle at location i1 in stack to i2
        */
-      void Copy(const int i1, const int i2) {
-        corsika::stack::super_stupid::SuperStupidStackImpl::Copy(i1, i2);
+      void Copy(const unsigned int i1, const unsigned int i2) {
+	if (i1>=GetSize() || i2>=GetSize()) {
+	  std::ostringstream err;
+	  err << "NuclearStackExtension: trying to access data beyond size of stack!";
+	  throw std::runtime_error(err.str());
+	}
+        InnerStackImpl::Copy(i1, i2);
 	const int ref1 = fNuclearRef[i1];
 	const int ref2 = fNuclearRef[i2];
 	if (ref2<0) {
@@ -157,8 +179,8 @@ namespace corsika::stack {
 	    fNuclearZ[ref2] = fNuclearZ[ref1];
 	  } else {
 	    // i2 is overwritten with non-nucleus i1
-	    fNuclearA.erase(fNuclearA.begin() + ref2);
-	    fNuclearZ.erase(fNuclearZ.begin() + ref2);
+	    fNuclearA.erase(fNuclearA.cbegin() + ref2);
+	    fNuclearZ.erase(fNuclearZ.cbegin() + ref2);
 	    const int n = fNuclearRef.size();
 	    for (int i=0; i<n; ++i) {
 	      if (fNuclearRef[i]>=ref2) {
@@ -172,8 +194,13 @@ namespace corsika::stack {
       /**
        *   Function to copy particle at location i2 in stack to i1
        */
-      void Swap(const int i1, const int i2) {
-        corsika::stack::super_stupid::SuperStupidStackImpl::Swap(i1, i2);
+      void Swap(const unsigned int i1, const unsigned int i2) {
+	if (i1>=GetSize() || i2>=GetSize()) {
+	  std::ostringstream err;
+	  err << "NuclearStackExtension: trying to access data beyond size of stack!";
+	  throw std::runtime_error(err.str());
+	}
+        InnerStackImpl::Swap(i1, i2);
 	const int ref1 = fNuclearRef[i1];
 	const int ref2 = fNuclearRef[i2];
 	if (ref2<0) {
@@ -196,12 +223,12 @@ namespace corsika::stack {
 
     protected:
       void IncrementSize() {
-        corsika::stack::super_stupid::SuperStupidStackImpl::IncrementSize();
+        InnerStackImpl::IncrementSize();
         fNuclearRef.push_back(-1);
       }
 
       void DecrementSize() {
-        corsika::stack::super_stupid::SuperStupidStackImpl::DecrementSize();
+        InnerStackImpl::DecrementSize();
         if (fNuclearRef.size() > 0) {
 	  const int ref = fNuclearRef.back();
 	  fNuclearRef.pop_back();
@@ -225,10 +252,40 @@ namespace corsika::stack {
       std::vector<int> fNuclearA;
       std::vector<int> fNuclearZ;
 
-    }; // end class SuperStupidStackImpl
+    }; // end class NuclearStackExtensionImpl
 
-    typedef Stack<NuclearStackExtensionImpl, ParticleInterface> NuclearStackExtension;
+    //    template<typename StackIteratorInterface>
+    // using NuclearParticleInterfaceType<StackIteratorInterface> = NuclearParticleInterface< ,StackIteratorInterface>
 
+    
+    // works, but requires stupd _PI class
+    //template<typename SS> using TEST = NuclearParticleInterface<corsika::stack::super_stupid::SuperStupidStack::PIType, SS>;
+    template <typename InnerStack, template<typename>typename _PI>
+    using NuclearStackExtension = Stack<NuclearStackExtensionImpl<typename InnerStack::StackImpl>, _PI>;
+    
+    // ----
+    
+    
+    // I'm dont't manage to do this properly.......
+    /*
+    template<typename TT, typename SS> using TESTi = typename NuclearParticleInterface<TT::template PIType, SS>::ExtendedParticleInterface;
+    template<typename TT, typename SS> using TEST1 = TESTi<TT, SS>;      
+    template<typename SS> using TEST2 = TEST1<typename corsika::stack::super_stupid::SuperStupidStack, SS>;
+
+    using NuclearStackExtension = Stack<NuclearStackExtensionImpl<typename InnerStack::StackImpl>, TEST2>;
+    */
+    /*
+      // .... this should be fixed ....
+
+    template <typename InnerStack, typename SS=StackIteratorInterface>
+      //using NuclearStackExtension = Stack<NuclearStackExtensionImpl<typename InnerStack::StackImpl>, NuclearParticleInterface<typename InnerStack::template PIType, StackIteratorInterface>::ExtendedParticleInterface>;
+      using NuclearStackExtension = Stack<NuclearStackExtensionImpl<typename InnerStack::StackImpl>, TEST1<typename corsika::stack::super_stupid::SuperStupidStack, SS> >;
+    
+    //template <typename InnerStack>
+      //  using NuclearStackExtension = Stack<NuclearStackExtensionImpl<typename InnerStack::StackImpl>, TEST<typename corsika::stack::super_stupid::SuperStupidStack::PIType>>;
+    //using NuclearStackExtension = Stack<NuclearStackExtensionImpl<typename InnerStack::StackImpl>, TEST>;
+    */
+    
   } // namespace nuclear_extension
 } // namespace corsika::stack
 
diff --git a/Stack/NuclearStackExtension/testNuclearStackExtension.cc b/Stack/NuclearStackExtension/testNuclearStackExtension.cc
index f8fac4bd98e86faea5a44c20bf3d5e8c9c6f684c..ef0c22dbd9e485373e8dd559e7d7f54ab17fe2af 100644
--- a/Stack/NuclearStackExtension/testNuclearStackExtension.cc
+++ b/Stack/NuclearStackExtension/testNuclearStackExtension.cc
@@ -9,10 +9,14 @@
  * the license.
  */
 
-#include <corsika/geometry/RootCoordinateSystem.h>
 #include <corsika/stack/nuclear_extension/NuclearStackExtension.h>
+#include <corsika/stack/super_stupid/SuperStupidStack.h>
+#include <corsika/geometry/RootCoordinateSystem.h>
 #include <corsika/units/PhysicalUnits.h>
 
+#include <boost/type_index.hpp>
+using boost::typeindex::type_id_with_cvr;
+
 using namespace corsika::geometry;
 using namespace corsika::units::si;
 
@@ -23,6 +27,13 @@ using namespace corsika::units::si;
 using namespace corsika;
 using namespace corsika::stack::nuclear_extension;
 
+// this is an auxiliary help typedef, which I don't know how to put
+// into NuclearStackExtension.h where it belongs...
+template<typename StackIter> using ExtendedParticleInterfaceType =
+  corsika::stack::nuclear_extension::NuclearParticleInterface<corsika::stack::super_stupid::SuperStupidStack::PIType, StackIter>;
+
+using ExtStack = NuclearStackExtension<corsika::stack::super_stupid::SuperStupidStack, ExtendedParticleInterfaceType>;
+
 #include <iostream>
 using namespace std;
 
@@ -31,8 +42,11 @@ TEST_CASE("NuclearStackExtension", "[stack]") {
   geometry::CoordinateSystem& dummyCS =
       geometry::RootCoordinateSystem::GetInstance().GetRootCoordinateSystem();
 
+  // cout << "ParticleType=" << type_id_with_cvr<ParticleType>().pretty_name() << endl;
+
+  
   SECTION("write non nucleus") {
-    NuclearStackExtension s;
+    NuclearStackExtension<corsika::stack::super_stupid::SuperStupidStack, ExtendedParticleInterfaceType> s;
     s.AddParticle(particles::Code::Electron, 1.5_GeV,
                   MomentumVector(dummyCS, {1_GeV, 1_GeV, 1_GeV}),
                   Point(dummyCS, {1 * meter, 1 * meter, 1 * meter}), 100_s);
@@ -40,7 +54,7 @@ TEST_CASE("NuclearStackExtension", "[stack]") {
   }
   
   SECTION("write nucleus") {
-    NuclearStackExtension s;
+    NuclearStackExtension<corsika::stack::super_stupid::SuperStupidStack, ExtendedParticleInterfaceType> s;
     s.AddParticle(particles::Code::Nucleus, 1.5_GeV,
                   MomentumVector(dummyCS, {1_GeV, 1_GeV, 1_GeV}),
                   Point(dummyCS, {1 * meter, 1 * meter, 1 * meter}), 100_s, 10, 10);
@@ -48,14 +62,14 @@ TEST_CASE("NuclearStackExtension", "[stack]") {
   }
 
   SECTION("write invalid nucleus") {
-    NuclearStackExtension s;
+    ExtStack s;
     REQUIRE_THROWS(s.AddParticle(particles::Code::Nucleus, 1.5_GeV,
 				 MomentumVector(dummyCS, {1_GeV, 1_GeV, 1_GeV}),
 				 Point(dummyCS, {1 * meter, 1 * meter, 1 * meter}), 100_s, 0, 0));
   }
 
   SECTION("read non nucleus") {
-    NuclearStackExtension s;
+    ExtStack s;
     s.AddParticle(particles::Code::Electron, 1.5_GeV,
                   MomentumVector(dummyCS, {1_GeV, 1_GeV, 1_GeV}),
                   Point(dummyCS, {1 * meter, 1 * meter, 1 * meter}), 100_s);
@@ -66,7 +80,7 @@ TEST_CASE("NuclearStackExtension", "[stack]") {
   }
   
   SECTION("read nucleus") {
-    NuclearStackExtension s;
+    ExtStack s;
     s.AddParticle(particles::Code::Nucleus, 1.5_GeV,
                   MomentumVector(dummyCS, {1_GeV, 1_GeV, 1_GeV}),
                   Point(dummyCS, {1 * meter, 1 * meter, 1 * meter}), 100_s, 10, 9);
@@ -79,7 +93,7 @@ TEST_CASE("NuclearStackExtension", "[stack]") {
   }
 
   SECTION("read invalid nucleus") {
-    NuclearStackExtension s;
+    ExtStack s;
     s.AddParticle(particles::Code::Electron, 1.5_GeV,
                   MomentumVector(dummyCS, {1_GeV, 1_GeV, 1_GeV}),
                   Point(dummyCS, {1 * meter, 1 * meter, 1 * meter}), 100_s);
@@ -91,7 +105,7 @@ TEST_CASE("NuclearStackExtension", "[stack]") {
 
   SECTION("stack fill and cleanup") {
 
-    NuclearStackExtension s;
+    ExtStack s;
     // add 99 particles, each 10th particle is a nucleus with A=i and Z=A/2!
     for (int i = 0; i < 99; ++i) {
       if ((i+1)%10 == 0) {
@@ -105,17 +119,15 @@ TEST_CASE("NuclearStackExtension", "[stack]") {
       }
     }
 
-    REQUIRE(s.GetSize() == 99);
-    
+    REQUIRE(s.GetSize() == 99);   
     for (int i = 0; i < 99; ++i) s.GetNextParticle().Delete();
-
     REQUIRE(s.GetSize() == 0);
   }
 
 
   SECTION("stack operations") {
 
-    NuclearStackExtension s;
+    ExtStack s;
     // add 99 particles, each 10th particle is a nucleus with A=i and Z=A/2!
     for (int i = 0; i < 99; ++i) {
       if ((i+1)%10 == 0) {
@@ -131,7 +143,7 @@ TEST_CASE("NuclearStackExtension", "[stack]") {
 
     // copy
     {
-      s.Copy(s.begin()+9, s.begin()+10);
+      s.Copy(s.begin()+9, s.begin()+10); // nuclei to non-nuclei
       const auto& p9 = s.cbegin() + 9;
       const auto& p10 = s.cbegin() + 10;
       
@@ -147,7 +159,22 @@ TEST_CASE("NuclearStackExtension", "[stack]") {
       REQUIRE(p10.GetNuclearA() == 9);
       REQUIRE(p10.GetNuclearZ() == 9/2);
     }
-    
+
+    // copy
+    {
+      s.Copy(s.begin()+93, s.begin()+9); // non-nuclei to nuclei
+      const auto& p93 = s.cbegin() + 93;
+      const auto& p9 = s.cbegin() + 9;
+      
+      REQUIRE(p9.GetPID() == particles::Code::Electron);
+      REQUIRE(p9.GetEnergy() == 93*1.5_GeV);
+      REQUIRE(p9.GetTime() == 100_s);
+      
+      REQUIRE(p93.GetPID() == particles::Code::Electron);
+      REQUIRE(p93.GetEnergy() == 93*1.5_GeV);
+      REQUIRE(p93.GetTime() == 100_s);
+    }
+
     // swap
     {
       s.Swap(s.begin()+11, s.begin()+10);
@@ -167,7 +194,7 @@ TEST_CASE("NuclearStackExtension", "[stack]") {
 
     // swap two nuclei
     {
-      s.Copy(s.begin()+29, s.begin()+59);
+      s.Swap(s.begin()+29, s.begin()+59);
       const auto& p29 = s.cbegin() + 29;
       const auto& p59 = s.cbegin() + 59;
       
diff --git a/Stack/SuperStupidStack/SuperStupidStack.h b/Stack/SuperStupidStack/SuperStupidStack.h
index c3d4e633685195682038dcca39af5d2475bea32c..b4c8c858c9e4f7d1802b52773b07d813f41c050b 100644
--- a/Stack/SuperStupidStack/SuperStupidStack.h
+++ b/Stack/SuperStupidStack/SuperStupidStack.h
@@ -23,8 +23,6 @@
 #include <algorithm>
 #include <vector>
 
-using namespace corsika;
-
 namespace corsika::stack {
 
   namespace super_stupid {
@@ -38,20 +36,12 @@ namespace corsika::stack {
     template <typename StackIteratorInterface>
     class ParticleInterface : public ParticleBase<StackIteratorInterface> {
 
+    protected:
       using corsika::stack::ParticleBase<StackIteratorInterface>::GetStack;
       using corsika::stack::ParticleBase<StackIteratorInterface>::GetStackData;
       using corsika::stack::ParticleBase<StackIteratorInterface>::GetIndex;
 
     public:
-      /// the factory function, this is how to create a new particle:
-      /*void AddSecondary(const corsika::particles::Code vDataPID,
-                        const corsika::units::si::HEPEnergyType vDataE,
-                        const MomentumVector& vMomentum,
-                        const corsika::geometry::Point& vPosition,
-                        const corsika::units::si::TimeType vTime) {
-        GetStack().AddParticle(vDataPID, vDataE, vMomentum, vPosition, vTime);
-        }*/
-      //
       void SetParticleData(const corsika::particles::Code vDataPID,
                            const corsika::units::si::HEPEnergyType vDataE,
                            const MomentumVector& vMomentum,
@@ -117,7 +107,6 @@ namespace corsika::stack {
     };
 
     /**
-     *
      * Memory implementation of the most simple (stupid) particle stack object.
      */
 
@@ -134,29 +123,29 @@ namespace corsika::stack {
         fTime.clear();
       }
 
-      int GetSize() const { return fDataPID.size(); }
-      int GetCapacity() const { return fDataPID.size(); }
+      unsigned int GetSize() const { return fDataPID.size(); }
+      unsigned int GetCapacity() const { return fDataPID.size(); }
 
-      void SetPID(const int i, const corsika::particles::Code id) { fDataPID[i] = id; }
-      void SetEnergy(const int i, const corsika::units::si::HEPEnergyType e) {
+      void SetPID(const unsigned int i, const corsika::particles::Code id) { fDataPID[i] = id; }
+      void SetEnergy(const unsigned int i, const corsika::units::si::HEPEnergyType e) {
         fDataE[i] = e;
       }
-      void SetMomentum(const int i, const MomentumVector& v) { fMomentum[i] = v; }
-      void SetPosition(const int i, const corsika::geometry::Point& v) {
+      void SetMomentum(const unsigned int i, const MomentumVector& v) { fMomentum[i] = v; }
+      void SetPosition(const unsigned int i, const corsika::geometry::Point& v) {
         fPosition[i] = v;
       }
-      void SetTime(const int i, const corsika::units::si::TimeType& v) { fTime[i] = v; }
+      void SetTime(const unsigned int i, const corsika::units::si::TimeType& v) { fTime[i] = v; }
 
-      corsika::particles::Code GetPID(const int i) const { return fDataPID[i]; }
-      corsika::units::si::HEPEnergyType GetEnergy(const int i) const { return fDataE[i]; }
-      MomentumVector GetMomentum(const int i) const { return fMomentum[i]; }
-      corsika::geometry::Point GetPosition(const int i) const { return fPosition[i]; }
-      corsika::units::si::TimeType GetTime(const int i) const { return fTime[i]; }
+      corsika::particles::Code GetPID(const unsigned int i) const { return fDataPID[i]; }
+      corsika::units::si::HEPEnergyType GetEnergy(const unsigned int i) const { return fDataE[i]; }
+      MomentumVector GetMomentum(const unsigned int i) const { return fMomentum[i]; }
+      corsika::geometry::Point GetPosition(const unsigned int i) const { return fPosition[i]; }
+      corsika::units::si::TimeType GetTime(const unsigned int i) const { return fTime[i]; }
 
       /**
        *   Function to copy particle at location i2 in stack to i1
        */
-      void Copy(const int i1, const int i2) {
+      void Copy(const unsigned int i1, const unsigned int i2) {
         fDataPID[i2] = fDataPID[i1];
         fDataE[i2] = fDataE[i1];
         fMomentum[i2] = fMomentum[i1];
@@ -167,7 +156,7 @@ namespace corsika::stack {
       /**
        *   Function to copy particle at location i2 in stack to i1
        */
-      void Swap(const int i1, const int i2) {
+      void Swap(const unsigned int i1, const unsigned int i2) {
         std::swap(fDataPID[i2], fDataPID[i1]);
         std::swap(fDataE[i2], fDataE[i1]);
         std::swap(fMomentum[i2], fMomentum[i1]);
@@ -181,7 +170,6 @@ namespace corsika::stack {
         using corsika::particles::Code;
         fDataPID.push_back(Code::Unknown);
         fDataE.push_back(0 * corsika::units::si::electronvolt);
-        //#TODO this here makes no sense: see issue #48
         geometry::CoordinateSystem& dummyCS =
             geometry::RootCoordinateSystem::GetInstance().GetRootCoordinateSystem();
         fMomentum.push_back(MomentumVector(
@@ -216,7 +204,7 @@ namespace corsika::stack {
     }; // end class SuperStupidStackImpl
 
     typedef Stack<SuperStupidStackImpl, ParticleInterface> SuperStupidStack;
-
+    
   } // namespace super_stupid
 
 } // namespace corsika::stack
diff --git a/Stack/SuperStupidStack/testSuperStupidStack.cc b/Stack/SuperStupidStack/testSuperStupidStack.cc
index 0e3628b46f6639e336a34cc8545f05b39fb98831..c213abd59952902e09278bfba2b2f5e43bff106c 100644
--- a/Stack/SuperStupidStack/testSuperStupidStack.cc
+++ b/Stack/SuperStupidStack/testSuperStupidStack.cc
@@ -1,4 +1,26 @@
 
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
diff --git a/do-copyright.py b/do-copyright.py
index 10f60e389b1cfe27d476bb3f1936fc1c11cd57e1..f54d85f061d0c9b1af0f26be7aca746e896f3959 100755
--- a/do-copyright.py
+++ b/do-copyright.py
@@ -84,6 +84,8 @@ def next_file(x, dir_name, files):
             return
     for check in files :
         filename, file_extension = os.path.splitext(check)
+        if '#' in check or '~' in check:
+            return
         for check2 in excludeFiles :
             if check2 in check:
                 return