diff --git a/COAST/CMakeLists.txt b/COAST/CMakeLists.txt
index ae85a9176aee3e55efb226d3fae4df0ae5a7e212..2aae4eb262f78513a0bb5312a6c3e5b972c56bb1 100644
--- a/COAST/CMakeLists.txt
+++ b/COAST/CMakeLists.txt
@@ -43,9 +43,10 @@ target_link_libraries (
 target_include_directories (
   COAST
   PUBLIC
-  $ENV{COAST_DIR}/include
   $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include>
   $<INSTALL_INTERFACE:include/include>
+  SYSTEM 
+  $ENV{COAST_DIR}/include
   )
 
 install (
diff --git a/COAST/COASTProcess.cc b/COAST/COASTProcess.cc
index d362bc044a619e6b327c1f5dfc4d2b022ec4e19e..3f4281b4d519eced3b2381a1be7bfaf396789441 100644
--- a/COAST/COASTProcess.cc
+++ b/COAST/COASTProcess.cc
@@ -30,8 +30,9 @@ namespace corsika::coast {
      the stack from here (docontinuous) inside corisika7. In corsika8
      you will be able to do that.
    */
-  corsika::process::EProcessReturn COASTProcess::DoContinuous(Particle& p, Track& t,
-                                                              Stack&) {
+  corsika::process::EProcessReturn COASTProcess::DoContinuous(const Particle& p,
+                                                              const Track& t,
+                                                              const Stack&) {
     using namespace corsika::units::si;
     auto const start = t.GetPosition(0).GetCoordinates();
     auto const delta = t.GetPosition(1).GetCoordinates() - start;
diff --git a/COAST/COASTProcess.h b/COAST/COASTProcess.h
index 19d1db2c6ff2fc407ad91fd84b6f6e0d7144c805..686975e7f9e4adaeb192cd5f07ce92e79e8e1790 100644
--- a/COAST/COASTProcess.h
+++ b/COAST/COASTProcess.h
@@ -21,7 +21,8 @@ namespace corsika::coast {
   public:
     void Init();
 
-    corsika::process::EProcessReturn DoContinuous(Particle&, Track&, Stack&);
+    corsika::process::EProcessReturn DoContinuous(const Particle&, const Track&,
+                                                  const Stack&);
 
     corsika::units::si::LengthType MaxStepLength(Particle&, Track&) {
       return corsika::units::si::meter * std::numeric_limits<double>::infinity();
diff --git a/COAST/COASTStack.h b/COAST/COASTStack.h
index d5ac8c738869f3680faaebed8117c9ccff9cfb26..936c6fa28cdd9255f53911b1153c0657fd003b38 100644
--- a/COAST/COASTStack.h
+++ b/COAST/COASTStack.h
@@ -52,8 +52,8 @@ namespace corsika::coast {
     MomentumVector GetMomentum(const corsika::geometry::CoordinateSystem& cs) const {
       using namespace corsika::units::si;
       const HEPEnergyType mass = corsika::particles::GetMass(GetPID());
-      auto P = sqrt((GetEnergy() - mass) * (GetEnergy() + mass));
-      auto p = GetStackData().GetDirection(cs, GetIndex());
+      const auto P = sqrt((GetEnergy() - mass) * (GetEnergy() + mass));
+      const auto p = GetStackData().GetDirection(cs);
       return p * P;
     }
 
@@ -73,7 +73,7 @@ namespace corsika::coast {
 
     corsika::geometry::Vector<corsika::units::si::dimensionless_d> GetDirection(
         const corsika::geometry::CoordinateSystem& cs) const {
-      return GetStackData().GetDirection(cs, GetIndex());
+      return GetStackData().GetDirection(cs);
     }
 
     corsika::units::si::TimeType GetTimeInterval() const {
@@ -126,12 +126,12 @@ namespace corsika::coast {
       return fParticle1->energy * 1_GeV;
     }
     corsika::geometry::Vector<corsika::units::si::dimensionless_d> GetDirection(
-        const corsika::geometry::CoordinateSystem& cs, const int) const {
+        const corsika::geometry::CoordinateSystem& cs) const {
       using namespace corsika::units::si;
       corsika::geometry::Point p1(
-          cs, {fParticle1->x * 1_cm, fParticle1->y * 1_cm, fParticle1->y * 1_cm});
+          cs, {fParticle1->x * 1_cm, fParticle1->y * 1_cm, fParticle1->z * 1_cm});
       corsika::geometry::Point p2(
-          cs, {fParticle2->x * 1_cm, fParticle2->y * 1_cm, fParticle2->y * 1_cm});
+          cs, {fParticle2->x * 1_cm, fParticle2->y * 1_cm, fParticle2->z * 1_cm});
       const corsika::geometry::Vector D = p2 - p1;
       const auto magD = D.norm();
       const corsika::geometry::Vector dir = D / magD;
@@ -141,14 +141,14 @@ namespace corsika::coast {
         const corsika::geometry::CoordinateSystem& cs, const int) const {
       using namespace corsika::units::si;
       corsika::geometry::Vector<corsika::units::si::dimensionless_d> dir =
-          GetDirection(cs, 0);
+          GetDirection(cs);
       corsika::geometry::Point p1(
-          cs, {fParticle1->x * 1_cm, fParticle1->y * 1_cm, fParticle1->y * 1_cm});
+          cs, {fParticle1->x * 1_cm, fParticle1->y * 1_cm, fParticle1->z * 1_cm});
       corsika::geometry::Point p2(
-          cs, {fParticle2->x * 1_cm, fParticle2->y * 1_cm, fParticle2->y * 1_cm});
+          cs, {fParticle2->x * 1_cm, fParticle2->y * 1_cm, fParticle2->z * 1_cm});
       const corsika::geometry::Vector D = p2 - p1;
       const LengthType magD = D.norm();
-      const TimeType deltaT = (fParticle2->time - fParticle1->time) * 1_ns;
+      const TimeType deltaT = GetTimeInterval();
       return dir * magD / deltaT;
     }
     corsika::geometry::Point GetPosition(const corsika::geometry::CoordinateSystem& cs,
@@ -159,12 +159,12 @@ namespace corsika::coast {
     }
     corsika::units::si::TimeType GetTime(const int) const {
       using namespace corsika::units::si;
-      return fParticle1->time * 1_ns;
+      return fParticle1->time * 1_s;
     }
 
     corsika::units::si::TimeType GetTimeInterval() const {
       using namespace corsika::units::si;
-      return (fParticle2->time - fParticle1->time) * 1_ns;
+      return (fParticle2->time - fParticle1->time) * 1_s;
     }
 
     /**
diff --git a/COAST/COASTUserLib.cc b/COAST/COASTUserLib.cc
index ab4c3d987c81f65dcb41e1b6a6e61f3764e15ae0..57a9ab56838441d5114bde103da516cf3d54b10c 100644
--- a/COAST/COASTUserLib.cc
+++ b/COAST/COASTUserLib.cc
@@ -84,14 +84,12 @@ extern "C" void track_([[maybe_unused]] const crs::CParticle& pre,
     int    hadronicGeneration;
   */
   gCOASTStack.SetParticle(&pre, &post);
-  auto particle = gCOASTStack.GetNextParticle();
-
-  geometry::CoordinateSystem& rootCS =
+  const auto particle = gCOASTStack.GetNextParticle();
+  const geometry::CoordinateSystem& rootCS =
       geometry::RootCoordinateSystem::GetInstance().GetRootCoordinateSystem();
-
   geometry::Line const line(particle.GetPosition(rootCS), particle.GetVelocity(rootCS));
   const TimeType time = particle.GetTimeInterval();
-  geometry::Trajectory<geometry::Line> track(line, time);
+  const geometry::Trajectory<geometry::Line> track(line, time);
   gCorsikaProcess.DoContinuous(particle, track, gCOASTStack);
 }
 
diff --git a/COAST/ParticleConversion.cc b/COAST/ParticleConversion.cc
index 9b1fd3f0e6d75daf45023d2cfb6b86560ce66880..ddff698ae96ae6b86ec0745e260486a8620f0099 100644
--- a/COAST/ParticleConversion.cc
+++ b/COAST/ParticleConversion.cc
@@ -20,6 +20,10 @@ using namespace std;
 
 namespace corsika::coast {
 
+  /**
+     Convert particle code, and check if it does exists. Throw exeption, if not!
+   */
+
   corsika::particles::Code ConvertFromCoast(CoastCode pCode) {
     if (coast2corsika.count(pCode) == 0) {
       ostringstream err;
@@ -30,7 +34,5 @@ namespace corsika::coast {
     }
     return coast2corsika.find(pCode)->second;
   }
-  //   process::sibyll::Sibyll2Corsika = {
-  //        {PID::E_MINUS, InternalParticleCode::Electron},
-  //};
+
 } // namespace corsika::coast
diff --git a/COAST/ParticleConversion.h b/COAST/ParticleConversion.h
index d9e87b8e38071051e527cf70640a10aa57c5caf1..8c35c0ea75396b84f7b447edffc57540c7fc10f6 100644
--- a/COAST/ParticleConversion.h
+++ b/COAST/ParticleConversion.h
@@ -20,6 +20,9 @@
 
 namespace corsika::coast {
 
+  /**
+     Here we define the original CORSIKA particle codes, see corsika manual
+   */
   enum class CoastCode : int16_t {
     Gamma = 1,
     Positron = 2,
@@ -90,14 +93,31 @@ namespace corsika::coast {
     Code95 = 95,
     Code96 = 96,
 
+    ProtonNucleus = 101,
+    Deuterium = 201,
+    Tritium = 301,
+    He3 = 302,
     Helium = 402,
-    Carbon = 612,
-    Nitrogen = 714,
-    Oxygen = 816,
+    Lithium = 603,
+    Beryllium = 904,
+    Boron = 1005,
+    Carbon = 1206,
+    Carbon13 = 1306,
+    Nitrogen = 1407,
+    Oxygen = 1608,
+    Neon = 2210,
+    Argon = 1838,
     Iron = 5628,
+    Xenon = 12854,
+    Radon = 13888,
   };
+
   using CoastCodeIntType = std::underlying_type<CoastCode>::type;
 
+  /**
+     Here we convert CORSIKA7 to CORSIKA8 codes
+   */
+
   const std::map<corsika::coast::CoastCode, corsika::particles::Code> coast2corsika = {
       {CoastCode::Gamma, corsika::particles::Code::Gamma},
       {CoastCode::Positron, corsika::particles::Code::Positron},
@@ -164,13 +184,25 @@ namespace corsika::coast {
       {CoastCode::Code95, corsika::particles::Code::Unknown},
       {CoastCode::Code96, corsika::particles::Code::Unknown},
 
+      {CoastCode::ProtonNucleus, corsika::particles::Code::Proton}, // 101
+      {CoastCode::Deuterium, corsika::particles::Code::Deuterium},
+      {CoastCode::Tritium, corsika::particles::Code::Tritium},
+      {CoastCode::He3, corsika::particles::Code::Helium3},
       {CoastCode::Helium, corsika::particles::Code::Helium}, // 402
+      {CoastCode::Lithium, corsika::particles::Code::Lithium},
+      {CoastCode::Beryllium, corsika::particles::Code::Beryllium},
+      {CoastCode::Boron, corsika::particles::Code::Boron},
       {CoastCode::Carbon, corsika::particles::Code::Carbon},
+      {CoastCode::Carbon13, corsika::particles::Code::Carbon13},
       {CoastCode::Nitrogen, corsika::particles::Code::Nitrogen},
       {CoastCode::Oxygen, corsika::particles::Code::Oxygen},
+      {CoastCode::Neon, corsika::particles::Code::Neon},
+      {CoastCode::Argon, corsika::particles::Code::Argon},
+      {CoastCode::Xenon, corsika::particles::Code::Xenon},
+      {CoastCode::Radon, corsika::particles::Code::Radon},
       {CoastCode::Iron, corsika::particles::Code::Iron}, // 5628
 
-      //{CoastCode::, corsika::particles::Code::}
+      //{CoastCode::, corsika::particles::Code::},
 
   };
 
diff --git a/Framework/Particles/NuclearData.xml b/Framework/Particles/NuclearData.xml
index c707f3a2716a6fbbe61e15df98fcdaaf0e3e71bb..69e76393bb9817988cf40d9dbae8beaabe8667a5 100644
--- a/Framework/Particles/NuclearData.xml
+++ b/Framework/Particles/NuclearData.xml
@@ -12,19 +12,46 @@
 <particle id="1000020040" name="helium" A="4" Z="2" >
 </particle> 
 
+<particle id="1000020030" name="helium3" A="3" Z="2" >
+</particle> 
+
+<particle id="1000020030" name="lithium" A="6" Z="3" >
+</particle> 
+
+<particle id="1000020030" name="beryllium" A="9" Z="4" >
+</particle> 
+
+<particle id="1000020030" name="boron" A="10" Z="5" >
+</particle> 
+
 <particle id="1000060120" name="carbon" A="12" Z="6" >
 </particle> 
 
+<particle id="1000060120" name="carbon13" A="13" Z="6" >
+</particle> 
+
 <particle id="1000070140" name="nitrogen" A="14" Z="7" >
 </particle> 
 
 <particle id="1000080160" name="oxygen" A="16" Z="8" >
 </particle> 
 
+<particle id="1000100220" name="neon" A="22" Z="10" >
+</particle> 
+
 <particle id="1000180400" name="argon" A="40" Z="18" >
 </particle> 
 
 <particle id="1000280560" name="iron" A="56" Z="28" >
 </particle> 
 
+<particle id="1000541280" name="xenon" A="128" Z="54" >
+</particle> 
+
+<particle id="1000822080" name="lead" A="208" Z="82" >
+</particle> 
+
+<particle id="1000862220" name="radon" A="222" Z="86" >
+</particle> 
+
 </chapter>