diff --git a/CMakeLists.txt b/CMakeLists.txt
index 669a61102499460c737b43078bd68d656cd105f5..4f10d604fd7b9c26899e74d33efa27eec26cb27d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -250,13 +250,11 @@ find_package(spdlog REQUIRED)
 find_package(yaml-cpp REQUIRED)
 find_package(Arrow REQUIRED)
 find_package(PROPOSAL REQUIRED)
-find_package(BZip2 REQUIRED)
 find_package(Catch2 REQUIRED)
 
 target_link_libraries (
   CORSIKA8
   INTERFACE
-  ZLIB::ZLIB
   BZip2::BZip2
   Boost::filesystem
   CLI11::CLI11
diff --git a/src/framework/core/CMakeLists.txt b/src/framework/core/CMakeLists.txt
index c6e4473b72471c73de99e82e1a75a88bed9b869b..7f05db427203d9658d6b933e3985589d6caa9432 100644
--- a/src/framework/core/CMakeLists.txt
+++ b/src/framework/core/CMakeLists.txt
@@ -1,6 +1,5 @@
 set (input_dir ${PROJECT_SOURCE_DIR}/src/framework/core)
 set (output_dir ${PROJECT_BINARY_DIR}/corsika/framework/core)
-set (destination_dir ${PROJECT_SOURCE_DIR}/corsika/framework/core )
 
 file (MAKE_DIRECTORY ${output_dir})
 
@@ -15,8 +14,7 @@ add_custom_command (
           ${input_dir}/ParticleData.xml
           ${input_dir}/NuclearData.xml
           ${input_dir}/ParticleClassNames.xml
-  WORKING_DIRECTORY
-          ${output_dir}
+  WORKING_DIRECTORY ${output_dir}
   COMMENT "Read PYTHIA8 particle data and produce C++ source code GeneratedParticle[...].inc"
   VERBATIM
   )
@@ -28,18 +26,16 @@ set_source_files_properties (
   PROPERTIES GENERATED TRUE
   )
 
-add_custom_command(
-  OUTPUT  ${destination_dir}/GeneratedParticleProperties.inc
-          ${destination_dir}/GeneratedParticleClasses.inc
-  COMMAND ${CMAKE_COMMAND} -E copy ${output_dir}/GeneratedParticleProperties.inc ${destination_dir}/GeneratedParticleProperties.inc 
-  COMMAND ${CMAKE_COMMAND} -E copy ${output_dir}/GeneratedParticleClasses.inc ${destination_dir}/GeneratedParticleClasses.inc   
+add_custom_target (GenParticlesHeaders
   DEPENDS ${output_dir}/GeneratedParticleProperties.inc
           ${output_dir}/GeneratedParticleClasses.inc
           ${output_dir}/particle_db.pkl
-)
-
-add_custom_target (GenParticlesHeaders
-  DEPENDS ${destination_dir}/GeneratedParticleProperties.inc
-          ${destination_dir}/GeneratedParticleClasses.inc 
   )
 add_dependencies (CORSIKA8 GenParticlesHeaders)
+
+install (
+  FILES
+  ${output_dir}/GeneratedParticleProperties.inc
+  ${output_dir}/GeneratedParticleClasses.inc
+  DESTINATION include/corsika/framework/core
+)
diff --git a/src/modules/epos/CMakeLists.txt b/src/modules/epos/CMakeLists.txt
index 16f2c82b46a42a941ec9181e170c3f2aa0ee4e9b..76b15ff9f1e3e9c914bdee641935b1e29fe4dc96 100644
--- a/src/modules/epos/CMakeLists.txt
+++ b/src/modules/epos/CMakeLists.txt
@@ -1,6 +1,5 @@
 set (input_dir ${PROJECT_SOURCE_DIR}/src/modules/epos)
 set (output_dir ${PROJECT_BINARY_DIR}/corsika/modules/epos)
-set (destination_dir ${PROJECT_SOURCE_DIR}/corsika/modules/epos )
 
 file (MAKE_DIRECTORY ${output_dir})
 
@@ -12,17 +11,15 @@ add_custom_command (
   DEPENDS ${input_dir}/code_generator.py
           ${input_dir}/epos_codes.dat
           GenParticlesHeaders # for particle_db.pkl
-  WORKING_DIRECTORY
-          ${output_dir}/
+  WORKING_DIRECTORY ${output_dir}
   COMMENT "Generate conversion tables for particle codes EPOS <-> CORSIKA"
   VERBATIM
   )
- 
- add_custom_command(
-  OUTPUT  ${destination_dir}/Generated.inc
-  COMMAND ${CMAKE_COMMAND} -E copy ${output_dir}/Generated.inc ${destination_dir}/Generated.inc 
-  DEPENDS ${output_dir}/Generated.inc
-)
 
-add_custom_target (SourceDirLinkEpos DEPENDS ${destination_dir}/Generated.inc)
+add_custom_target (SourceDirLinkEpos DEPENDS ${output_dir}/Generated.inc)
 add_dependencies (CORSIKA8 SourceDirLinkEpos)
+
+install (
+  FILES ${output_dir}/Generated.inc
+  DESTINATION include/corsika/modules/epos
+)
diff --git a/src/modules/fluka/CMakeLists.txt b/src/modules/fluka/CMakeLists.txt
index aafdda71cefaafe9888f8ac9945331c1910aa360..2d2d26b447c277b20da5760a7236cab69c334f5e 100644
--- a/src/modules/fluka/CMakeLists.txt
+++ b/src/modules/fluka/CMakeLists.txt
@@ -1,6 +1,5 @@
 set (input_dir ${PROJECT_SOURCE_DIR}/src/modules/fluka)
 set (output_dir ${PROJECT_BINARY_DIR}/corsika/modules/fluka)
-set (destination_dir ${PROJECT_SOURCE_DIR}/corsika/modules/fluka )
 
 file (MAKE_DIRECTORY ${output_dir})
 
@@ -18,11 +17,10 @@ add_custom_command (
   VERBATIM
   )
 
- add_custom_command(
-  OUTPUT  ${destination_dir}/Generated.inc
-  COMMAND ${CMAKE_COMMAND} -E copy ${output_dir}/Generated.inc ${destination_dir}/Generated.inc 
-  DEPENDS ${output_dir}/Generated.inc
-)
-
-add_custom_target (SourceDirLinkFLUKA DEPENDS ${destination_dir}/Generated.inc)
+add_custom_target (SourceDirLinkFLUKA DEPENDS ${output_dir}/Generated.inc)
 add_dependencies (CORSIKA8 SourceDirLinkFLUKA)
+
+install (
+  FILES ${output_dir}/Generated.inc
+  DESTINATION include/corsika/modules/fluka
+)
diff --git a/src/modules/qgsjetII/CMakeLists.txt b/src/modules/qgsjetII/CMakeLists.txt
index eab00a52d7785b57e40ceb93abbdb8015dc3ff2b..756c5897daf4103d9477fe9e6240a1ee24dbab3f 100644
--- a/src/modules/qgsjetII/CMakeLists.txt
+++ b/src/modules/qgsjetII/CMakeLists.txt
@@ -1,7 +1,5 @@
 set (input_dir ${PROJECT_SOURCE_DIR}/src/modules/qgsjetII)
 set (output_dir ${PROJECT_BINARY_DIR}/corsika/modules/qgsjetII)
-set (destination_dir ${PROJECT_SOURCE_DIR}/corsika/modules/qgsjetII )
-
 
 file (MAKE_DIRECTORY ${output_dir})
 
@@ -14,8 +12,7 @@ add_custom_command (
           ${input_dir}/code_generator.py
           ${input_dir}/qgsjet-II-04-codes.dat
           ${PROJECT_BINARY_DIR}/corsika/framework/core/particle_db.pkl
-  WORKING_DIRECTORY
-          ${output_dir}
+  WORKING_DIRECTORY ${output_dir}
   COMMENT "Generate conversion tables for particle codes QGSJetII <-> CORSIKA"
   VERBATIM
   )
@@ -25,11 +22,10 @@ set_source_files_properties (
   PROPERTIES GENERATED TRUE
 )
 
- add_custom_command(
-  OUTPUT  ${destination_dir}/Generated.inc
-  COMMAND ${CMAKE_COMMAND} -E copy ${output_dir}/Generated.inc ${destination_dir}/Generated.inc 
-  DEPENDS ${output_dir}/Generated.inc
-)
-
-add_custom_target (SourceDirLinkQgs DEPENDS ${destination_dir}/Generated.inc)
+add_custom_target (SourceDirLinkQgs DEPENDS ${output_dir}/Generated.inc)
 add_dependencies (CORSIKA8 SourceDirLinkQgs)
+
+install (
+  FILES ${output_dir}/Generated.inc
+  DESTINATION include/corsika/modules/qgsjetII
+)
diff --git a/src/modules/sibyll/CMakeLists.txt b/src/modules/sibyll/CMakeLists.txt
index 2b7f23595b08d4df8a7f6b7b06727eb311a6499c..932e33db4f47a49b0814b0a0b75e5ca8c5300bd2 100644
--- a/src/modules/sibyll/CMakeLists.txt
+++ b/src/modules/sibyll/CMakeLists.txt
@@ -1,7 +1,5 @@
 set (input_dir ${PROJECT_SOURCE_DIR}/src/modules/sibyll)
 set (output_dir ${PROJECT_BINARY_DIR}/corsika/modules/sibyll)
-set (destination_dir ${PROJECT_SOURCE_DIR}/corsika/modules/sibyll )
-
 
 file (MAKE_DIRECTORY ${output_dir})
 
@@ -14,8 +12,7 @@ add_custom_command (
           ${input_dir}/sibyll_codes.dat
           ${PROJECT_BINARY_DIR}/corsika/framework/core/particle_db.pkl
           GenParticlesHeaders
-  WORKING_DIRECTORY
-          ${output_dir}/
+  WORKING_DIRECTORY ${output_dir}
   COMMENT "Generate conversion tables for particle codes SIBYLL <-> CORSIKA"
   VERBATIM
   )
@@ -25,11 +22,10 @@ set_source_files_properties (
   PROPERTIES GENERATED TRUE
 )
 
-add_custom_command(
-  OUTPUT  ${destination_dir}/Generated.inc
-  COMMAND ${CMAKE_COMMAND} -E copy ${output_dir}/Generated.inc ${destination_dir}/Generated.inc 
-  DEPENDS ${output_dir}/Generated.inc
-)
-
-add_custom_target (SourceDirLinkSib DEPENDS ${destination_dir}/Generated.inc)
+add_custom_target (SourceDirLinkSib DEPENDS ${output_dir}/Generated.inc)
 add_dependencies (CORSIKA8 SourceDirLinkSib)
+
+install (
+  FILES ${output_dir}/Generated.inc
+  DESTINATION include/corsika/modules/sibyll
+)
diff --git a/src/modules/sophia/CMakeLists.txt b/src/modules/sophia/CMakeLists.txt
index e57b3b7f0322a9e8c00691aacee4e7c3e7288cad..3ae7ee3f7244b21b38c168ff45ed023f51d7f18e 100644
--- a/src/modules/sophia/CMakeLists.txt
+++ b/src/modules/sophia/CMakeLists.txt
@@ -1,7 +1,5 @@
 set (input_dir ${PROJECT_SOURCE_DIR}/src/modules/sophia)
 set (output_dir ${PROJECT_BINARY_DIR}/corsika/modules/sophia)
-set (destination_dir ${PROJECT_SOURCE_DIR}/corsika/modules/sophia )
-
 
 file (MAKE_DIRECTORY ${output_dir})
 
@@ -25,12 +23,10 @@ set_source_files_properties (
   PROPERTIES GENERATED TRUE
 )
 
-add_custom_command(
-  OUTPUT  ${destination_dir}/Generated.inc
-  COMMAND ${CMAKE_COMMAND} -E copy ${output_dir}/Generated.inc ${destination_dir}/Generated.inc 
-  DEPENDS ${output_dir}/Generated.inc
-)
-
-
-add_custom_target (SourceDirLinkSoph DEPENDS ${destination_dir}/Generated.inc)
+add_custom_target (SourceDirLinkSoph DEPENDS ${output_dir}/Generated.inc)
 add_dependencies (CORSIKA8 SourceDirLinkSoph)
+
+install (
+  FILES ${output_dir}/Generated.inc
+  DESTINATION include/corsika/modules/sophia
+)