diff --git a/.gitignore b/.gitignore
index 9656bc848ff52f63938067173e1372348527c92a..13cf148097e976bcd75db46f2ada28fcbd2cd064 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,7 @@
 **/*~
+**/*.bak
+**/*log
 build/
 Framework/Particles/GeneratedParticleProperties.inc
+flymd.html
+flymd.md
diff --git a/AUTHORS b/AUTHORS
new file mode 100644
index 0000000000000000000000000000000000000000..7036fa76902c4d4368664f0b745b5ea621a7e62f
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1,2 @@
+Maximilian Reininghaus, maximilian.reininghaus@kit.edu
+Ralf Ulrich, ralf.ulrich@kit.edu
diff --git a/CHANGELOG b/CHANGELOG
index a9f540121d9ebf883db73ed96c4fdd0fee6f50d6..354e583bf8dd89dc38113d5ca8228c29224b697b 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1 +1,2 @@
-Everything
\ No newline at end of file
+* milestone1 release: So 7. Okt 15:51:07 CEST 2018
+
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a04d2acbb9eeca7ef29f2e45091be5bc652a5a70..2fd59736e161af2d4f53e57e75613e8d6fe667f6 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -17,7 +17,6 @@ include (CorsikaUtilities) # a few cmake function
 # enable warnings and disallow non-standard language
 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -pedantic -Wextra")
 
-# --std=c++17
 set (CMAKE_CXX_STANDARD 17)
 enable_testing ()
 set (CTEST_OUTPUT_ON_FAILURE 1)
@@ -37,15 +36,16 @@ set (CTEST_OUTPUT_ON_FAILURE 1)
 #add_custom_command (TARGET corsika_pre_build PRE_BUILD COMMAND "${PROJECT_SOURCE_DIR}/pre_compile.py")
 
 # dependencies
-find_package (Boost 1.40 COMPONENTS program_options REQUIRED)
+#find_package (Boost 1.40 COMPONENTS program_options REQUIRED)
 find_package (Eigen3 REQUIRED)
 #find_package (HDF5) # not yet needed
 
 # order of subdirectories 
 add_subdirectory (ThirdParty)
+#add_subdirectory (Utilities)
 add_subdirectory (Framework)
 add_subdirectory (Stack)
+add_subdirectory (Setup)
 add_subdirectory (Processes)
 add_subdirectory (Documentation)
 add_subdirectory (Main)
-
diff --git a/CMakeModules/CorsikaUtilities.cmake b/CMakeModules/CorsikaUtilities.cmake
index f98a7585468a68c1845192c4ff779debb5396a76..0ba70d8ff63f1e372fd8daae3e4f06cc96343a8e 100644
--- a/CMakeModules/CorsikaUtilities.cmake
+++ b/CMakeModules/CorsikaUtilities.cmake
@@ -55,3 +55,26 @@ function (CORSIKA_COPY_HEADERS_TO_NAMESPACE for_library in_namespace)
 
 endfunction (CORSIKA_COPY_HEADERS_TO_NAMESPACE)
 
+
+
+
+#
+# use: CORSIKA_ADD_FILES_ABSOLUTE varname
+#
+# add list of filenames with absolute paths (pointing to CMAKE_SOURCE_DIR) to ${varname} in PARAENT_SCOPE
+# 
+
+macro (CORSIKA_ADD_FILES_ABSOLUTE varname)
+  file (RELATIVE_PATH _relPath "${PROJECT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}")
+  foreach (_src ${ARGN})
+    if (_relPath)
+      list (APPEND "${varname}" "${CMAKE_SOURCE_DIR}/${_relPath}/${_src}")
+    else()
+      list (APPEND "${varname}" "${CMAKE_SOURCE_DIR}/${_src}")
+    endif()
+  endforeach()
+  if (_relPath)
+    # propagate SRCS to parent directory
+    set ("${varname}" "${${varname}}" PARENT_SCOPE)
+  endif()
+endmacro(CORSIKA_ADD_FILES_ABSOLUTE)
diff --git a/COLLABORATION_AGREEMENT.md b/COLLABORATION_AGREEMENT.md
new file mode 100644
index 0000000000000000000000000000000000000000..c00bec0f76a902d205a291c14122ae6ffc09ea6f
--- /dev/null
+++ b/COLLABORATION_AGREEMENT.md
@@ -0,0 +1,103 @@
+# Collaboration agreement
+
+The CORSIKA project very much welcomes all collaboration and
+contributions. The aim of the CORSIKA project is to create a
+scientific software framework as a fundamental tool for research. The
+collaboration agreement and the licensing model are based on the
+guidelines layed out by HSF
+[[1]](https://hepsoftwarefoundation.org/activities/licensing.html) or
+CERN
+[[2]](https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=2ahUKEwiLqKG00dXdAhUOZFAKHdIwAh4QFjAAegQIARAC&url=https%3A%2F%2Findico.cern.ch%2Fcategory%2F4251%2Fattachments%2F101%2F505%2FOSL-2012-01-Open_Source_Licences_at_CERN-Short_version.pdf&usg=AOvVaw1n4S0PQCSeE6wbdfdhKDqF),
+[[3]](http://legal.web.cern.ch/licensing/software), and follow the
+examples of other big scientific software projects.
+
+The CORSIKA project consists of the contributions from the scientific
+community and individuals in a best effort to deliver the best
+possible computing performance and physics output. 
+The MCnet guidelines developed by [www.montecarlonet.org](www.montecarlonet.org) 
+are copied in [MCNET_GUIDELINES](MCNET_GUIDELINES) -- they provide a very good 
+additional scope that contributors should read and follow. 
+
+All possible
+liability and licensing question are only handled by the adopted
+software license.
+
+## The software license of the CORSIKA project
+The license adopted for the CORSIKA project is the explicit copyleft
+license GPLv3, as copied in full in the file
+[LICENSE](LICENSE). Each source file of the CORSIKA project contains a
+short statement of the copyright and this license. Each binary or
+source code release of CORSIKA must contain the file LICENSE. The
+code, documentation and content in the folder [ThirdParty](ThirdParty)
+is not integral part of the CORSIKA project and can be based on or
+include other licenses, which must be compatible with GPLv3. Check the
+content of this folder for details. It depends on the configuration of
+the build system to what extend this code is used to build CORSIKA.
+
+## Who is the "copyright holder"
+For legal reasons and the ability to maintain the CORSIKA project
+effectively over a very long lifespan of several decades, all
+contributors are required to transfer their copyright to the CORSIKA
+Project. Of course you will be duly credited and your name will appear
+on the contributors page and in the [AUTHORS](AUTHORS) file shipped
+with every binary and source distribution. The copyright transfer is
+necessary to be able to effectively defend the project in case of
+litigation. The copyright holder may change, if decided by the CORSIKA
+Project. The current copyright holder is the CORSIKA Project
+corsika-project@lists.kit.edu, with the current chair person Ralf Ulrich (KIT) ralf.ulrich@kit.edu.
+
+## Definition of a "contributor"
+Contributor is a person of whom at least one merge request was
+accepted for the master branch of the CORSIKA project at
+[https://gitlab.ikp.kit.edu/AirShowerPhysics/corsika](https://gitlab.ikp.kit.edu/AirShowerPhysics/corsika).
+All contributors will be co-listed and credited as (software) authors
+of the CORSIKA project, as well as listed indefinitely in the
+[AUTHORS](AUTHORS) file. Contributors should add their name and
+contact data to the [AUTHORS](AUTHORS) file, as part of one of their
+merge requests. This file is always distributed together with all
+source and binary releases.  If you contribute to any non-master
+branch, you can add your name to the [AUTHORS](AUTHORS) file of this
+particular branch, but all official releases are normally performed
+via the master branch.
+
+If you want to contribute, you need to read
+[GUIDELINES](GUIDELINES.md) and comply with these rules, or help to
+improve them.
+
+
+## Definition and working mode of the CORSIKA Project panel
+The CORSIKA Project panel makes all decisions for the CORSIKA
+Project. It can also change the
+[COLLABORATION\_AGREEMENT](COLLABORATION\_AGREEMENT.md), the
+[GUIDELINES](GUIDELINES.md) or any other structure or document relevant for the CORSIKA Project.
+
+The CORSIKA Project *panel* consists (October 2018) of
+   
+  * Ralph Engel (KIT)
+  * Dieter Heck (KIT)
+  * Tanguy Pierog (KIT)
+  * Maximilian Reininghaus (KIT)
+  * Markus Roth (KIT)
+  * Ralf Ulrich (KIT)
+  * Michael Unger (KIT)
+  * Darko Veberic (KIT)
+  
+and can be contacted via corsika-project@lists.kit.edu.  The chair
+person of the CORSIKA Project is Ralf Ulrich (KIT). Members of the
+CORSIKA Project *panel* are *Maintainer* of the CORSIKA Project in
+gitlab at
+[https://gitlab.ikp.kit.edu/AirShowerPhysics/corsika](https://gitlab.ikp.kit.edu/AirShowerPhysics/corsika),
+and have special responsibilities for this reason. 
+
+## Changing to a different license, for parts, or the complete project
+
+The CORSIKA Project panel can change the license for parts or the entire project. 
+
+## Planning and performing releases
+
+The CORSIKA Project panel decides on releases of the software, and about the content of it. 
+
+## Changes to the Collaboration Agreement
+
+The CORSIKA Project panel decides on changes to the Collaboration
+agreement.
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000000000000000000000000000000000000..50d23b305d872735ce7a47d237c630b27cd2c443
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,216 @@
+# Contributing
+
+The CORSIKA project is committed to fostering and preserving a
+diverse, welcoming community; all participants are expected to
+respect that. 
+
+- [Getting Started](#getting-started)
+    - [Very first steps](#very-first-steps)
+    - [Opening issues](#opening-issues)
+    - [Participating in discussions](#participating-in-discussions)
+    - [Improving and reviewing docs](#improving-and-reviewing-docs)
+    - [Reviewing and testing changes](#reviewing-and-testing-changes)
+- [Proposing and making changes](#proposing-and-making-changes)
+	- [Finding something to work on](#finding-something-to-work-on)
+    - [Before you start](#before-you-start-work)
+    - [Before you open your PR](#before-you-open-your-pr)
+    - [Review process](#review-process)
+- [Getting more involved](#getting-more-involved)
+
+## Getting started
+
+Not sure where to start? If you haven't already, take a look at the 
+[docs](http://xi-editor.github.io/xi-editor/docs.html) to get a better
+sense of the project. Read through some issues and some open PRs, to
+get a sense for the habits of existing contributors. Drop by the #xi
+channel on [irc.mozilla.org](https://mozilla.logbot.info/xi) to follow
+ongoing discussions or ask questions. Clone the repos you're
+interested in, and make sure you can build and run the tests. If you
+can't, open an issue, and someone will try to help. Once you're up and
+running, there are a a number of ways to participate:
+
+### Opening issues
+
+If you have a question or a feature request or think you've found a bug,
+please open an issue. When opening an issue, include any details that
+might be relevant: for a bug this might be the steps required to
+reproduce; for a feature request it might be a detailed explanation of
+the behaviour you are imagining, an outline of how it would be used,
+and/or examples of how this feature is used in other editors.
+
+#### Before you open an issue
+
+Before opening an issue, **try to identify where the issue belongs**.
+Is it a problem with the frontend or with core? The frontend is 
+responsible for drawing windows and UI, and handling events; the core
+is responsible for most everything else. Issues with the frontend
+should be opened in that frontend's repository, and issues with
+core should be opened in the 
+[xi-editor](https://github.com/xi-editor/xi-editor/issues) repo.
+
+Finally, before opening an issue, **use github's search bar** to make
+sure there isn't an existing (open or closed) issue for your particular
+problem.
+
+### Participating in discussions
+
+An _explicit_ goal of xi-editor is to be an educational resource.
+Everyone is encouraged to participate in discussion issues (issues with
+the 'discussion' or 'planning' labels), and we expect people
+participating in discussions to be respectful of the fact that we all
+have different backgrounds and levels of experience. Similarly, if
+something is confusing, feel free to ask for clarification! If you're
+confused, other people probably are as well.
+
+### Improving and reviewing docs
+
+If the docs are unclear or incomplete, please open an issue or a PR to
+improve them. This is an especially valuable form of feedback from new
+contributors, who are seeing things for the first time, and will be best
+positioned to identify areas that need improvement.
+
+### Reviewing and testing changes
+
+One of the best ways to get more familiar with the project is by reading
+other people's pull requests. If there's something in a commit that you
+don't understand, this is a great time to ask for clarification. Testing
+changes is also very helpful, especially for bug fixes or feature
+additions. Check out a change and try it out; does it work? Can you find
+edge cases? Manual testing is very valuable. For more information on
+reviews, see [code review process](#review-process).
+
+
+## Proposing and making changes
+
+### Finding something to work on
+
+If you're looking for something to work on, a good first step is to browse
+the [issues](https://github.com/xi-editor/xi-editor/issues). Specifically,
+issues that are labeled 
+[help wanted](https://github.com/xi-editor/xi-editor/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22) and/or
+[easy](https://github.com/xi-editor/xi-editor/issues?q=is%3Aissue+is%3Aopen+label%3Aeasy)
+are good places to start. If you can't find anything there, feel free to ask
+on IRC, or play around with the editor and try to identify something that
+_you_ think is missing.
+
+### Before you start work
+
+Before starting to work on an issue, consider the following:
+    
+- _Is it a bugfix or small change?_ If you notice a small bug somewhere,
+ and you believe you have a fix, feel free to open a pull request directly.
+
+- _Is it a feature?_ If you have an idea for a new editor feature that is
+ along the lines of something that already exists (for instance, adding a
+ new command to reverse the letters in a selected region) _consider_ 
+ opening a short issue beforehand, describing the feature you have in mind.
+ Other contributors might be able to identify possible issues or
+ refinements. This isn't _necessary_, but it might end up saving you work,
+ and it means you will get to close an issue when your PR gets merged,
+ which feels good.
+
+- _Is it a major feature, affecting for instance the behaviour or appearance
+ of a frontend, or the API or architecture of core?_ Before working on a 
+ large change, please open a discussion/proposal issue. This should describe
+ the problem you're trying to solve, and the approach you're considering; 
+ think of this as a 'lite' version of Rust's 
+ [RFC](https://github.com/rust-lang/rfcs) process. 
+
+
+### Before you open your PR
+
+Before pressing the 'Create pull request' button, 
+
+- _Run the tests_. It's easy to accidentally break something with even a small 
+ change, so always run the tests locally before submitting (or updating) a PR.
+ You can run all checks locally with the `xi-editor/rust/run_all_checks`. script.
+
+- _Add a message for your reviewers_. When submitting a PR, take advantage
+ of the opportunity to include a message. Your goal here should be to help
+ your reviewers. Are there any parts of your change that you're uncertain
+ about? Are there any non-obvious explanations for some of your decisions?
+ If your change changes some behaviour, how might it be tested?
+
+- ***Be your own first reviewer***. On the page where you enter your message,
+ you have a final opportunity to see your PR _as it will be seen by your 
+ reviewers_. This is a great opportunity to give it one last review, yourself.
+ Imagine that it is someone else's work, that you're reviewing: what comments 
+ would you have? If you spot a typo or a problem, you can push an update in 
+ place, without losing your PR message or other state.
+
+- _Add yourself to the AUTHORS file_. If this is your first substantive pull 
+request in this repo, feel free to add yourself to the AUTHORS file.
+
+### Review process
+
+Every non-trivial pull request goes through review. Everyone is welcome to 
+participate in review; review is an excellent time to ask questions about
+code or design decisions that you don't understand.
+
+All pull requests must be approved by an appropriate reviewer before they
+are merged. For bug fixes and smaller changes, this can be anyone who has
+commit rights to the repo in question; larger changes (changes which add a
+feature, or significantly change behaviour or API) should also be approved by
+a maintainer.
+
+Before being merged, a change must pass 
+[CI](https://en.wikipedia.org/wiki/Continuous_integration).
+
+#### Responsibilites of the approving reviewer
+
+If you approve a change, it is expected that you:
+- understand what the change is trying to do, and how it is doing it
+- have manually built and tested the change, to verify it works as intended
+- believe the change generally matches the idioms, formatting rules,
+and overall coding style of the relevant repo
+- are ready and able to help resolve any problems that may be introduced by
+merging the change.
+
+If a PR is made by a contributor who has write access to the repo in question, 
+they are responsible for merging/rebasing the PR after it has been approved; 
+otherwise it will be merged by the reviewer.
+
+If a patch adds or modifies behaviour that is observable in the client, 
+the reviewer should build the patch and verify that it works as expected.
+
+### After submitting your change
+
+You've done all this, and submitted your patch. What now?
+
+_Read other PRs_. If you're waiting for a review, it's likely that other
+pull requests are waiting for review as well. This can be a good time
+to go and take a look at what other work is happening in the project;
+and if another PR has review comments, it might provide a clue to the
+type of feedback you might expect.
+
+_Patience_. As a general goal, we try to respond to all pull requests
+within a few days, and to do preliminary review within a week, but we
+don't always succeed. If you've opened a PR and haven't heard from
+anyone, feel free to comment on it, or stop by the IRC channel, to ask
+if anyone has had a chance to take a look. It's very possible that it's
+been lost in the shuffle.
+
+## Getting more involved
+
+If you are participating in the xi-editor project, you may receive
+additional privileges:
+
+_Organization membership_: If you are regularly making contributions
+to a xi project, in any of the forms outlined above, we will be happy to
+add you to the xi-editor organization, which will give you the ability
+to do things like add labels to issues and view active projects.
+
+_Contributor_: If you are regularly making substantive contributions
+to a specific xi project, we will be happy to add you as a contributor
+to the repo in question. Contributors are encouraged to review and
+approve changes, respond to issues, and generally help to maintain
+the project in question.
+
+_Maintainer_: If you are making substantive contributions to multiple
+repos over an extended period, you are regularly reviewing the work of
+other contributors, and you are actively participating in planning and
+discussion, you may, (at the  discretion of @raphlinus) be invited to
+take on the role of _maintainer_. Maintainers are responsible for
+coordinating the general direction of the project, resolving
+architectural questions, and doing the day to day work of moving the
+project forward.
diff --git a/Documentation/Examples/geometry_example.cc b/Documentation/Examples/geometry_example.cc
index 6a05974fd6d5e0224d809072b99979e29578f7d2..dac31edc4ad173e6860a7cbabb901366cedb27d1 100644
--- a/Documentation/Examples/geometry_example.cc
+++ b/Documentation/Examples/geometry_example.cc
@@ -1,3 +1,14 @@
+
+/**
+ * (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.
+ */
+
 #include <corsika/geometry/CoordinateSystem.h>
 #include <corsika/geometry/Point.h>
 #include <corsika/geometry/Sphere.h>
