diff --git a/corsika/modules/hadronic_elastic_model/HadronicElasticModel.hpp b/corsika/modules/hadronic_elastic_model/HadronicElasticModel.hpp
index cb71c12220c9a4e27d60eb8266b545ade5c54de7..d925a80a8d88bc4f869dec4638ba886c3ce38fd5 100644
--- a/corsika/modules/hadronic_elastic_model/HadronicElasticModel.hpp
+++ b/corsika/modules/hadronic_elastic_model/HadronicElasticModel.hpp
@@ -11,14 +11,14 @@
 #pragma once
 
 #include <corsika/framework/core/ParticleProperties.hpp>
-#include <corsika/framework/sequence/InteractionProcess.hpp>
 #include <corsika/framework/random/RNGManager.hpp>
+#include <corsika/framework/sequence/InteractionProcess.hpp>
 
 #include <corsika/framework/core/PhysicalConstants.hpp>
 #include <corsika/framework/core/PhysicalUnits.hpp>
 
 namespace corsika::hadronic_elastic_model {
-  
+
   /**
    * A simple model for elastic hadronic interactions based on the formulas
    * in Gaisser, Engel, Resconi, Cosmic Rays and Particle Physics (Cambridge Univ. Press,
@@ -43,8 +43,7 @@ namespace corsika::hadronic_elastic_model {
     using inveV2 = decltype(1 / units::si::square(units::si::electronvolt));
 
     corsika::RNG& fRNG =
-        corsika::RNGManager::GetInstance().GetRandomStream(
-            "HadronicElasticModel");
+        corsika::RNGManager::GetInstance().GetRandomStream("HadronicElasticModel");
 
     inveV2 B(eV2 s) const;
     corsika::units::si::CrossSectionType CrossSection(SquaredHEPEnergyType s) const;
diff --git a/corsika/modules/qgsjetII/CMakeLists.txt b/corsika/modules/qgsjetII/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f9b083cd192ef729d9542883ddb2bf16f68e4138
--- /dev/null
+++ b/corsika/modules/qgsjetII/CMakeLists.txt
@@ -0,0 +1,22 @@
+set (input_dir ${PROJECT_SOURCE_DIR}/corsika/modules/qgsjetII)
+set (output_dir ${PROJECT_BINARY_DIR}/corsika/modules/qgsjetII)
+
+file (MAKE_DIRECTORY ${output_dir})
+
+add_custom_command (
+  OUTPUT  ${output_dir}/Generated.inc
+  COMMAND ${input_dir}/code_generator.py 
+          ${PROJECT_BINARY_DIR}/corsika/framework/core/particle_db.pkl
+          ${input_dir}/qgsjet-II-04-codes.dat
+  DEPENDS code_generator.py
+          ${PROJECT_BINARY_DIR}/corsika/framework/core/particle_db.pkl
+          qgsjet-II-04-codes.dat
+  WORKING_DIRECTORY
+          ${output_dir}/
+  COMMENT "Generate conversion tables for particle codes QGSJetII <-> CORSIKA"
+  VERBATIM
+  )
+
+add_custom_target (SourceDirLinkQgs DEPENDS ${output_dir}/Generated.inc)
+add_dependencies (CORSIKA8 SourceDirLinkQgs)
+
diff --git a/corsika/modules/qgsjetII/Interaction.hpp b/corsika/modules/qgsjetII/Interaction.hpp
index f0c596742a5f423e6154c051d92127124cf4af73..2498bb9f36936c6eaaa118067f61640d3216064e 100644
--- a/corsika/modules/qgsjetII/Interaction.hpp
+++ b/corsika/modules/qgsjetII/Interaction.hpp
@@ -11,9 +11,9 @@
 #pragma once
 
 #include <corsika/framework/core/ParticleProperties.hpp>
-#include <corsika/framework/sequence/InteractionProcess.hpp>
-#include <corsika/framework/random/RNGManager.hpp>
 #include <corsika/framework/core/PhysicalUnits.hpp>
+#include <corsika/framework/random/RNGManager.hpp>
+#include <corsika/framework/sequence/InteractionProcess.hpp>
 
 #include <string>
 
@@ -39,9 +39,8 @@ namespace corsika::qgsjetII {
     }
 
     corsika::units::si::CrossSectionType GetCrossSection(
-        const corsika::Code, const corsika::Code,
-        const corsika::units::si::HEPEnergyType, const unsigned int Abeam = 0,
-        const unsigned int Atarget = 0) const;
+        const corsika::Code, const corsika::Code, const corsika::units::si::HEPEnergyType,
+        const unsigned int Abeam = 0, const unsigned int Atarget = 0) const;
 
     template <typename TParticle>
     corsika::units::si::GrammageType GetInteractionLength(TParticle const&) const;
@@ -55,11 +54,10 @@ namespace corsika::qgsjetII {
     corsika::EProcessReturn DoInteraction(TProjectile&);
 
   private:
-    corsika::RNG& fRNG =
-        corsika::RNGManager::GetInstance().GetRandomStream("qgran");
+    corsika::RNG& fRNG = corsika::RNGManager::GetInstance().GetRandomStream("qgran");
     const int maxMassNumber_ = 208;
   };
 
-} // namespace corsika::process::qgsjetII
+} // namespace corsika::qgsjetII
 
 #include <corsika/detail/modules/qgsjetII/Interaction.inl>
diff --git a/corsika/modules/qgsjetII/QGSJetIIFragmentsStack.hpp b/corsika/modules/qgsjetII/QGSJetIIFragmentsStack.hpp
index b3de2027539c8a86b581e80e3c321a83c27f2866..84c90873ebd28ededf341bc0a6bede00b75f4828 100644
--- a/corsika/modules/qgsjetII/QGSJetIIFragmentsStack.hpp
+++ b/corsika/modules/qgsjetII/QGSJetIIFragmentsStack.hpp
@@ -10,12 +10,12 @@
 
 #pragma once
 
+#include <corsika/framework/core/PhysicalUnits.hpp>
 #include <corsika/framework/geometry/RootCoordinateSystem.hpp>
 #include <corsika/framework/geometry/Vector.hpp>
+#include <corsika/framework/stack/Stack.hpp>
 #include <corsika/modules/qgsjetII/ParticleConversion.hpp>
 #include <corsika/modules/qgsjetII/qgsjet-II-04.hpp>
-#include <corsika/framework/stack/Stack.hpp>
-#include <corsika/framework/core/PhysicalUnits.hpp>
 
 namespace corsika::qgsjetII {
 
diff --git a/corsika/modules/qgsjetII/QGSJetIIStack.hpp b/corsika/modules/qgsjetII/QGSJetIIStack.hpp
index d72b5d8bffc015ffb2dcff1601c96b5e4af64d07..eca8669e06156f345c8476ee6abf4eebae630b5c 100644
--- a/corsika/modules/qgsjetII/QGSJetIIStack.hpp
+++ b/corsika/modules/qgsjetII/QGSJetIIStack.hpp
@@ -10,12 +10,12 @@
 
 #pragma once
 
+#include <corsika/framework/core/PhysicalUnits.hpp>
 #include <corsika/framework/geometry/CoordinateSystem.hpp>
 #include <corsika/framework/geometry/Vector.hpp>
+#include <corsika/framework/stack/Stack.hpp>
 #include <corsika/modules/qgsjetII/ParticleConversion.hpp>
 #include <corsika/modules/qgsjetII/qgsjet-II-04.hpp>
-#include <corsika/framework/stack/Stack.hpp>
-#include <corsika/framework/core/PhysicalUnits.hpp>
 
 namespace corsika::qgsjetII {
 
@@ -54,11 +54,12 @@ namespace corsika::qgsjetII {
       using namespace corsika::units::si;
       return qgarr14_.esp[i][0] * 1_GeV;
     }
-    MomentumVector GetMomentum(const unsigned int i, const corsika::CoordinateSystem& CS) const {
+    MomentumVector GetMomentum(const unsigned int i,
+                               const corsika::CoordinateSystem& CS) const {
       using namespace corsika::units::si;
       corsika::QuantityVector<hepmomentum_d> components = {qgarr14_.esp[i][2] * 1_GeV,
-                                                  qgarr14_.esp[i][3] * 1_GeV,
-                                                  qgarr14_.esp[i][1] * 1_GeV};
+                                                           qgarr14_.esp[i][3] * 1_GeV,
+                                                           qgarr14_.esp[i][1] * 1_GeV};
       return MomentumVector(CS, components);
     }
 
@@ -86,8 +87,7 @@ namespace corsika::qgsjetII {
     using corsika::ParticleBase<StackIteratorInterface>::GetIndex;
 
   public:
-    void SetParticleData(const int vID, 
-                         const corsika::units::si::HEPEnergyType vE,
+    void SetParticleData(const int vID, const corsika::units::si::HEPEnergyType vE,
                          const MomentumVector& vP,
                          const corsika::units::si::HEPMassType vM) {
       SetPID(vID);
@@ -96,8 +96,7 @@ namespace corsika::qgsjetII {
     }
 
     void SetParticleData(ParticleInterface<StackIteratorInterface>& /*parent*/,
-                         const int vID, 
-                         const corsika::units::si::HEPEnergyType vE,
+                         const int vID, const corsika::units::si::HEPEnergyType vE,
                          const MomentumVector& vP,
                          const corsika::units::si::HEPMassType vM) {
       SetPID(vID);
@@ -120,7 +119,9 @@ namespace corsika::qgsjetII {
           GetStackData().GetId(GetIndex()));
     }
 
