diff --git a/Documentation/Examples/cascade_proton_example.cc b/Documentation/Examples/cascade_proton_example.cc
index f95c9ae2255ac0512a5457a63840d8950e5fd3fc..17cc88680c78c74f57b78cec9f66456301685922 100644
--- a/Documentation/Examples/cascade_proton_example.cc
+++ b/Documentation/Examples/cascade_proton_example.cc
@@ -40,9 +40,6 @@
 
 #include <corsika/utl/CorsikaFenv.h>
 
-#include <boost/type_index.hpp>
-using boost::typeindex::type_id_with_cvr;
-
 #include <iostream>
 #include <limits>
 #include <typeinfo>
diff --git a/Framework/Cascade/Cascade.h b/Framework/Cascade/Cascade.h
index ee8e7db37d5d01af89f70e72e9e20ac2bdb97da3..e7d2cafb3851d20e90615732235268e4f0ae0618 100644
--- a/Framework/Cascade/Cascade.h
+++ b/Framework/Cascade/Cascade.h
@@ -35,9 +35,6 @@
 #include <limits>
 #include <type_traits>
 
-#include <boost/type_index.hpp>
-using boost::typeindex::type_id_with_cvr;
-
 /**
  * The cascade namespace assembles all objects needed to simulate full particles cascades.
  */
diff --git a/Framework/Geometry/testFourVector.cc b/Framework/Geometry/testFourVector.cc
index 4c2ce097107c18fb1b3b4620ddb111764e596631..c84d40c16bbb810c7bde778e14c1e85e6cefe2a0 100644
--- a/Framework/Geometry/testFourVector.cc
+++ b/Framework/Geometry/testFourVector.cc
@@ -17,9 +17,6 @@
 #include <corsika/units/PhysicalUnits.h>
 #include <cmath>
 
-#include <boost/type_index.hpp>
-using boost::typeindex::type_id_with_cvr;
-
 using namespace corsika::geometry;
 using namespace corsika::units::si;
 