diff --git a/Documentation/Examples/helix_example.cc b/Documentation/Examples/helix_example.cc
index 9d6cdb23c5de0e2f4dd879cc63179a0ba3dd6ab7..aea320270191ebcfb14e37a41fbdbbde2014c209 100644
--- a/Documentation/Examples/helix_example.cc
+++ b/Documentation/Examples/helix_example.cc
@@ -1,3 +1,14 @@
+
+/**
+ * (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.
+ */
+
 #include <corsika/geometry/CoordinateSystem.h>
 #include <corsika/geometry/Helix.h>
 #include <corsika/geometry/Point.h>
diff --git a/Documentation/Examples/logger_example.cc b/Documentation/Examples/logger_example.cc
index 94fcb588a2b4ebe225dd7750a17d5beb66abda38..1bd72012ec936e33d9caf791f240d1f7b24dde0b 100644
--- a/Documentation/Examples/logger_example.cc
+++ b/Documentation/Examples/logger_example.cc
@@ -1,3 +1,14 @@
+
+/**
+ * (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.
+ */
+
 #include <corsika/logging/Logger.h>
 #include <boost/format.hpp>
 #include <fstream>
diff --git a/Documentation/Examples/stack_example.cc b/Documentation/Examples/stack_example.cc
index 691cdb38440e916ee97f637705ea2bbfe3db89ba..f0a04f79be09dff2c58a74bc4822c443c12061f0 100644
--- a/Documentation/Examples/stack_example.cc
+++ b/Documentation/Examples/stack_example.cc
@@ -1,3 +1,14 @@
+
+/**
+ * (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.
+ */
+
 #include <corsika/particles/ParticleProperties.h>
 #include <corsika/stack/super_stupid/SuperStupidStack.h>
 #include <iomanip>
diff --git a/Documentation/Examples/staticsequence_example.cc b/Documentation/Examples/staticsequence_example.cc
index 92813f2e368d6db9c2016446ca069e8d890b5034..8049983f767a5ea28544f83cda9bffc84a35d95a 100644
--- a/Documentation/Examples/staticsequence_example.cc
+++ b/Documentation/Examples/staticsequence_example.cc
@@ -1,3 +1,14 @@
+
+/**
+ * (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.
+ */
+
 #include <array>
 #include <iomanip>
 #include <iostream>