-    MomentumVector GetMomentum(const corsika::CoordinateSystem& CS) const { return GetStackData().GetMomentum(GetIndex(), CS); }
+    MomentumVector GetMomentum(const corsika::CoordinateSystem& CS) const {
+      return GetStackData().GetMomentum(GetIndex(), CS);
+    }
 
     void SetMomentum(const MomentumVector& v) {
       GetStackData().SetMomentum(GetIndex(), v);
diff --git a/corsika/modules/qgsjetII/qgsjet-II-04.hpp b/corsika/modules/qgsjetII/qgsjet-II-04.hpp
index 3d3db98e6fd44648022cbcec7c8dbe3032c30ade..20cbb40dc6eb2ab7858d351615c6cb6899b7300c 100644
--- a/corsika/modules/qgsjetII/qgsjet-II-04.hpp
+++ b/corsika/modules/qgsjetII/qgsjet-II-04.hpp
@@ -110,8 +110,6 @@ void lzmafillarray_(const double& dum, const int& idum);
 
 #include <corsika/detail/modules/qgsjetII/qgsjet-II-04.inl>
 
-
-
 /**
  * WARNING, TODO, FIXME: this below here has to go away, this is just a dummy until
  * we "properly" link to the external corsika-data submodule
@@ -120,23 +118,30 @@ void lzmafillarray_(const double& dum, const int& idum);
 namespace corsika_data {
 
   void CorDataOpenFile(const std::string&) {
-    throw std::runtime_error("CorDataOpenFile: Cannot read compressed data files with dummy library.");
+    throw std::runtime_error(
+        "CorDataOpenFile: Cannot read compressed data files with dummy library.");
   }
   void CorDataFillArray(double*, const int&) {
-    throw std::runtime_error("CorDataFillArray: Cannot read compressed data files with dummy library.");
+    throw std::runtime_error(
+        "CorDataFillArray: Cannot read compressed data files with dummy library.");
   }
   void CorDataCloseFile() {
-    throw std::runtime_error("CorDataCloseFile: Cannot read compressed data files with dummy library.");
+    throw std::runtime_error(
+        "CorDataCloseFile: Cannot read compressed data files with dummy library.");
   }
   double CorDataNextNumber() {
-    throw std::runtime_error("CorDataNextNumber: Cannot read compressed data files with dummy library.");
+    throw std::runtime_error(
+        "CorDataNextNumber: Cannot read compressed data files with dummy library.");
     return 0;
   }
   void CorDataNextText(std::string&) {
-    throw std::runtime_error("CorDataNextText(string&): Cannot read compressed data files with dummy library.");
+    throw std::runtime_error(
+        "CorDataNextText(string&): Cannot read compressed data files with dummy "
+        "library.");
   }
   void CorDataNextText(char*, int) {
-    throw std::runtime_error("CorDataNextText(char*): Cannot read compressed data files with dummy library.");
+    throw std::runtime_error(
+        "CorDataNextText(char*): Cannot read compressed data files with dummy library.");
   }
   bool CorDataCanDeCompress() { return false; }
 
@@ -149,7 +154,8 @@ namespace corsika_data {
   void cordataclosefile_() { CorDataCloseFile(); }
   double cordatanextnumber_() { return CorDataNextNumber(); }
   void cordatanexttext_(char*, int) {
-    throw std::runtime_error("cordatanexttext_: Cannot read compressed data files with dummy library.");
+    throw std::runtime_error(
+        "cordatanexttext_: Cannot read compressed data files with dummy library.");
   }
   int cordatacandecompress_() { return 0; }
   }
diff --git a/tests/modules/testQGSJetII.cpp b/tests/modules/testQGSJetII.cpp
index a0762688005cd8f77942654585d9ff073e98553d..866dbfa8fc823d2b6c3c22efbefef748281bcb5c 100644
--- a/tests/modules/testQGSJetII.cpp
+++ b/tests/modules/testQGSJetII.cpp
@@ -58,8 +58,8 @@ TEST_CASE("QgsjetII", "[processes]") {
 #include <corsika/framework/geometry/RootCoordinateSystem.hpp>
 #include <corsika/framework/geometry/Vector.hpp>
 
-#include <corsika/framework/core/PhysicalUnits.hpp>
 #include <corsika/framework/core/ParticleProperties.hpp>
+#include <corsika/framework/core/PhysicalUnits.hpp>
 
 #include <corsika/setup/SetupStack.hpp>
 #include <corsika/setup/SetupTrajectory.hpp>
@@ -85,7 +85,7 @@ TEST_CASE("QgsjetIIInterface", "[processes]") {
   theMedium->SetModelProperties<MyHomogeneousModel>(
       1_kg / (1_m * 1_m * 1_m),
       corsika::NuclearComposition(std::vector<corsika::Code>{corsika::Code::Oxygen},
-                                      std::vector<float>{1.}));
+                                  std::vector<float>{1.}));
 
   auto const* nodePtr = theMedium.get();
   universe.AddChild(std::move(theMedium));