@@ -174,10 +171,6 @@ TEST_CASE("four vectors") {
     FourVector<const TimeType&, const Vector<length_d>&> p2(T, P);
     FourVector<const TimeType&, const Vector<length_d>&> p3(T_c, P_c);
 
-    std::cout << type_id_with_cvr<decltype(p1)>().pretty_name() << std::endl;
-    std::cout << type_id_with_cvr<decltype(p2)>().pretty_name() << std::endl;
-    std::cout << type_id_with_cvr<decltype(p3)>().pretty_name() << std::endl;
-
     p1 *= 10;
     // p2 *= 10; // this does not compile, and it shoudn't !
     // p3 *= 10; // this does not compile, and it shoudn't !!
diff --git a/Framework/Logging/CMakeLists.txt b/Framework/Logging/CMakeLists.txt
index 345a1904a1f464564005ba9e930161b7e3010ff8..de7cb2daeb8bbee858917fa369e5a3cbe95df60c 100644
--- a/Framework/Logging/CMakeLists.txt
+++ b/Framework/Logging/CMakeLists.txt
@@ -18,7 +18,10 @@ set (
   BufferedSink.h
   )
 
-CORSIKA_COPY_HEADERS_TO_NAMESPACE (CORSIKAlogging ${CORSIKAlogging_NAMESPACE} ${CORSIKAlogging_HEADERS})
+CORSIKA_COPY_HEADERS_TO_NAMESPACE (CORSIKAlogging
+  ${CORSIKAlogging_NAMESPACE}
+  ${CORSIKAlogging_HEADERS}
+  )
 
 # include directive for upstream code
 target_include_directories (
@@ -26,7 +29,7 @@ target_include_directories (
   INTERFACE
   $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include>
   $<INSTALL_INTERFACE:include/>
-  ${Boost_INCLUDE_DIRS}
+  CORSIKAboost
   )
 
 # install library
diff --git a/Framework/StackInterface/testCombinedStack.cc b/Framework/StackInterface/testCombinedStack.cc
index ccb47c51d37cd09ac0aeac8a07c20cb6fb5d4364..2ad1e817dcc94a50ce818948aa58f850be6fe1f2 100644
--- a/Framework/StackInterface/testCombinedStack.cc
+++ b/Framework/StackInterface/testCombinedStack.cc
@@ -15,10 +15,6 @@
 #include <testTestStack.h> // for testing: simple stack. This is a
 // test-build, and inluce file is obtained from CMAKE_CURRENT_SOURCE_DIR
 
-#include <boost/type_index.hpp>
-#include <type_traits>
-using boost::typeindex::type_id_with_cvr;
-
 #include <iomanip>
 #include <iostream>
 #include <vector>
diff --git a/Framework/StackInterface/testSecondaryView.cc b/Framework/StackInterface/testSecondaryView.cc
index fe20b5daad8fd2ccecd9bee50365a34a4d159e39..8e2ac0e9e0677a0025e326b2d658c5884beab12d 100644
--- a/Framework/StackInterface/testSecondaryView.cc
+++ b/Framework/StackInterface/testSecondaryView.cc
@@ -14,10 +14,6 @@
 #include <testTestStack.h> // for testing: simple stack. This is a
 // test-build, and inluce file is obtained from CMAKE_CURRENT_SOURCE_DIR
 
-#include <boost/type_index.hpp>
-#include <type_traits>
-using boost::typeindex::type_id_with_cvr;
-
 #include <iomanip>
 #include <iostream>
 #include <vector>
diff --git a/Framework/StackInterface/testStackInterface.cc b/Framework/StackInterface/testStackInterface.cc
index acedfc7579841f09bc2f313a770ac88759dbca72..99567943a5ea52133f457b165cd82daa13ac5dc4 100644
--- a/Framework/StackInterface/testStackInterface.cc
+++ b/Framework/StackInterface/testStackInterface.cc
@@ -14,10 +14,6 @@
                            // for testing only: include from
                            // CMAKE_CURRENT_SOURCE_DIR
 
-#include <boost/type_index.hpp>
-#include <type_traits>
-using boost::typeindex::type_id_with_cvr;
-
 #include <iomanip>
 #include <iostream>
 #include <tuple>
diff --git a/Framework/Utilities/CMakeLists.txt b/Framework/Utilities/CMakeLists.txt
index dbdb7ae64937c5fc5178d45bab597bab0f07405f..13b544518774e1e5b21001c89d1d4e5e04a27832 100644
--- a/Framework/Utilities/CMakeLists.txt
+++ b/Framework/Utilities/CMakeLists.txt
@@ -53,6 +53,7 @@ target_link_libraries (
   CORSIKAutilities
   CORSIKAgeometry
   CORSIKAunits
+  CORSIKAboost # so far only for MetaProgramming
   )
 
 target_include_directories (
diff --git a/Processes/InteractionCounter/CMakeLists.txt b/Processes/InteractionCounter/CMakeLists.txt
index 2323207a37e42a6723df1433553f80974606b732..4821b249f1fe534e205cbf6b2a0b27c3cffdd612 100644
--- a/Processes/InteractionCounter/CMakeLists.txt
+++ b/Processes/InteractionCounter/CMakeLists.txt
@@ -22,7 +22,6 @@ set_target_properties (
   PROPERTIES
   VERSION ${PROJECT_VERSION}
   SOVERSION 1
-#  PUBLIC_HEADER "${MODEL_HEADERS}"
   )
 
 # target dependencies on other libraries (also the header onlys)
@@ -31,6 +30,7 @@ target_link_libraries (
   CORSIKAunits
   CORSIKAprocesssequence
   CORSIKAthirdparty
+  CORSIKAboost
   )
 
 target_include_directories (
@@ -52,6 +52,7 @@ CORSIKA_ADD_TEST(testInteractionCounter SOURCES
 target_link_libraries (
   testInteractionCounter
   ProcessInteractionCounter
+  CORSIKAsetup
   CORSIKAunits
   CORSIKAenvironment
   CORSIKAtesting
diff --git a/Stack/NuclearStackExtension/testNuclearStackExtension.cc b/Stack/NuclearStackExtension/testNuclearStackExtension.cc
index 1bd2dd019c7c81d774a181c5e3eb3ed3b692bb05..7c37bfbf7606bbff86f34f4a4feb3b074313a491 100644
--- a/Stack/NuclearStackExtension/testNuclearStackExtension.cc
+++ b/Stack/NuclearStackExtension/testNuclearStackExtension.cc
@@ -13,9 +13,6 @@
 #include <corsika/stack/super_stupid/SuperStupidStack.h>
 #include <corsika/units/PhysicalUnits.h>
 
-#include <boost/type_index.hpp>
-using boost::typeindex::type_id_with_cvr;
-
 using namespace corsika;
 using namespace corsika::stack::nuclear_extension;
 using namespace corsika::geometry;
diff --git a/ThirdParty/CMakeLists.txt b/ThirdParty/CMakeLists.txt
index e3cd96354a0b212a81cffbb9296e41dd7a646fcb..824b9b6ed3165216c534026e91b039b57207272b 100644
--- a/ThirdParty/CMakeLists.txt
+++ b/ThirdParty/CMakeLists.txt
@@ -36,7 +36,7 @@ if (NOT Boost_FOUND)
   set (Boost_INCLUDE_DIR  ${Boost_PREFIX})
   set (Boost_LIBRARY_DIR ${Boost_PREFIX})
   add_dependencies (CORSIKAboost boost)
-
+  
   # create include directory at config time
   file (MAKE_DIRECTORY ${Boost_INCLUDE_DIR})
   
@@ -48,7 +48,18 @@ if (NOT Boost_FOUND)
     INTERFACE_INCLUDE_DIRECTORIES
       $<BUILD_INTERFACE:${Boost_INCLUDE_DIR}>
     )
-    
+  message ("Use ThirdParty boost include dir ${Boost_INCLUDE_DIR}")
+  include_directories (${Boost_INCLUDE_DIR})
+
+else (NOT Boost_FOUND)
+
+  message ("Using system-level boost version ${Boost_VERSION} at ${Boost_INCLUDE_DIR}")
+  set_target_properties (
+    CORSIKAboost PROPERTIES
+    INTERFACE_INCLUDE_DIRECTORIES
+      $<BUILD_INTERFACE:${Boost_INCLUDE_DIR}>
+    )
+
 endif (NOT Boost_FOUND)
 
 # eigen3
@@ -140,7 +151,7 @@ if (NOT Pythia8_FOUND)
 
 else (NOT Pythia8_FOUND)
 
-  message ("Using Pythia8 Version ${Pythia8_VERSION}")
+  message ("Using system-level Pythia8 version ${Pythia8_VERSION} at ${Pythia8_INCLUDE_DIR}")
   set_target_properties (
     CORSIKAPythia8 PROPERTIES
     IMPORTED_LOCATION ${Pythia8_LIBRARY}