diff --git a/Environment/FlatAtmosphere/FlatAtmosphere.h b/Environment/FlatAtmosphere/FlatAtmosphere.h
index 8b137891791fe96927ad78e64b0aad7bded08bdc..90582b3dfb00d2d85850b81455a2a4c0c061413b 100644
--- a/Environment/FlatAtmosphere/FlatAtmosphere.h
+++ b/Environment/FlatAtmosphere/FlatAtmosphere.h
@@ -1 +1,10 @@
 
+/**
+ * (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/Framework/Cascade/CMakeLists.txt b/Framework/Cascade/CMakeLists.txt
index 63fe2cb858b3709bccb3d12fda1b3d5160327dff..5dbb843bc79e6b181e47489f331490bb87c495a6 100644
--- a/Framework/Cascade/CMakeLists.txt
+++ b/Framework/Cascade/CMakeLists.txt
@@ -51,11 +51,13 @@ add_executable (
 
 target_link_libraries (
   testCascade
+#  CORSIKAutls
   CORSIKAcascade
+  ProcessStackInspector
+  CORSIKAprocesses
   CORSIKAparticles
   CORSIKAgeometry
   CORSIKAprocesssequence
-  SuperStupidStack
   CORSIKAunits
   CORSIKAthirdparty # for catch2
   )
diff --git a/Framework/Cascade/Cascade.cc b/Framework/Cascade/Cascade.cc
index 1bd6b5b2b1c2681edb48e77f51028ad54d10bf08..aeab1de22fa08617bbdda403958dca8152fdfdeb 100644
--- a/Framework/Cascade/Cascade.cc
+++ b/Framework/Cascade/Cascade.cc
@@ -1,20 +1,25 @@
+
+/**
+ * (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.
+ */
+
 #include <corsika/cascade/Cascade.h>
 
 using namespace corsika::cascade;
 
-template <typename ProcessList, typename Particle, typename Trajectory, typename Stack>
-Cascade<ProcessList, Particle, Trajectory, Stack>::Cascade() {
-  //  kkk;
-  //  kk;
-}
-
-template <typename ProcessList, typename Particle, typename Trajectory, typename Stack>
+template <typename ProcessList, typename Stack> //, typename Trajectory>
 void Cascade::Init() {
   fStack.Init();
   fProcesseList.Init();
 }
 
-template <typename ProcessList, typename Particle, typename Trajectory, typename Stack>
+template <typename ProcessList, typename Stack> //, typename Trajectory>
 void Cascade::Run() {
   if (!fStack.IsEmpty()) {
     if (!fStack.IsEmpty()) {
@@ -27,10 +32,11 @@ void Cascade::Run() {
   }
 }
 
-template <typename Sequence, typename Trajectory>
+template <typename ProcessList, typename Stack> //, typename Trajectory>
 void Cascade::Step(Particle& particle) {
   double nextStep = fProcesseList.MinStepLength(particle);
-  Trajectory trajectory = fProcesseList.Transport(particle, nextStep);
+  corsika::geometry::LineTrajectory trajectory =
+      fProcesseList.Transport(particle, nextStep);
   sequence.DoContinuous(particle, trajectory);
   sequence.DoDiscrete(particle);
 }
diff --git a/Framework/Cascade/Cascade.h b/Framework/Cascade/Cascade.h
index 25935d3a639cd0f6fc8974174b55391b4dd08710..50396b025c816a94f95466920ad542bf90f38e4f 100644
--- a/Framework/Cascade/Cascade.h
+++ b/Framework/Cascade/Cascade.h
@@ -1,8 +1,19 @@
+
+/**
+ * (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_Cascade_h_
 #define _include_Cascade_h_
 
-#include <corsika/geometry/LineTrajectory.h> // to be removed
-#include <corsika/geometry/Point.h>          // to be removed
+#include <corsika/geometry/LineTrajectory.h> // to be removed. for dummy trajectory only
+#include <corsika/geometry/Point.h>          // to be removed. for dummy trajectory only
 #include <corsika/process/ProcessReturn.h>
 #include <corsika/units/PhysicalUnits.h>
 
@@ -10,11 +21,13 @@ using namespace corsika::units::si;
 
 namespace corsika::cascade {
 
-  template <typename Trajectory, typename ProcessList, typename Stack>
+  template <typename ProcessList, typename Stack> //, typename Trajectory>
   class Cascade {
 
     typedef typename Stack::ParticleType Particle;
 
+    Cascade() = delete;
+
   public:
     Cascade(ProcessList& pl, Stack& stack)
         : fProcesseList(pl)
@@ -28,34 +41,37 @@ namespace corsika::cascade {
     void Run() {
       while (!fStack.IsEmpty()) {
         while (!fStack.IsEmpty()) {
-          // Particle& p = *fStack.GetNextParticle();
-          EnergyType Emin;
-          typename Stack::StackIterator pMin(fStack, 0);
-          bool first = true;
-          for (typename Stack::StackIterator ip = fStack.begin(); ip != fStack.end();
-               ++ip) {
+          Particle& pNext = *fStack.GetNextParticle();
+          /*
+            EnergyType Emin;
+            typename Stack::StackIterator pNext(fStack, 0);
+            bool first = true;
+            for (typename Stack::StackIterator ip = fStack.begin(); ip != fStack.end();
+            ++ip) {
             if (first || ip.GetEnergy() < Emin) {
-              first = false;
-              pMin = ip;
-              Emin = pMin.GetEnergy();
+            first = false;
+            pNext = ip;
+            Emin = pMin.GetEnergy();
             }
-          }
-
-          Step(pMin);
+            }
+          */
+          Step(pNext);
         }
         // do cascade equations, which can put new particles on Stack,
         // thus, the double loop
         // DoCascadeEquations(); //
       }
     }
-
+    
     void Step(Particle& particle) {
-      double nextStep = fProcesseList.MinStepLength(particle);
+      [[maybe_unused]] double nextStep = fProcesseList.MinStepLength(particle);
+      // corsika::utls::ignore(nextStep);
       corsika::geometry::CoordinateSystem root;
-      Trajectory trajectory(
-          corsika::geometry::Point(root, {0_m, 0_m, 0_m}),
-          corsika::geometry::Vector<corsika::units::si::SpeedType::dimension_type>(
-              root, 0 * 1_m / second, 0 * 1_m / second, 1 * 1_m / second));
+      corsika::geometry::LineTrajectory
+          trajectory( // trajectory is not yet used. this is a dummy.
+              corsika::geometry::Point(root, {0_m, 0_m, 0_m}),
+              corsika::geometry::Vector<corsika::units::si::SpeedType::dimension_type>(
+                  root, 0 * 1_m / second, 0 * 1_m / second, 1 * 1_m / second));
       corsika::process::EProcessReturn status =
           fProcesseList.DoContinuous(particle, trajectory, fStack);
       if (status == corsika::process::EProcessReturn::eParticleAbsorbed) {
@@ -64,10 +80,10 @@ namespace corsika::cascade {
         fProcesseList.DoDiscrete(particle, fStack);
       }
     }
-
+    
   private:
-    Stack& fStack;
     ProcessList& fProcesseList;
+    Stack& fStack;
   };
 
 } // namespace corsika::cascade
diff --git a/Framework/Cascade/Step.cc b/Framework/Cascade/Step.cc
index 60349c748f8438857a5dc4ffda338063a180634f..503bc80b1644ce66d60e9e80e9627c8d9c3daefa 100644
--- a/Framework/Cascade/Step.cc
+++ b/Framework/Cascade/Step.cc
@@ -1,4 +1,13 @@
 
+/**
+ * (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.
+ */
 
 namespace cascade;
 
diff --git a/Framework/Cascade/testCascade.cc b/Framework/Cascade/testCascade.cc
index 9d30afcefa12ac8b9a6f5b2798045cd6b1a61ccc..f14a7a3151202947db66ab1cd5564e845e6754b8 100644
--- a/Framework/Cascade/testCascade.cc
+++ b/Framework/Cascade/testCascade.cc
@@ -1,13 +1,27 @@
+
+/**
+ * (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.
+ */
+
 #include <corsika/cascade/Cascade.h>
 #include <corsika/geometry/LineTrajectory.h>
 #include <corsika/process/ProcessSequence.h>
 #include <corsika/process/stack_inspector/StackInspector.h>
-#include <corsika/stack/super_stupid/SuperStupidStack.h>
+
+#include <corsika/setup/SetupStack.h>
+#include <corsika/setup/SetupTrajectory.h>
 
 #define CATCH_CONFIG_MAIN // This tells Catch to provide a main() - only do this in one
                           // cpp file
 #include <catch2/catch.hpp>
 
+using namespace corsika;
 using namespace corsika::process;
 using namespace corsika::units;
 
@@ -26,7 +40,8 @@ public:
   }
 
   template <typename Particle, typename Trajectory, typename Stack>
-  EProcessReturn DoContinuous(Particle& p, Trajectory& t, Stack& s) const {
+  EProcessReturn DoContinuous(Particle&, Trajectory&, Stack&) const {
+    // corsika::utls::ignore(p);
     return EProcessReturn::eOk;
   }
 
@@ -49,55 +64,14 @@ public:
 private:
 };
 
-class ProcessReport : public corsika::process::BaseProcess<ProcessReport> {
-  bool fReport = false;
-
-public:
-  ProcessReport(bool v)
-      : fReport(v) {}
-
-  template <typename Particle>
-  double MinStepLength(Particle&) const {
-    return 0;
-  }
-
-  template <typename Particle, typename Trajectory, typename Stack>
-  EProcessReturn DoContinuous(Particle& p, Trajectory& t, Stack& s) const {
-    static int countStep = 0;
-    if (!fReport) return EProcessReturn::eOk;
-    // std::cout << "generation  " << countStep << std::endl;
-    int i = 0;
-    EnergyType Etot = 0_GeV;
-    for (auto& iterP : s) {
-      EnergyType E = iterP.GetEnergy();
-      Etot += E;
-      /*      std::cout << " particle data: " << i++ << ", id=" << iterP.GetPID()
-                << ", E=" << double(E / 1_GeV) << " GeV "
-                << " | " << std::endl;
-      */
-    }
-    countStep++;
-    // cout << "#=" << countStep << " " << s.GetSize() << " " << Etot/1_GeV << endl;
-    cout << countStep << " " << s.GetSize() << " " << Etot / 1_GeV << " " << fCount
-         << endl;
-    return EProcessReturn::eOk;
-  }
-
-  template <typename Particle, typename Stack>
-  void DoDiscrete(Particle& p, Stack& s) const {}
-  void Init() {}
-};
-
 TEST_CASE("Cascade", "[Cascade]") {
 
-  ProcessReport p0(true);
+  stack_inspector::StackInspector<setup::Stack, setup::Trajectory> p0(true);
   ProcessSplit p1;
   const auto sequence = p0 + p1;
-  corsika::stack::super_stupid::SuperStupidStack stack;
+  setup::Stack stack;
 
-  corsika::cascade::Cascade<corsika::geometry::LineTrajectory, decltype(sequence),
-                            decltype(stack)>
-      EAS(sequence, stack);
+  corsika::cascade::Cascade EAS(sequence, stack);
 
   stack.Clear();
   auto particle = stack.NewParticle();
diff --git a/Framework/Geometry/BaseTrajectory.h b/Framework/Geometry/BaseTrajectory.h
index e4eafb853117b47e4778e14b17c4ba54f46ad7b4..b39335c8c482bc18637fd28a95c90f2123fbaa40 100644
--- a/Framework/Geometry/BaseTrajectory.h
+++ b/Framework/Geometry/BaseTrajectory.h
@@ -1,3 +1,14 @@
+
+/**
+ * (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_BASETRAJECTORY_H
 #define _include_BASETRAJECTORY_H
 
diff --git a/Framework/Geometry/BaseVector.h b/Framework/Geometry/BaseVector.h
index f2079e91cc953b34499c2146da68c4cf88dfed8d..2cd1c3e490be90485164a060cefc708dbd64806e 100644
--- a/Framework/Geometry/BaseVector.h
+++ b/Framework/Geometry/BaseVector.h
@@ -1,3 +1,14 @@
+
+/**
+ * (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_BASEVECTOR_H_
 #define _include_BASEVECTOR_H_
 
diff --git a/Framework/Geometry/CMakeLists.txt b/Framework/Geometry/CMakeLists.txt
index a4fc43cb3364881d7f3e42939b0985b69df4afab..60992f4270249a7ad6d090086476849b9364e461 100644
--- a/Framework/Geometry/CMakeLists.txt
+++ b/Framework/Geometry/CMakeLists.txt
@@ -42,7 +42,7 @@ target_link_libraries (
 
 target_include_directories (
   CORSIKAgeometry
-  PRIVATE   ${EIGEN3_INCLUDE_DIR}
+  PUBLIC    ${EIGEN3_INCLUDE_DIR}
   INTERFACE ${EIGEN3_INCLUDE_DIR}
   $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include>
   $<INSTALL_INTERFACE:include/include>
diff --git a/Framework/Geometry/CoordinateSystem.cc b/Framework/Geometry/CoordinateSystem.cc
index b74808cdbaa115ad5b1e1b04dd7d9379b3f5d74c..9cf3a1a64125d4fe53236529bd821c6b2c5e57c5 100644
--- a/Framework/Geometry/CoordinateSystem.cc
+++ b/Framework/Geometry/CoordinateSystem.cc
@@ -1,3 +1,14 @@
+
+/**
+ * (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.
+ */
+
 #include <corsika/geometry/CoordinateSystem.h>
 
 using namespace corsika::geometry;
diff --git a/Framework/Geometry/CoordinateSystem.h b/Framework/Geometry/CoordinateSystem.h
index d30e9b4389ad772de241446bf1eb1c22b5e301e9..a6a0912904b6704cc7ad3fcbd4100ff64946976e 100644
--- a/Framework/Geometry/CoordinateSystem.h
+++ b/Framework/Geometry/CoordinateSystem.h
@@ -1,3 +1,14 @@
+
+/**
+ * (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_COORDINATESYSTEM_H_
 #define _include_COORDINATESYSTEM_H_
 
diff --git a/Framework/Geometry/Helix.h b/Framework/Geometry/Helix.h
index bd62d1919b5500ab22f2bad1eb2968a93dc90c0f..018299bcf63fa83f6022ffbc56e733a618a5bd1f 100644
--- a/Framework/Geometry/Helix.h
+++ b/Framework/Geometry/Helix.h
@@ -1,3 +1,14 @@
+
+/**
+ * (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_HELIX_H_
 #define _include_HELIX_H_
 
diff --git a/Framework/Geometry/LineTrajectory.h b/Framework/Geometry/LineTrajectory.h
index ee65b5e54e9ec3743b12b6aa8a14a6965e6d4eeb..f13f8d822947e2b90fa9a7ba7f69d23f43b0c1f8 100644
--- a/Framework/Geometry/LineTrajectory.h
+++ b/Framework/Geometry/LineTrajectory.h
@@ -1,3 +1,14 @@
+
+/**
+ * (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_LINETRAJECTORY_H
 #define _include_LINETRAJECTORY_H
 
diff --git a/Framework/Geometry/Point.h b/Framework/Geometry/Point.h
index debbf91854abdb1852052d487981400d4966da8a..26de8510662aefc6961c536541483d28c136c3ce 100644
--- a/Framework/Geometry/Point.h
+++ b/Framework/Geometry/Point.h
@@ -1,3 +1,14 @@
+
+/**
+ * (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_POINT_H_
 #define _include_POINT_H_
 
diff --git a/Framework/Geometry/QuantityVector.h b/Framework/Geometry/QuantityVector.h
index f4b6bbe0eded87cd0cd8c3a406190347c8f37b10..c128039df660cb00aca4908d1b24dc9568258c02 100644
--- a/Framework/Geometry/QuantityVector.h
+++ b/Framework/Geometry/QuantityVector.h
@@ -1,3 +1,14 @@
+
+/**
+ * (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_QUANTITYVECTOR_H_
 #define _include_QUANTITYVECTOR_H_
 
diff --git a/Framework/Geometry/Sphere.h b/Framework/Geometry/Sphere.h
index 28b4e7dc63d5ded1ecd6d047df442af4557e4f20..436c8e4029472ed17e211b2a02c0c3e486ab33a2 100644
--- a/Framework/Geometry/Sphere.h
+++ b/Framework/Geometry/Sphere.h
@@ -1,3 +1,14 @@
+
+/**
+ * (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_SPHERE_H_
 #define _include_SPHERE_H_
 
diff --git a/Framework/Geometry/Trajectory.h b/Framework/Geometry/Trajectory.h
index 0ce2b536659d1662e08aff8a4ea233ade3f430f1..237f37931e7ddc5ec6f23713c4fdcbc30123668a 100644
--- a/Framework/Geometry/Trajectory.h
+++ b/Framework/Geometry/Trajectory.h
@@ -1,3 +1,14 @@
+
+/**
+ * (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_TRAJECTORY_H
 #define _include_TRAJECTORY_H
 
diff --git a/Framework/Geometry/Vector.h b/Framework/Geometry/Vector.h
index fcebc10f73a12ad37494a59d32614c88e9697a31..cb4e4900544705c10a37ff16a0fd4ba00b0f9b29 100644
--- a/Framework/Geometry/Vector.h
+++ b/Framework/Geometry/Vector.h
@@ -1,3 +1,14 @@
+
+/**
+ * (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_VECTOR_H_
 #define _include_VECTOR_H_
 
diff --git a/Framework/Geometry/testGeometry.cc b/Framework/Geometry/testGeometry.cc
index 182f9c07d13e8351a8341be3490f1c64fca81707..31be0d360e81c9f53a6bda36c0fe4c685a61c4cb 100644
--- a/Framework/Geometry/testGeometry.cc
+++ b/Framework/Geometry/testGeometry.cc
@@ -1,3 +1,14 @@
+
+/**
+ * (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.
+ */
+
 #define CATCH_CONFIG_MAIN // This tells Catch to provide a main() - only do this in one
                           // cpp file
 #include <catch2/catch.hpp>
@@ -95,8 +106,9 @@ TEST_CASE("transformations between CoordinateSystems") {
     QuantityVector<length_d> const zAxis{0_m, 0_m, 1_km};
     QuantityVector<length_d> const yAxis{0_m, 7_nm, 0_m};
     QuantityVector<length_d> const xAxis{2_m, 0_nm, 0_m};
-    
-    QuantityVector<magnetic_flux_density_d> components{1. * tesla, 2. * tesla, 3. * tesla};
+
+    QuantityVector<magnetic_flux_density_d> components{1. * tesla, 2. * tesla,
+                                                       3. * tesla};
     Vector<magnetic_flux_density_d> v1(rootCS, components);
 
     double const angle = 90. / 180. * M_PI;
diff --git a/Framework/Logging/BufferedSink.h b/Framework/Logging/BufferedSink.h
index 33cb1afa7b7ae0d65e0b8c173248294c008d8b26..2c0f7be9b721c7910724a25aca4d8488d54e2422 100644
--- a/Framework/Logging/BufferedSink.h
+++ b/Framework/Logging/BufferedSink.h
@@ -1,3 +1,14 @@
+
+/**
+ * (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_BufferedSink_h_
 #define _include_BufferedSink_h_
 
diff --git a/Framework/Logging/Logger.h b/Framework/Logging/Logger.h
index fca23d70caa28a899af91f025852df0089c10b81..2639df8af6a573170c096d4f44b72e93bc593697 100644
--- a/Framework/Logging/Logger.h
+++ b/Framework/Logging/Logger.h
@@ -1,3 +1,14 @@
+
+/**
+ * (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.
+ */
+
 /**
    @File Logger.h
 
diff --git a/Framework/Logging/MessageOff.h b/Framework/Logging/MessageOff.h
index d22d131eb5ddaf012a61341033ce8ee10e3e8e5d..4bdf10d5af622b5fdc1b35316fa258be1322573e 100644
--- a/Framework/Logging/MessageOff.h
+++ b/Framework/Logging/MessageOff.h
@@ -1,3 +1,14 @@
+
+/**
+ * (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_MessageOff_h_
 #define _include_MessageOff_h_
 
diff --git a/Framework/Logging/MessageOn.h b/Framework/Logging/MessageOn.h
index a25928674a73ccbe1837190043a2688be4118ea1..c7756150f03f521ee7b54f0385270face22edb6e 100644
--- a/Framework/Logging/MessageOn.h
+++ b/Framework/Logging/MessageOn.h
@@ -1,3 +1,14 @@
+
+/**
+ * (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_MessageOn_h_
 #define _include_MessageOn_h_
 
diff --git a/Framework/Logging/NoSink.h b/Framework/Logging/NoSink.h
index d0ba53649f2f4654e9b19fd75c1e84445eed84f6..6e2fe48ebf66b072031eab47c6a2370b38cd2a52 100644
--- a/Framework/Logging/NoSink.h
+++ b/Framework/Logging/NoSink.h
@@ -1,3 +1,14 @@
+
+/**
+ * (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_NoSink_h_
 #define _include_NoSink_h_
 
diff --git a/Framework/Logging/Sink.h b/Framework/Logging/Sink.h
index f51b70294ebdf4ac63362448e5b851d7a52b62b3..74a42185e6be225da119f0812d653756ef30da4f 100644
--- a/Framework/Logging/Sink.h
+++ b/Framework/Logging/Sink.h
@@ -1,3 +1,14 @@
+
+/**
+ * (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_Sink_h_
 #define _include_Sink_h_
 
diff --git a/Framework/Logging/testLogging.cc b/Framework/Logging/testLogging.cc
index d28c46de441f66801367ef39f1f103ac3997b057..12a77b3cab504672438e0e6f7d4fe2383d35b8d6 100644
--- a/Framework/Logging/testLogging.cc
+++ b/Framework/Logging/testLogging.cc
@@ -1,3 +1,14 @@
+
+/**
+ * (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.
+ */
+
 #include <corsika/logging/Logger.h>
 
 #define CATCH_CONFIG_MAIN // This tells Catch to provide a main() - only do this in one
diff --git a/Framework/Particles/CMakeLists.txt b/Framework/Particles/CMakeLists.txt
index 99d8e5a96b526ea7903ff954a9c54d233d8deab9..8ea8654fad658692dbbc1819dbc2ab957cb64de5 100644
--- a/Framework/Particles/CMakeLists.txt
+++ b/Framework/Particles/CMakeLists.txt
@@ -14,6 +14,11 @@ add_custom_command (
   VERBATIM
   )
 
+set (
+  PARTICLE_SOURCES
+  ParticleProperties.cc
+  )
+
 # all public header files of library, includes automatic generated file(s)
 set (
   PARTICLE_HEADERS
@@ -26,7 +31,7 @@ set (
   corsika/particles
   )
 
-add_library (CORSIKAparticles INTERFACE)
+add_library (CORSIKAparticles STATIC ${PARTICLE_SOURCES})
 
 CORSIKA_COPY_HEADERS_TO_NAMESPACE (CORSIKAparticles ${PARTICLE_NAMESPACE} ${PARTICLE_HEADERS})
 
@@ -39,14 +44,27 @@ add_custom_command (
   COMMAND ${CMAKE_COMMAND} -E create_symlink ${PROJECT_BINARY_DIR}/include/corsika/particles/GeneratedParticleProperties.inc ${CMAKE_CURRENT_SOURCE_DIR}/GeneratedParticleProperties.inc
   COMMENT "Generate link in source-dir: ${CMAKE_CURRENT_SOURCE_DIR}/GeneratedParticleProperties.inc"
   )
-add_custom_target (SourceDirLink DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/GeneratedParticleProperties.inc)
+add_custom_target (SourceDirLink DEPENDS ${PROJECT_BINARY_DIR}/Framework/Particles/GeneratedParticleProperties.inc)
 add_dependencies (CORSIKAparticles SourceDirLink)
 # .....................................................
 
+target_link_libraries (
+  CORSIKAparticles
+  PUBLIC
+  CORSIKAunits
+  )
+
+set_target_properties (
+  CORSIKAparticles
+  PROPERTIES
+  VERSION ${PROJECT_VERSION}
+  SOVERSION 1
+  PUBLIC_HEADER "${PARTICLE_HEADERS}"
+  )
 
 target_include_directories (
   CORSIKAparticles
-  INTERFACE
+  PUBLIC
   $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include>
   $<INSTALL_INTERFACE:include>
   )
diff --git a/Framework/Particles/ParticleProperties.cc b/Framework/Particles/ParticleProperties.cc
new file mode 100644
index 0000000000000000000000000000000000000000..1100b55a2689c1fb30b9997c6dfe6df985ed45a8
--- /dev/null
+++ b/Framework/Particles/ParticleProperties.cc
@@ -0,0 +1,9 @@
+#include <corsika/particles/ParticleProperties.h>
+
+namespace corsika::particles::io {
+
+  std::ostream& operator<<(std::ostream& stream, Code const p) {
+    return stream << GetName(p);
+  }
+
+} // namespace corsika::particles::io
diff --git a/Framework/Particles/ParticleProperties.h b/Framework/Particles/ParticleProperties.h
index e28648127830ab150556ec781ee057e4b6c39976..330048b3bf4fc0bfcd1ec6d128950f09a4552b15 100644
--- a/Framework/Particles/ParticleProperties.h
+++ b/Framework/Particles/ParticleProperties.h
@@ -1,11 +1,22 @@
+
+/**
+ * (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.
+ */
+
 /**
    @file Particles.h
 
    Interface to particle properties
  */
 
-#ifndef _include_ParticleProperties_h_
-#define _include_ParticleProperties_h_
+#ifndef _include_corsika_particles_ParticleProperties_h_
+#define _include_corsika_particles_ParticleProperties_h_
 
 #include <array>
 #include <cstdint>
@@ -24,6 +35,7 @@
  */
 
 namespace corsika::particles {
+
   enum class Code : int16_t;
 
   using PDGCodeType = int16_t;
@@ -34,7 +46,7 @@ namespace corsika::particles {
   corsika::units::si::ElectricChargeType constexpr GetElectricCharge(Code const);
   corsika::units::si::MassType constexpr GetMass(Code const);
   PDGCodeType constexpr GetPDG(Code const);
-  std::string const& GetName(Code const);
+  constexpr std::string const& GetName(Code const);
 
 #include <corsika/particles/GeneratedParticleProperties.inc>
 
@@ -60,15 +72,13 @@ namespace corsika::particles {
     return GetElectricChargeNumber(p) * (corsika::units::si::constants::e / 3.);
   }
 
-  std::string const& GetName(Code const p) {
+  constexpr std::string const& GetName(Code const p) {
     return names[static_cast<CodeIntType const>(p)];
   }
 
   namespace io {
 
-    std::ostream& operator<<(std::ostream& stream, Code const p) {
-      return stream << GetName(p);
-    }
+    std::ostream& operator<<(std::ostream& stream, Code const p);
 
   } // namespace io
 
diff --git a/Framework/Particles/testParticles.cc b/Framework/Particles/testParticles.cc
index 098780caf1d5459170bb7f816ea569235707a252..443d167c43ea49eb5a74972a3a780f3b4d280565 100644
--- a/Framework/Particles/testParticles.cc
+++ b/Framework/Particles/testParticles.cc
@@ -1,4 +1,14 @@
 
+/**
+ * (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.
+ */
+
 #include <corsika/particles/ParticleProperties.h>
 #include <corsika/units/PhysicalUnits.h>
 
diff --git a/Framework/ProcessSequence/ProcessReturn.h b/Framework/ProcessSequence/ProcessReturn.h
index 9d43cdf07bcd7bdbc8fb604387b7c46d444e4460..82cc816c5ae9bd9d731f00c33f9bf0321a02d650 100644
--- a/Framework/ProcessSequence/ProcessReturn.h
+++ b/Framework/ProcessSequence/ProcessReturn.h
@@ -1,3 +1,14 @@
+
+/**
+ * (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_ProcessReturn_h_
 #define _include_ProcessReturn_h_
 
diff --git a/Framework/ProcessSequence/ProcessSequence.h b/Framework/ProcessSequence/ProcessSequence.h
index bfb2c99320c4cf2e588502b1b3b8b2686e069d8a..4b2fc83c28ad0e1ec978c24814e5a4285a00aa40 100644
--- a/Framework/ProcessSequence/ProcessSequence.h
+++ b/Framework/ProcessSequence/ProcessSequence.h
@@ -1,3 +1,14 @@
+
+/**
+ * (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_ProcessSequence_h_
 #define _include_ProcessSequence_h_
 
diff --git a/Framework/ProcessSequence/testProcessSequence.cc b/Framework/ProcessSequence/testProcessSequence.cc
index a83d23b3cb290ba715e726ce952f0ea85149095a..b144230eb5fa81a11caf0c98dd28d9ca8b043a05 100644
--- a/Framework/ProcessSequence/testProcessSequence.cc
+++ b/Framework/ProcessSequence/testProcessSequence.cc
@@ -1,3 +1,14 @@
+
+/**
+ * (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.
+ */
+
 #define CATCH_CONFIG_MAIN // This tells Catch to provide a main() - only do this in one
                           // cpp file
 #include <catch2/catch.hpp>
diff --git a/Framework/Random/RNGManager.cc b/Framework/Random/RNGManager.cc
index e28d9d57b5b02fbd698bbba5c3673573ae5cd8a4..3245e8bfd4b5557fcf0cda06f9a09cf15a4ca90e 100644
--- a/Framework/Random/RNGManager.cc
+++ b/Framework/Random/RNGManager.cc
@@ -1,3 +1,14 @@
+
+/**
+ * (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.
+ */
+
 #include <corsika/random/RNGManager.h>
 
 void corsika::random::RNGManager::RegisterRandomStream(std::string const& pStreamName) {
diff --git a/Framework/Random/RNGManager.h b/Framework/Random/RNGManager.h
index 9c38400e3a30aa2dedabcba43dfabb82a1c789c9..5e05b750c0d1a5cba02bfc0483cb72ee50bc8084 100644
--- a/Framework/Random/RNGManager.h
+++ b/Framework/Random/RNGManager.h
@@ -1,3 +1,14 @@
+
+/**
+ * (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_RNGManager_h_
 #define _include_RNGManager_h_
 
diff --git a/Framework/Random/testRandom.cc b/Framework/Random/testRandom.cc
index 222a25549c6b3a8a01ba3f7298ec4024e2211c67..6e4cfa11d0034c85567218b73c486b1e32f497c2 100644
--- a/Framework/Random/testRandom.cc
+++ b/Framework/Random/testRandom.cc
@@ -1,3 +1,14 @@
+
+/**
+ * (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.
+ */
+
 #define CATCH_CONFIG_MAIN // This tells Catch to provide a main() - only do this in one
                           // cpp file
 #include <catch2/catch.hpp>
diff --git a/Framework/StackInterface/CMakeList.txt b/Framework/StackInterface/CMakeList.txt
deleted file mode 100644
index aea441bd22ca6fd91def7826534b5c5e3e98814d..0000000000000000000000000000000000000000
--- a/Framework/StackInterface/CMakeList.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-
-add_library (CORSIKAstack INTERFACE)
-
-target_include_directories (CORSIKAstack INTERFACE $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/Framework>
-                                                   $<INSTALL_INTERFACE:include/Framework>
-                                                   )
-
-install (FILES Stack.h StackIterator.h
-         DESTINATION include/Stack)
-
diff --git a/Framework/StackInterface/CMakeLists.txt b/Framework/StackInterface/CMakeLists.txt
index 11a30200e4e29191012850c33063b5a0ddeba385..42c52ceab9c30014de606890a37ae596538f4e1c 100644
--- a/Framework/StackInterface/CMakeLists.txt
+++ b/Framework/StackInterface/CMakeLists.txt
@@ -31,9 +31,7 @@ install (
   include/${CORSIKAstackinterface_NAMESPACE}
   )
 
-
-# code testing
+#code testing
 add_executable (testStackInterface testStackInterface.cc)
-target_link_libraries (testStackInterface CORSIKAstackinterface CORSIKAthirdparty) # for catch2
 add_test(NAME testStackInterface COMMAND testStackInterface)
-
+target_link_libraries (testStackInterface CORSIKAstackinterface CORSIKAthirdparty) # for catch2
diff --git a/Framework/StackInterface/ParticleBase.h b/Framework/StackInterface/ParticleBase.h
index b907129295a006a88092c6b5d0caa346b9706de0..1d1d51efaed25155e88976ac364f2605e7498a33 100644
--- a/Framework/StackInterface/ParticleBase.h
+++ b/Framework/StackInterface/ParticleBase.h
@@ -1,3 +1,14 @@
+
+/**
+ * (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_particleBase_h_
 #define _include_particleBase_h_
 
diff --git a/Framework/StackInterface/Stack.h b/Framework/StackInterface/Stack.h
index d493ef5eff59912afd195f9e75f6c5f21744cd2f..b4660144df60754df6ff8e78e45d0920f5a58cf8 100644
--- a/Framework/StackInterface/Stack.h
+++ b/Framework/StackInterface/Stack.h
@@ -1,3 +1,14 @@
+
+/**
+ * (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_Stack_h__
 #define _include_Stack_h__
 
diff --git a/Framework/StackInterface/StackIterator.h b/Framework/StackInterface/StackIterator.h
index bcbb8340d6aaa02b317dbeb123a1c99bcc650a31..9e8d07e68bedc5080a0a750b3e73972664bf712c 100644
--- a/Framework/StackInterface/StackIterator.h
+++ b/Framework/StackInterface/StackIterator.h
@@ -1,3 +1,14 @@
+
+/**
+ * (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_StackIterator_h__
 #define _include_StackIterator_h__
 
diff --git a/Framework/StackInterface/testStackInterface.cc b/Framework/StackInterface/testStackInterface.cc
index e00ecc18333c18baee2b7372d473726e5460419c..078a09407c713287c36c9a48d20e5e842a32bc09 100644
--- a/Framework/StackInterface/testStackInterface.cc
+++ b/Framework/StackInterface/testStackInterface.cc
@@ -1,3 +1,14 @@
+
+/**
+ * (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.
+ */
+
 #include <corsika/stack/Stack.h>
 
 #include <iomanip>
diff --git a/Framework/Units/testUnits.cc b/Framework/Units/testUnits.cc
index 7fc0b00a6e3959d1cce05e31ed3239a7a82105df..3528cf67cd85cd07d3b38d9f9e23cd6c973b9057 100644
--- a/Framework/Units/testUnits.cc
+++ b/Framework/Units/testUnits.cc
@@ -1,3 +1,14 @@
+
+/**
+ * (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.
+ */
+
 #define CATCH_CONFIG_MAIN // This tells Catch to provide a main() - only do this in one
                           // cpp file
 #include <catch2/catch.hpp>
@@ -16,7 +27,7 @@ TEST_CASE("PhysicalUnits", "[Units]") {
   }
 
   SECTION("Constructors") {
-    auto E1 = 10_GeV;
+    [[maybe_unused]] auto E1 = 10_GeV;
     REQUIRE(E1 == 10_GeV);
 
     LengthType l1 = 10_nm;
@@ -25,11 +36,11 @@ TEST_CASE("PhysicalUnits", "[Units]") {
     LengthType arr0[5];
     arr0[0] = 5_m;
 
-    LengthType arr1[2] = {{1_mm}, {2_cm}};
+    [[maybe_unused]] LengthType arr1[2] = {{1_mm}, {2_cm}};
 
     std::array<EnergyType, 4> arr2; // empty array
 
-    std::array<EnergyType, 4> arr3 = {1_GeV, 1_eV, 5_MeV};
+    [[maybe_unused]] std::array<EnergyType, 4> arr3 = {1_GeV, 1_eV, 5_MeV};
   }
 
   SECTION("Powers in literal units") {
diff --git a/GUIDELINES.md b/GUIDELINES.md
new file mode 100644
index 0000000000000000000000000000000000000000..8558b13263a63cdacd9c60b88e9aa55f63d49454
--- /dev/null
+++ b/GUIDELINES.md
@@ -0,0 +1,117 @@
+# Guidelines for code development, structure, formating etc.
+
+The CORSIKA Project very much welcomes contributions. Here we outlined
+how you can find the right place to contribute, and how to do that.
+Connect to http://gitlab.ikp.kit.edu and corsika-devel@lists.kit.edu
+or corsika-project@lists.kit.edu to get in touch with the project.
+The CORSIKA Project decides on the [GUIDELINES](GUIDELINES.md), and can
+change them.
+
+# How to contribute
+
+  - We organize all development via `Issues` that may be feature requests,
+    ideas, or bugs fix requests. 
+  - New issues can be created, or existing issues
+    picked up. 
+  - Issues are discussed in meetings or via  corsika-devel@lists.kit.edu  within the CORSIKA Project.
+  - Issues are assigned to milestones. 
+  - The work on issues is performed in `branches` that can be best
+    created directly via the gitlab web interface. 
+  - Proposed code to close one issue (located in a specific git
+    branch) is reviewed and eventually discussed, and finally merged
+    into the master branch to close the issue.
+
+
+## Code formatting
+
+We rely on `clang-format` for code formatting. This has the tremendous
+advantage that definitely all code follows the same formatting rules,
+and nobody at any point needs to invest time and effort into code
+formatting. We provide a script `do-clang-format.sh`, which can be
+very useful. But we urge everybody to integrate `clang-format` already
+on the level of your source code editor. See [the official
+page](https://clang.llvm.org/docs/ClangFormat.html) for information
+about `clang-format` and its editor integration. 
+
+The definition of source code format is written down in the file
+[.clang-format](.clang-format) and can be changed, if the CORSIKA
+Project agrees on it. To see what is possible, check
+e.g. [link1](https://clangformat.com/) or
+[link2](https://zed0.co.uk/clang-format-configurator/).
+
+## Naming conventions
+
+While `clang-format` does the structural formatting, we still need to agree on naming conventions:
+
+  - Classes and structs start with capital letters
+  - Class member variables start with "f"
+  - Any static variable has a "g" prefix. A static member variable starts with "fg"
+  - Class member functions start with capital letters
+  - Any class getter begins with "Get", and setter with "Set"
+  - enums should be "enum class", and start with a capital "E", enum entries start with "e"
+
+  - We use namespaces to avoid clashes and to structure code
+    - *Everything* is part of the corsika namespace
+    - All classes and objects are encapsulated into suited sub-namespaces,
+      thus corsika::geometry, corsika::processes, corsika::units, etc.
+    - Namespace names do not use capital letters.  
+    - Every header file is copied during build and install into
+      "include/corsika/[namespace]" which also means, each header file
+      can only provide definitions for a _single_ namespace. It is one
+      main purpose of namespaces to structure the location of header
+      files.
+    - Each header file uses an include protection that includes at
+      least the namespace name, and header file name, thus, `#ifndef
+      __include_geometry_Point_h__` or `#ifnedf __geometry_Point_h__`,
+      or similar are acceptable.
+    - Header files should always be included with `<..>`, thus,
+      `#include <corsika/geometry/Point.h>` since the build system
+      will always provide the correct include directives (and files
+      anyway cannot be found in file-system paths that typically do
+      not follow the namespace naming conventions outlined
+      here).
+
+  - Header files are named after the main class (or object) they
+    define. This also means each header file name starts with a
+    capital letter.
+  
+
+## Coding rules
+
+  - Code may not introduce any compiler errors, or warnings
+  - All unit tests must succeed at all times
+  - We use C++17 concepts wherever useful and helpful
+  - On any major error or malfunction we throw an exception. This is needed and required for complex physics and shower debugging.
+  - We never catch exceptions for error handling, there might be very few special exceptions from this. We need to discuss such cases.
+  - Everything that should not change should be `const`
+  - Everything that does not need to be visible to the outside of a class/struct should be `private` or `protected`
+  - We prefer the use of references, wherever useful
+  - There cannot be any pointer in the interface of any class or object
+    exposed to outside users, there might be pointers for very special cases
+    inside of classes.
+  - When you contribute new code, or extend existing code, at the same time provide unit-tests for all functionality.
+  - Code must be documented with `doxygen` commands
+  
+
+## Release versioning scheme
+
+Releases of CORSIKA are thought to be the baseline for larger scale testing, and full production. 
+The releases are numbered as x.y.z, starting with x=8 form the gitlab c++ version. X will only be incremented 
+for major design or physics changes. The y index is updated for new official releases that normally contain improved or enhanced physics 
+performance, and may also contain normal interface changes to accomodate improvements. The z index can be updated frequently for
+bug fixes or new features. Changes in z will not contain interface changes, thus, code will remain fully compatible.  
+Special releases of CORSIKA can also have a tag name from git, e.g. as in the "milestone1" release.
+
+
+# How to become scientific author of the CORSIKA Project
+
+The CORSIKA Project decides on who becomes scientific author. The
+following conditions are clearly sufficient, but not all of them are
+required all the time:
+  - responsibility for a particular functionality or part
+  - follows these [GUIDELINES](GUIDELINES.md)
+  - agrees to the [COLLABORATION_AGREEMENT](COLLABORATION_AGREEMENT.md)
+  - active in the CORSIKA Project, that means responsive to
+    discussions and problems in corsika-devel@list.kit.edu or on https//gitlab.ikp.kit.edu, of relevant *issues*,
+    or in (phone) meetings
+  - the members of the CORSIKA Project panel agree
diff --git a/MCNET_GUIDELINES b/MCNET_GUIDELINES
new file mode 100644
index 0000000000000000000000000000000000000000..60d53f92a3d9f5edab6725c863591b286d6b618c
--- /dev/null
+++ b/MCNET_GUIDELINES
@@ -0,0 +1,112 @@
+These guidelines are copied from: http://www.montecarlonet.org/
+---------------------------------------------------------------
+
+
+               MCNET GUIDELINES
+
+      for Event Generator Authors and Users
+
+
+    PREAMBLE
+
+This generator has been developed as part of an academic research
+project and is the result of many years of work by the authors.
+Proper academic recognition is a requirement for its continued
+development.
+
+The components of the program have been developed to work together
+as a coherent physics framework. We believe that the creation of
+separately maintained forks or piecewise distribution of individual
+parts would diminish their scientific value.
+
+The authors are convinced that software development in a scientific
+context requires full availability of all source code, to further
+progress and to allow local modifications to meet the specific
+requirements of the individual user.
+
+Therefore we have decided to release this program under the GNU
+General Public License (GPL) version 2 (with the option to instead
+follow the terms and conditions of any later version of GPL). This
+ensures that the source code will be available to you and grants you
+the freedom to use and modify the program. You can redistribute your
+modified versions as long as you retain the GPL and respect existing
+copyright notices (see the file 'COPYING' for details).
+
+By using the GPL, we entrust you with considerable freedom and expect
+you to use it wisely, since the GPL does not address the issues in
+the first two paragraphs. To remedy this shortcoming, we have
+formulated the following guidelines relevant for the distribution
+and usage of event generator software in an academic setting.
+
+
+    GUIDELINES
+
+1) The integrity of the program should be respected.
+    -------------------------------------------------
+
+1.1) Suspected bugs and proposed fixes should be reported back to the
+    original authors to be considered for inclusion in the standard
+    distribution.  No independently developed and maintained forks
+    should be created as long as the original authors actively work on
+    the program.
+
+1.2) The program should normally be redistributed in its entirety.
+    When there are special reasons, an agreement should be sought with
+    the original authors to redistribute only specific parts. This
+    should be arranged such that the redistributed parts remain
+    updated in step with the standard distribution.
+
+1.3) Any changes in the code must be clearly marked in the source
+   (reason, author, date) and documented. If any modified version is
+   redistributed it should be stated at the point of distribution
+   (download link) that it has been modified and why.
+
+1.4) If a significant part of the code is used by another program,
+    this should be clearly specified in that program's documentation and
+    stated at its point of distribution.
+
+1.5) Copyright information and references may not be removed.
+    Copyright-related program messages may not be altered and must be
+    printed even if only a part of the program is used. Adding further
+    messages specifying any modifications is encouraged.
+
+
+2) The program and its physics should be properly cited when used for
+    academic publications
+    ------------------------------------------------------------------
+
+2.1) The main software reference as designated by the program authors
+    should always be cited.
+
+2.2) In addition, the original literature on which the program is based
+    should be cited to the extent that it is of relevance for a study,
+    applying the same threshold criteria as for other literature.
+
+2.3) When several programs are combined, they should all be mentioned,
+    commensurate with their importance for the physics study at hand.
+
+2.4) To make published results reproducible, the exact versions of the
+    codes that were used and any relevant program and parameter
+    modifications should be spelled out.
+
+
+    POSTSCRIPT
+
+The copyright license of the software is the GPL v2 alone, therefore
+the above guidelines are not legally binding. However, we reserve the
+right to criticize offenders. The guidelines should always be combined
+with common sense, for interpretation and for issues not covered.
+Enquiries regarding the guidelines and related issues are encouraged
+and should be directed to the authors of the program.
+
+Please note that the program, including all its code and documentation,
+is intended for academic use and is delivered "as is" to be used at 
+your own risk, without any guarantees.
+
+----------------------------------------------------------------------
+
+These guidelines were edited by Nils Lavesson and David Grellscheid
+for the MCnet collaboration, which has approved and agreed to respect
+them.  MCnet is a Marie Curie Research Training Network funded under
+Framework Programme 6 contract MRTN-CT-2006-035606.
+
diff --git a/Main/Environment.h b/Main/Environment.h
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..90582b3dfb00d2d85850b81455a2a4c0c061413b 100644
--- a/Main/Environment.h
+++ b/Main/Environment.h
@@ -0,0 +1,10 @@
+
+/**
+ * (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 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..90582b3dfb00d2d85850b81455a2a4c0c061413b 100644
--- a/Main/Stack.h
+++ b/Main/Stack.h
@@ -0,0 +1,10 @@
+
+/**
+ * (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 7bc09673a29ed82e49f1939a52b3f5c86f31adad..10facda7435af5d9f6f1ab83223a25ad61c068b1 100644
--- a/Main/shower.cc
+++ b/Main/shower.cc
@@ -1,3 +1,14 @@
+
+/**
+ * (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.
+ */
+
 #include <utl/Stack.h>
 
 int main(int argc, char** argv) { return 0; }
diff --git a/Processes/CMakeLists.txt b/Processes/CMakeLists.txt
index 26d6814423d8948e08241babec5e1f646f0ba06a..c59cafa4654b415c9f4dcee8267858389a60b75a 100644
--- a/Processes/CMakeLists.txt
+++ b/Processes/CMakeLists.txt
@@ -1,3 +1,10 @@
+
 add_subdirectory (NullModel)
 #add_subdirectory (Sibyll)
 add_subdirectory (StackInspector)
+
+#add_custom_target(CORSIKAprocesses)
+add_library (CORSIKAprocesses INTERFACE)
+add_dependencies(CORSIKAprocesses ProcessNullModel)
+add_dependencies(CORSIKAprocesses ProcessSibyll)
+add_dependencies(CORSIKAprocesses ProcessStackInspector)
diff --git a/Processes/NullModel/NullModel.cc b/Processes/NullModel/NullModel.cc
index 4da71dc16066f65af4623db7a45338ac9c8fde0c..3629d522a3383abcb5954a84f2fa47d1a1d45354 100644
--- a/Processes/NullModel/NullModel.cc
+++ b/Processes/NullModel/NullModel.cc
@@ -1,3 +1,14 @@
+
+/**
+ * (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.
+ */
+
 #include <corsika/process/null_model/NullModel.h>
 
 using namespace corsika::process::null_model;
diff --git a/Processes/NullModel/NullModel.h b/Processes/NullModel/NullModel.h
index 98782765696e7d0a87d19611bba0d9fc1e9f4c7f..dc3bf504bca57e2cadcc264ec50e9903dcd9a2ad 100644
--- a/Processes/NullModel/NullModel.h
+++ b/Processes/NullModel/NullModel.h
@@ -1,3 +1,14 @@
+
+/**
+ * (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 _Physics_NullModel_NullModel_h_
 #define _Physics_NullModel_NullModel_h_
 
diff --git a/Processes/NullModel/testNullModel.cc b/Processes/NullModel/testNullModel.cc
index 311c732cec4b3cbdb8bcb4d4886b37df0e940696..c098b025b678427f1e244fc8052d0dd889f11d08 100644
--- a/Processes/NullModel/testNullModel.cc
+++ b/Processes/NullModel/testNullModel.cc
@@ -1,3 +1,14 @@
+
+/**
+ * (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.
+ */
+
 #define CATCH_CONFIG_MAIN // This tells Catch to provide a main() - only do this in one
                           // cpp file
 #include <catch2/catch.hpp>
diff --git a/Processes/Sibyll/ParticleConversion.cc b/Processes/Sibyll/ParticleConversion.cc
index 6aca2fcf0a07a1ee89eeb859fbb6b40b37e96ec3..9925b97b9e90dba68dc38f46fd5ddb32e71c68c7 100644
--- a/Processes/Sibyll/ParticleConversion.cc
+++ b/Processes/Sibyll/ParticleConversion.cc
@@ -1,3 +1,14 @@
+
+/**
+ * (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.
+ */
+
 #include <corsika/particles/ParticleProperties.h>
 #include <corsika/process/sibyll/ParticleConversion.h>
 
diff --git a/Processes/Sibyll/ParticleConversion.h b/Processes/Sibyll/ParticleConversion.h
index e4461a24acacf3f86516a39f8787750730ceca34..aa9db1f27c46ede634c8f01e56fbd26a43740ea8 100644
--- a/Processes/Sibyll/ParticleConversion.h
+++ b/Processes/Sibyll/ParticleConversion.h
@@ -1,3 +1,14 @@
+
+/**
+ * (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_processes_sibyll_particles_h_
 #define _include_processes_sibyll_particles_h_
 
diff --git a/Processes/Sibyll/testSibyll.cc b/Processes/Sibyll/testSibyll.cc
index 581e5a10b0e66e2c111a3958f51b23548e9d5197..86fec3148bdc36e9fe082beeba2ee7736f7aad74 100644
--- a/Processes/Sibyll/testSibyll.cc
+++ b/Processes/Sibyll/testSibyll.cc
@@ -1,4 +1,14 @@
 
+/**
+ * (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.
+ */
+
 #include <corsika/particles/ParticleProperties.h>
 #include <corsika/process/sibyll/ParticleConversion.h>
 #include <corsika/units/PhysicalUnits.h>
diff --git a/Processes/StackInspector/CMakeLists.txt b/Processes/StackInspector/CMakeLists.txt
index 90b92bca58b8f9967591197bdbe0b64e01981f6f..b0b9d379e9b5b1c7536e1619e9c9e55f322b791c 100644
--- a/Processes/StackInspector/CMakeLists.txt
+++ b/Processes/StackInspector/CMakeLists.txt
@@ -29,6 +29,7 @@ set_target_properties (
 target_link_libraries (
   ProcessStackInspector
   CORSIKAunits
+  CORSIKAsetup
   )
 
 target_include_directories (
@@ -52,7 +53,6 @@ add_executable (testStackInspector testStackInspector.cc)
 
 target_link_libraries (
   testStackInspector
-  CORSIKAgeometry
   CORSIKAunits
   CORSIKAthirdparty # for catch2
   )
diff --git a/Processes/StackInspector/StackInspector.cc b/Processes/StackInspector/StackInspector.cc
index b52ab72b4b26e327a4f80bbbe0642ae1227064d5..3455294e4e6eb6db54f96d0170ad88144a711a99 100644
--- a/Processes/StackInspector/StackInspector.cc
+++ b/Processes/StackInspector/StackInspector.cc
@@ -1,13 +1,56 @@
 #include <corsika/process/stack_inspector/StackInspector.h>
+#include <corsika/units/PhysicalUnits.h>
 
+#include <iostream>
+using namespace std;
+
+using namespace corsika;
+using namespace corsika::units::si;
 using namespace corsika::process::stack_inspector;
 
-StackInspector::StackInspector() {}
+template <typename Stack, typename Trajectory>
+StackInspector<Stack, Trajectory>::StackInspector(const bool aReport)
+    : fReport(aReport) {}
+
+template <typename Stack, typename Trajectory>
+StackInspector<Stack, Trajectory>::~StackInspector() {}
+
+template <typename Stack, typename Trajectory>
+process::EProcessReturn StackInspector<Stack, Trajectory>::DoContinuous(Particle&,
+                                                                        Trajectory&,
+                                                                        Stack& s) const {
+
+  // using namespace corsika::particles::io;
+
+  static int countStep = 0;
+  if (!fReport) return EProcessReturn::eOk;
+  // std::cout << "generation  " << countStep << std::endl;
+  [[maybe_unused]] int i = 0;
+  EnergyType Etot = 0_GeV;
+  for (auto& iterP : s) {
+    EnergyType E = iterP.GetEnergy();
+    Etot += E;
+    // std::cout << " particle data: " << i++ << ", id=" << iterP << " | " << std::endl;
+  }
+  countStep++;
+  // cout << "#=" << countStep << " " << s.GetSize() << " " << Etot/1_GeV << endl;
+  cout << countStep << " " << s.GetSize() << " " << Etot / 1_GeV << " " << endl;
+  return EProcessReturn::eOk;
+}
+
+template <typename Stack, typename Trajectory>
+double StackInspector<Stack, Trajectory>::MinStepLength(Particle&) const {
+  return 0;
+}
 
-StackInspector::~StackInspector() {}
+template <typename Stack, typename Trajectory>
+void StackInspector<Stack, Trajectory>::DoDiscrete(Particle&, Stack&) const {}
 
-void StackInspector::init() {}
+template <typename Stack, typename Trajectory>
+void StackInspector<Stack, Trajectory>::Init() {}
 
-void StackInspector::run() {}
+#include <corsika/setup/SetupStack.h>
+#include <corsika/setup/SetupTrajectory.h>
 
-double StackInspector::GetStepLength() { return 0; }
+template class corsika::process::stack_inspector::StackInspector<setup::Stack,
+                                                                 setup::Trajectory>;
diff --git a/Processes/StackInspector/StackInspector.h b/Processes/StackInspector/StackInspector.h
index acf22aa7c4f67d455326b5e44abacf3f1ab1478d..3127177692bdf2cc3dd75694600962252af8f39d 100644
--- a/Processes/StackInspector/StackInspector.h
+++ b/Processes/StackInspector/StackInspector.h
@@ -1,19 +1,35 @@
 #ifndef _Physics_StackInspector_StackInspector_h_
 #define _Physics_StackInspector_StackInspector_h_
 
+#include <corsika/process/ProcessSequence.h>
+
 namespace corsika::process {
 
   namespace stack_inspector {
 
-    class StackInspector {
+    template <typename Stack, typename Trajectory>
+    class StackInspector
+        : public corsika::process::BaseProcess<StackInspector<Stack, Trajectory>> {
+
+      typedef typename Stack::ParticleType Particle;
 
     public:
-      StackInspector();
+      StackInspector(const bool aReport);
       ~StackInspector();
 
-      void init();
-      void run();
-      double GetStepLength();
+      void Init();
+
+      // template <typename Particle, typename Trajectory, typename Stack>
+      EProcessReturn DoContinuous(Particle&, Trajectory&, Stack& s) const;
+
+      // template <typename Particle>
+      double MinStepLength(Particle&) const;
+
+      // template <typename Particle, typename Stack>
+      void DoDiscrete(Particle&, Stack&) const;
+
+    private:
+      bool fReport;
     };
 
   } // namespace stack_inspector
diff --git a/SCIENTIFIC_AUTHORS b/SCIENTIFIC_AUTHORS
new file mode 100644
index 0000000000000000000000000000000000000000..2e7676f3785ea1388b14abc71b9298e810c4cca3
--- /dev/null
+++ b/SCIENTIFIC_AUTHORS
@@ -0,0 +1,2 @@
+(empty...tbd)
+
diff --git a/Setup/CMakeLists.txt b/Setup/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2f9a4ddf36a57d5f73d523fa5771ee17193a83bd
--- /dev/null
+++ b/Setup/CMakeLists.txt
@@ -0,0 +1,35 @@
+
+set (
+  SETUP_HEADERS
+  SetupStack.h
+  SetupLogger.h
+  SetupEnvironment.h
+  SetupTrajectory.h
+  )
+
+set (
+  SETUP_NAMESPACE
+  corsika/setup
+  )
+
+add_library (CORSIKAsetup INTERFACE)
+CORSIKA_COPY_HEADERS_TO_NAMESPACE (CORSIKAsetup ${SETUP_NAMESPACE} ${SETUP_HEADERS})
+
+target_link_libraries (
+  CORSIKAsetup
+  INTERFACE
+  CORSIKAgeometry
+  SuperStupidStack
+  )
+
+target_include_directories (
+  CORSIKAsetup
+  INTERFACE 
+  $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include>
+  $<INSTALL_INTERFACE:include/include>
+  )
+
+install (
+  FILES ${SETUP_HEADERS} 
+  DESTINATION include/${SETUP_NAMESPACE}
+  )
diff --git a/Setup/SetupEnvironment.h b/Setup/SetupEnvironment.h
new file mode 100644
index 0000000000000000000000000000000000000000..ef97fecbab9b393e445a7d1d95502e45a548a1aa
--- /dev/null
+++ b/Setup/SetupEnvironment.h
@@ -0,0 +1,6 @@
+#ifndef _include_corsika_setup_environment_h_
+#define _include_corsika_setup_environment_h_
+
+namespace corsika {}
+
+#endif
diff --git a/Setup/SetupLogger.h b/Setup/SetupLogger.h
new file mode 100644
index 0000000000000000000000000000000000000000..4383a15705cdf1d083508767965e8eb33edbee0d
--- /dev/null
+++ b/Setup/SetupLogger.h
@@ -0,0 +1,6 @@
+#ifndef _include_corsika_setup_logger_h_
+#define _include_corsika_setup_logger_h_
+
+namespace corsika {}
+
+#endif
diff --git a/Setup/SetupStack.h b/Setup/SetupStack.h
new file mode 100644
index 0000000000000000000000000000000000000000..ec57cf0836d6e547e5124b2564761a85323ec686
--- /dev/null
+++ b/Setup/SetupStack.h
@@ -0,0 +1,11 @@
+#ifndef _corsika_setup_setupstack_h_
+#define _corsika_setup_setupstack_h_
+
+#include <corsika/stack/super_stupid/SuperStupidStack.h>
+
+namespace corsika::setup {
+
+  typedef corsika::stack::super_stupid::SuperStupidStack Stack;
+}
+
+#endif
diff --git a/Setup/SetupTrajectory.h b/Setup/SetupTrajectory.h
new file mode 100644
index 0000000000000000000000000000000000000000..dd903e79cc78c1bc149b11cbaf1139d49020c323
--- /dev/null
+++ b/Setup/SetupTrajectory.h
@@ -0,0 +1,11 @@
+#ifndef _corsika_setup_setuptrajectory_h_
+#define _corsika_setup_setuptrajectory_h_
+
+#include <corsika/geometry/LineTrajectory.h>
+
+namespace corsika::setup {
+
+  typedef corsika::geometry::LineTrajectory Trajectory;
+}
+
+#endif
diff --git a/Stack/DummyStack/DummyStack.h b/Stack/DummyStack/DummyStack.h
index 8dd528a7e1f7a1fa9fe35f0ac6373f3a881727db..63b84bf30e4c03a80de512a78c1cb0677d95f7b9 100644
--- a/Stack/DummyStack/DummyStack.h
+++ b/Stack/DummyStack/DummyStack.h
@@ -1,3 +1,14 @@
+
+/**
+ * (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_dummystack_h_
 #define _include_dummystack_h_
 
diff --git a/Stack/DummyStack/SuperStupidStack.h b/Stack/DummyStack/SuperStupidStack.h
index c1b9215d08c96d6c5f3ca5923718bd64df9ff12a..47647e2c397ba8c7aab7ecda35cb05a700516176 100644
--- a/Stack/DummyStack/SuperStupidStack.h
+++ b/Stack/DummyStack/SuperStupidStack.h
@@ -1,3 +1,14 @@
+
+/**
+ * (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_
 
diff --git a/Stack/SuperStupidStack/SuperStupidStack.h b/Stack/SuperStupidStack/SuperStupidStack.h
index f5674e2cf885c809c17c631e0e3a832afc566047..66eed2d784c437b59bc87973b1723b586e63f51d 100644
--- a/Stack/SuperStupidStack/SuperStupidStack.h
+++ b/Stack/SuperStupidStack/SuperStupidStack.h
@@ -1,3 +1,14 @@
+
+/**
+ * (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_
 
diff --git a/do-copyright.py b/do-copyright.py
new file mode 100755
index 0000000000000000000000000000000000000000..dcbd9d0593f260e69bd1effc84560a8e1307dbfa
--- /dev/null
+++ b/do-copyright.py
@@ -0,0 +1,79 @@
+#!/usr/bin/python
+
+import os.path
+
+text = """
+/**
+  * (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.
+*/\n
+"""
+
+excludeDirs = ["ThirdParty", "git"]
+excludeFiles = ['PhysicalConstants.h']
+
+extensions = [".cc", ".h", ".test"]
+
+def checkNote(filename):
+
+    startNote = -1
+    endNote = -1
+    isCopyright = False
+    lines = []
+
+    with open(filename, "r") as file:
+        for line in file.readlines():
+            lines.append(line)            
+        file.close()
+
+            
+    for iLine in range(len(lines)):
+        line = lines[iLine]
+        if "/**" in line and startNote == -1:
+            startNote = iLine
+        if "copyright" in line.lower() and startNote>=0 and endNote==-1:
+            isCopyright = True
+        if "*/" in line and startNote>=0 and endNote==-1:
+            endNote = iLine
+        iLine += 1
+
+    #if startNote>=0 and endNote>=0 and isCopyright:
+    #print filename
+    #for iLine in range(startNote, endNote+1):
+    #   print lines[iLine]
+
+    os.rename(filename, filename+".bak")
+    
+    with open(filename, "w") as file:
+
+        file.write(text)
+
+        firstLine = 0
+        if startNote>=0 and endNote>=0 and isCopyright:
+            firstLine = endNote + 2
+
+        for iLine in range(firstLine, len(lines)):
+            file.write(lines[iLine])
+        
+        file.close()
+
+
+def next_file(x, dir_name, files):
+    for check in excludeDirs :
+        if check in dir_name:
+            return
+    for check in files :
+        filename, file_extension = os.path.splitext(check)
+        for check2 in excludeFiles :
+            if check2 in check:
+                return
+        if file_extension in extensions:
+            checkNote(dir_name + "/" + check)
+
+
+os.path.walk("./", next_file, 0)