diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index dccad1adaf2d9b05733c35d0165a8052cf35c1ef..69b00809c99a9893555fc7e61d45a4c4b427364f 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -52,8 +52,10 @@ default:
       - .ccache
 
 .build-check: &template_build_check
+  variables:
+    LOG: build/build.log
   script:
-    - ci-utils/build-check build/build.log
+    - ci-utils/build-check ${LOG}
   allow_failure: true
 
 .test: &template_test
@@ -77,6 +79,25 @@ default:
     when: always
     expire_in: 1 week
 
+.test_headers: &template_test_headers
+  tags:
+    - cvmfs
+  script:
+    - export CCACHE_DIR=$PWD/.ccache_headers
+    - find build -type f -exec touch -d $(date +@%s) \{} \; # not to re-run cmake
+    - ccache -z
+    - cmake --build build --target test_public_headers_build 2>&1 | tee build/test_public_headers_build.log
+    - ccache -s
+  artifacts:
+    paths:
+      - build/test_public_headers_build.log
+    when: always
+    expire_in: 1 week
+  cache:
+    key: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
+    paths:
+      - .ccache_headers
+
 
 ### Build
 x86_64-centos7-gcc11-opt:
@@ -135,12 +156,24 @@ x86_64-centos7-gcc11-opt:test:
     - job: "x86_64-centos7-gcc11-opt"
       artifacts: true
 
+x86_64-centos7-gcc11-opt:test_headers:
+  <<: *template_test_headers
+  needs:
+    - job: "x86_64-centos7-gcc11-opt"
+      artifacts: true
+
 x86_64-centos7-gcc11-dbg:test:
   <<: *template_test
   needs:
     - job: "x86_64-centos7-gcc11-dbg"
       artifacts: true
 
+x86_64-centos7-gcc11-dbg:test_headers:
+  <<: *template_test_headers
+  needs:
+    - job: "x86_64-centos7-gcc11-dbg"
+      artifacts: true
+
 view-gcc8:test:
   <<: *template_test
   needs:
@@ -189,6 +222,22 @@ x86_64-centos7-gcc11-dbg:build-check:
     - job: "x86_64-centos7-gcc11-dbg"
       artifacts: true
 
+x86_64-centos7-gcc11-opt:build-headers-check:
+  <<: *template_build_check
+  variables:
+    LOG: build/test_public_headers_build.log
+  needs:
+    - job: "x86_64-centos7-gcc11-opt:test_headers"
+      artifacts: true
+
+x86_64-centos7-gcc11-dbg:build-headers-check:
+  <<: *template_build_check
+  variables:
+    LOG: build/test_public_headers_build.log
+  needs:
+    - job: "x86_64-centos7-gcc11-dbg:test_headers"
+      artifacts: true
+
 view-gcc8:build-check:
   <<: *template_build_check
   needs:
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8923c373c27bbeca3cfbd9c0108a5158efe1628f..959b0e6ee4a559a61f9d49e7edb885209fce5c18 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -194,6 +194,7 @@ install(EXPORT ${PROJECT_NAME} NAMESPACE ${PROJECT_NAME}::
             DESTINATION "${GAUDI_INSTALL_CONFIGDIR}")
 # Install cmake files for downstream project to be able to use Gaudi
 gaudi_install(CMAKE cmake/GaudiToolbox.cmake
+                    cmake/header_build_test.tpl
                     cmake/GaudiDependencies.cmake
                     cmake/DeveloperBuildType.cmake
                     "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
diff --git a/GaudiAlg/include/GaudiAlg/FunctionalTool.h b/GaudiAlg/include/GaudiAlg/FunctionalTool.h
index 4110c63233ac916042e8774a7130c78c92b420fd..1cc28ec430a82ce44924084290449ff58dfd477d 100644
--- a/GaudiAlg/include/GaudiAlg/FunctionalTool.h
+++ b/GaudiAlg/include/GaudiAlg/FunctionalTool.h
@@ -9,6 +9,7 @@
 * or submit itself to any jurisdiction.                                       *
 \*****************************************************************************/
 #include "GaudiAlg/FunctionalDetails.h"
+#include "GaudiAlg/FunctionalUtilities.h"
 #include "GaudiKernel/IBinder.h"
 
 #define GAUDI_FUNCTIONAL_TOOL_BINDER_USES_CREATE
diff --git a/GaudiCommonSvc/CMakeLists.txt b/GaudiCommonSvc/CMakeLists.txt
index d1fa2eb5ba54d51341d8d64ddfbd88a0e4ba050a..0fc495d0287ccee882584865286bc6c16370b4bc 100644
--- a/GaudiCommonSvc/CMakeLists.txt
+++ b/GaudiCommonSvc/CMakeLists.txt
@@ -24,6 +24,7 @@ if(GAUDI_USE_AIDA)
                       PUBLIC GaudiKernel
                              Boost::system
                              Boost::filesystem
+                             Rangev3::rangev3
                              ROOT::Hist
                              ROOT::RIO
                              AIDA::aida)
diff --git a/GaudiHive/CMakeLists.txt b/GaudiHive/CMakeLists.txt
index e722717dd4e70d656708a5a6fed3c64ee43a2721..3c014e5b1634912966e479343a97b64d813ce589 100644
--- a/GaudiHive/CMakeLists.txt
+++ b/GaudiHive/CMakeLists.txt
@@ -10,9 +10,6 @@
 #####################################################################################
 # GaudiHive subdirectory
 
-# Register the header only library (install include/)
-gaudi_add_header_only_library(GaudiHiveHeaders)
-
 # Build the plugin
 gaudi_add_module(GaudiHive
                  SOURCES src/AlgResourcePool.cpp
@@ -37,8 +34,7 @@ gaudi_add_module(GaudiHive
                          src/ThreadPoolSvc.cpp
                          src/TimelineSvc.cpp
                          src/ViewTester.cpp
-                 LINK GaudiHiveHeaders
-                      GaudiKernel
+                 LINK GaudiKernel
                       GaudiAlgLib
                       Boost::headers
                       Boost::system
diff --git a/GaudiHive/src/HiveSlimEventLoopMgr.cpp b/GaudiHive/src/HiveSlimEventLoopMgr.cpp
index c8c728ad395f980173d6581fd8b59144ea0adfe0..9bef7f80b7622ebf40947c8fd423c7645bbf4359 100644
--- a/GaudiHive/src/HiveSlimEventLoopMgr.cpp
+++ b/GaudiHive/src/HiveSlimEventLoopMgr.cpp
@@ -9,7 +9,7 @@
 * or submit itself to any jurisdiction.                                             *
 \***********************************************************************************/
 // Local includes
-#include "GaudiHive/HiveSlimEventLoopMgr.h"
+#include "HiveSlimEventLoopMgr.h"
 #include "HistogramAgent.h"
 
 // Framework includes
diff --git a/GaudiHive/include/GaudiHive/HiveSlimEventLoopMgr.h b/GaudiHive/src/HiveSlimEventLoopMgr.h
similarity index 100%
rename from GaudiHive/include/GaudiHive/HiveSlimEventLoopMgr.h
rename to GaudiHive/src/HiveSlimEventLoopMgr.h
diff --git a/GaudiHive/src/HiveTestAlgorithm.cpp b/GaudiHive/src/HiveTestAlgorithm.cpp
index 695d6904e5de510711e38202f0fcdb5e25f9d80b..c3bd940e9a9a1df7f3dfca925a3cd247cce25b87 100644
--- a/GaudiHive/src/HiveTestAlgorithm.cpp
+++ b/GaudiHive/src/HiveTestAlgorithm.cpp
@@ -8,7 +8,7 @@
 * granted to it by virtue of its status as an Intergovernmental Organization        *
 * or submit itself to any jurisdiction.                                             *
 \***********************************************************************************/
-#include "GaudiHive/HiveTestAlgorithm.h"
+#include "HiveTestAlgorithm.h"
 #include "GaudiKernel/MsgStream.h"
 #include "GaudiKernel/ThreadLocalContext.h"
 
diff --git a/GaudiHive/include/GaudiHive/HiveTestAlgorithm.h b/GaudiHive/src/HiveTestAlgorithm.h
similarity index 100%
rename from GaudiHive/include/GaudiHive/HiveTestAlgorithm.h
rename to GaudiHive/src/HiveTestAlgorithm.h
diff --git a/GaudiKernel/include/GaudiKernel/AlgFactory.h b/GaudiKernel/include/GaudiKernel/AlgFactory.h
deleted file mode 100644
index 11eea60e2a3d68fdfdb2d6ea4676955e7c1d652b..0000000000000000000000000000000000000000
--- a/GaudiKernel/include/GaudiKernel/AlgFactory.h
+++ /dev/null
@@ -1,16 +0,0 @@
-/***********************************************************************************\
-* (c) Copyright 1998-2019 CERN for the benefit of the LHCb and ATLAS collaborations *
-*                                                                                   *
-* This software is distributed under the terms of the Apache version 2 licence,     *
-* copied verbatim in the file "LICENSE".                                            *
-*                                                                                   *
-* In applying this licence, CERN does not waive the privileges and immunities       *
-* granted to it by virtue of its status as an Intergovernmental Organization        *
-* or submit itself to any jurisdiction.                                             *
-\***********************************************************************************/
-#ifndef GAUDIKERNEL_ALGFACTORY_H
-#define GAUDIKERNEL_ALGFACTORY_H
-
-#warning "obsolete empty header, please remove it"
-
-#endif // GAUDIKERNEL_ALGFACTORY_H
diff --git a/GaudiKernel/include/GaudiKernel/AudFactory.h b/GaudiKernel/include/GaudiKernel/AudFactory.h
deleted file mode 100644
index ee8a5a469aede7171a6438fbbc0a782ec765c673..0000000000000000000000000000000000000000
--- a/GaudiKernel/include/GaudiKernel/AudFactory.h
+++ /dev/null
@@ -1,16 +0,0 @@
-/***********************************************************************************\
-* (c) Copyright 1998-2019 CERN for the benefit of the LHCb and ATLAS collaborations *
-*                                                                                   *
-* This software is distributed under the terms of the Apache version 2 licence,     *
-* copied verbatim in the file "LICENSE".                                            *
-*                                                                                   *
-* In applying this licence, CERN does not waive the privileges and immunities       *
-* granted to it by virtue of its status as an Intergovernmental Organization        *
-* or submit itself to any jurisdiction.                                             *
-\***********************************************************************************/
-#ifndef GAUDIKERNEL_AUDFACTORY_H
-#define GAUDIKERNEL_AUDFACTORY_H
-
-#warning "obsolete empty header, please remove it"
-
-#endif // GAUDIKERNEL_AUDFACTORY_H
diff --git a/GaudiKernel/include/GaudiKernel/CnvFactory.h b/GaudiKernel/include/GaudiKernel/CnvFactory.h
deleted file mode 100644
index a468ea9bdb4bb504a3c164205feab91a935b4b90..0000000000000000000000000000000000000000
--- a/GaudiKernel/include/GaudiKernel/CnvFactory.h
+++ /dev/null
@@ -1,16 +0,0 @@
-/***********************************************************************************\
-* (c) Copyright 1998-2019 CERN for the benefit of the LHCb and ATLAS collaborations *
-*                                                                                   *
-* This software is distributed under the terms of the Apache version 2 licence,     *
-* copied verbatim in the file "LICENSE".                                            *
-*                                                                                   *
-* In applying this licence, CERN does not waive the privileges and immunities       *
-* granted to it by virtue of its status as an Intergovernmental Organization        *
-* or submit itself to any jurisdiction.                                             *
-\***********************************************************************************/
-#ifndef GAUDIKERNEL_CNVFACTORY_H
-#define GAUDIKERNEL_CNVFACTORY_H
-
-#warning "obsolete empty header, please remove it"
-
-#endif // GAUDIKERNEL_CNVFACTORY_H
diff --git a/GaudiKernel/include/GaudiKernel/Counters.h b/GaudiKernel/include/GaudiKernel/Counters.h
deleted file mode 100644
index 5e5da440429e414e1f3317fe397a167a24018954..0000000000000000000000000000000000000000
--- a/GaudiKernel/include/GaudiKernel/Counters.h
+++ /dev/null
@@ -1,15 +0,0 @@
-/***********************************************************************************\
-* (c) Copyright 1998-2019 CERN for the benefit of the LHCb and ATLAS collaborations *
-*                                                                                   *
-* This software is distributed under the terms of the Apache version 2 licence,     *
-* copied verbatim in the file "LICENSE".                                            *
-*                                                                                   *
-* In applying this licence, CERN does not waive the privileges and immunities       *
-* granted to it by virtue of its status as an Intergovernmental Organization        *
-* or submit itself to any jurisdiction.                                             *
-\***********************************************************************************/
-#include <GAUDI_VERSION.h>
-#if GAUDI_VERSION >= CALC_GAUDI_VERSION( 33, 0 ) && GAUDI_MAJOR_VERSION < 999
-#  pragma message "warning: deprecated header, use <Gaudi/Accumulators.h> instead"
-#endif
-#include <Gaudi/Accumulators.h>
diff --git a/GaudiKernel/include/GaudiKernel/DeclareFactoryEntries.h b/GaudiKernel/include/GaudiKernel/DeclareFactoryEntries.h
deleted file mode 100644
index 5a969d51299eac7680aa0f129aa82a9b666175e5..0000000000000000000000000000000000000000
--- a/GaudiKernel/include/GaudiKernel/DeclareFactoryEntries.h
+++ /dev/null
@@ -1,16 +0,0 @@
-/***********************************************************************************\
-* (c) Copyright 1998-2019 CERN for the benefit of the LHCb and ATLAS collaborations *
-*                                                                                   *
-* This software is distributed under the terms of the Apache version 2 licence,     *
-* copied verbatim in the file "LICENSE".                                            *
-*                                                                                   *
-* In applying this licence, CERN does not waive the privileges and immunities       *
-* granted to it by virtue of its status as an Intergovernmental Organization        *
-* or submit itself to any jurisdiction.                                             *
-\***********************************************************************************/
-#ifndef GAUDIKERNEL_DECLAREFACTORYENTRIES_H
-#define GAUDIKERNEL_DECLAREFACTORYENTRIES_H 1
-
-#warning "obsolete empty header, please remove it"
-
-#endif // GAUDIKERNEL_DECLAREFACTORYENTRIES_H
diff --git a/GaudiKernel/include/GaudiKernel/Property.h b/GaudiKernel/include/GaudiKernel/Property.h
deleted file mode 100644
index 0aae2ee0894730b6265340aedb74b93a19157e8c..0000000000000000000000000000000000000000
--- a/GaudiKernel/include/GaudiKernel/Property.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/***********************************************************************************\
-* (c) Copyright 1998-2019 CERN for the benefit of the LHCb and ATLAS collaborations *
-*                                                                                   *
-* This software is distributed under the terms of the Apache version 2 licence,     *
-* copied verbatim in the file "LICENSE".                                            *
-*                                                                                   *
-* In applying this licence, CERN does not waive the privileges and immunities       *
-* granted to it by virtue of its status as an Intergovernmental Organization        *
-* or submit itself to any jurisdiction.                                             *
-\***********************************************************************************/
-#pragma once
-
-#include <GAUDI_VERSION.h>
-
-#if GAUDI_MAJOR_VERSION < 999
-#  if GAUDI_VERSION >= CALC_GAUDI_VERSION( 35, 0 )
-#    error "deprecated header: removed in v35r0, use <Gaudi/Property.h>"
-#  elif GAUDI_VERSION >= CALC_GAUDI_VERSION( 34, 0 )
-#    warning "deprecated header: to be removed in v35r0, use <Gaudi/Property.h>"
-#  endif
-#endif
-
-#include <Gaudi/Property.h>
-
-/// \fixme backward compatibility hack for old Property base class
-using Property
-    //[[deprecated("use Gaudi::Details::PropertyBase instead")]]
-    = Gaudi::Details::PropertyBase;
-
-/// \fixme backward compatibility hack for PropertyWithValue
-template <class TYPE, class VERIFIER = Gaudi::Details::Property::NullVerifier,
-          class HANDLERS = Gaudi::Details::Property::UpdateHandler>
-using PropertyWithValue
-    //[[deprecated("use Gaudi::Property instead")]]
-    = Gaudi::Property<TYPE, VERIFIER, HANDLERS>;
diff --git a/GaudiKernel/include/GaudiKernel/PropertyFwd.h b/GaudiKernel/include/GaudiKernel/PropertyFwd.h
deleted file mode 100644
index 0ceac16729c71a7117f0fcd206a10e4830a0767c..0000000000000000000000000000000000000000
--- a/GaudiKernel/include/GaudiKernel/PropertyFwd.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/***********************************************************************************\
-* (c) Copyright 1998-2019 CERN for the benefit of the LHCb and ATLAS collaborations *
-*                                                                                   *
-* This software is distributed under the terms of the Apache version 2 licence,     *
-* copied verbatim in the file "LICENSE".                                            *
-*                                                                                   *
-* In applying this licence, CERN does not waive the privileges and immunities       *
-* granted to it by virtue of its status as an Intergovernmental Organization        *
-* or submit itself to any jurisdiction.                                             *
-\***********************************************************************************/
-#pragma once
-
-#include <GAUDI_VERSION.h>
-
-#if GAUDI_MAJOR_VERSION < 999
-#  if GAUDI_VERSION >= CALC_GAUDI_VERSION( 35, 0 )
-#    error "deprecated header: removed in v35r0, use <Gaudi/PropertyFwd.h>"
-#  elif GAUDI_VERSION >= CALC_GAUDI_VERSION( 34, 0 )
-#    warning "deprecated header: to be removed in v35r0, use <Gaudi/PropertyFwd.h>"
-#  endif
-#endif
-
-#include <Gaudi/PropertyFwd.h>
diff --git a/GaudiKernel/include/GaudiKernel/PropertyList.h b/GaudiKernel/include/GaudiKernel/PropertyList.h
deleted file mode 100644
index abeffe78445be2ab270830dc5cdd146fb673178f..0000000000000000000000000000000000000000
--- a/GaudiKernel/include/GaudiKernel/PropertyList.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/***********************************************************************************\
-* (c) Copyright 1998-2019 CERN for the benefit of the LHCb and ATLAS collaborations *
-*                                                                                   *
-* This software is distributed under the terms of the Apache version 2 licence,     *
-* copied verbatim in the file "LICENSE".                                            *
-*                                                                                   *
-* In applying this licence, CERN does not waive the privileges and immunities       *
-* granted to it by virtue of its status as an Intergovernmental Organization        *
-* or submit itself to any jurisdiction.                                             *
-\***********************************************************************************/
-#ifndef GAUDIKERNEL_PROPERTYLIST_H
-#define GAUDIKERNEL_PROPERTYLIST_H
-
-// Include Files
-#include "GaudiKernel/IProperty.h"
-#include "Property.h"
-#include <vector>
-
-/** @class PropertyList PropertyList.h GaudiKernel/PropertyList.h
-
-    List of properties.
-
-    @author David Quarrie
-    @author Pere Mato
-*/
-class GAUDI_API PropertyList : public Property {
-public:
-  /// Constructor
-  PropertyList();
-  /// Constructor giving a name
-  PropertyList( const std::string& name );
-  /// Virtual destructor
-  virtual ~PropertyList();
-
-  /// Accessor members (const)
-  bool isRef() const { return false; }
-
-  /// Add a property to the list
-  void addProperty( const std::string& name, Property& p );
-  /// Add a property to the list
-  void addProperty( Property& p );
-  /// Remove a property from the list
-  void removeProperty( const std::string& name );
-  /// Remove a property from the list
-  void removeProperty( Property& p );
-
-  /// Property implementation: set property
-  bool assign( const Property& p ) override;
-  /// Property implementation: get property
-  bool load( Property& p ) const override;
-
-  /// Property implementation: set property
-  bool assign( const std::string& name, const Property& p );
-  /// Property implementation: get property
-  bool load( const std::string& name, Property& p ) const;
-
-  /// Get the property with a given name
-  const Property& getProperty( std::string_view name ) const;
-  /// Get the complete list of properties
-  const std::vector<Property*>& getProperties() const;
-
-private:
-  std::vector<Property*> m_propertyList;
-};
-
-#endif // GAUDIKERNEL_PROPERTYLIST_H
diff --git a/GaudiKernel/include/GaudiKernel/PropertyTypeTraits.h b/GaudiKernel/include/GaudiKernel/PropertyTypeTraits.h
deleted file mode 100644
index 0ba37f61453ad0ead921cc5c116562d51738c5b4..0000000000000000000000000000000000000000
--- a/GaudiKernel/include/GaudiKernel/PropertyTypeTraits.h
+++ /dev/null
@@ -1,11 +0,0 @@
-/***********************************************************************************\
-* (c) Copyright 1998-2019 CERN for the benefit of the LHCb and ATLAS collaborations *
-*                                                                                   *
-* This software is distributed under the terms of the Apache version 2 licence,     *
-* copied verbatim in the file "LICENSE".                                            *
-*                                                                                   *
-* In applying this licence, CERN does not waive the privileges and immunities       *
-* granted to it by virtue of its status as an Intergovernmental Organization        *
-* or submit itself to any jurisdiction.                                             *
-\***********************************************************************************/
-#warning deprecated header, do not use it (will be removed in Gaudi v29r0)
diff --git a/GaudiKernel/include/GaudiKernel/PropertyVerifier.h b/GaudiKernel/include/GaudiKernel/PropertyVerifier.h
deleted file mode 100644
index 0ba37f61453ad0ead921cc5c116562d51738c5b4..0000000000000000000000000000000000000000
--- a/GaudiKernel/include/GaudiKernel/PropertyVerifier.h
+++ /dev/null
@@ -1,11 +0,0 @@
-/***********************************************************************************\
-* (c) Copyright 1998-2019 CERN for the benefit of the LHCb and ATLAS collaborations *
-*                                                                                   *
-* This software is distributed under the terms of the Apache version 2 licence,     *
-* copied verbatim in the file "LICENSE".                                            *
-*                                                                                   *
-* In applying this licence, CERN does not waive the privileges and immunities       *
-* granted to it by virtue of its status as an Intergovernmental Organization        *
-* or submit itself to any jurisdiction.                                             *
-\***********************************************************************************/
-#warning deprecated header, do not use it (will be removed in Gaudi v29r0)
diff --git a/GaudiKernel/include/GaudiKernel/RefTable.h b/GaudiKernel/include/GaudiKernel/RefTable.h
deleted file mode 100644
index b16b3624eeceeb77ff0ac52b4a4f3e9081bf356f..0000000000000000000000000000000000000000
--- a/GaudiKernel/include/GaudiKernel/RefTable.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/***********************************************************************************\
-* (c) Copyright 1998-2019 CERN for the benefit of the LHCb and ATLAS collaborations *
-*                                                                                   *
-* This software is distributed under the terms of the Apache version 2 licence,     *
-* copied verbatim in the file "LICENSE".                                            *
-*                                                                                   *
-* In applying this licence, CERN does not waive the privileges and immunities       *
-* granted to it by virtue of its status as an Intergovernmental Organization        *
-* or submit itself to any jurisdiction.                                             *
-\***********************************************************************************/
-#ifndef GAUDIKERNEL_REFTABLE_H
-#define GAUDIKERNEL_REFTABLE_H 1
-
-#ifndef GAUDI_TEST_PUBLIC_HEADERS_BUILD
-#  warning Obsolete header file.
-#endif // GAUDI_TEST_PUBLIC_HEADERS_BUILD
-
-#endif // GAUDIKERNEL_REFTABLE_H
diff --git a/GaudiKernel/include/GaudiKernel/SerializeSTLFwd.h b/GaudiKernel/include/GaudiKernel/SerializeSTLFwd.h
deleted file mode 100644
index 102f553d61ade5ea77ff9a10a43538da3e43a2fa..0000000000000000000000000000000000000000
--- a/GaudiKernel/include/GaudiKernel/SerializeSTLFwd.h
+++ /dev/null
@@ -1,12 +0,0 @@
-/***********************************************************************************\
-* (c) Copyright 1998-2019 CERN for the benefit of the LHCb and ATLAS collaborations *
-*                                                                                   *
-* This software is distributed under the terms of the Apache version 2 licence,     *
-* copied verbatim in the file "LICENSE".                                            *
-*                                                                                   *
-* In applying this licence, CERN does not waive the privileges and immunities       *
-* granted to it by virtue of its status as an Intergovernmental Organization        *
-* or submit itself to any jurisdiction.                                             *
-\***********************************************************************************/
-#include "GaudiKernel/SerializeSTL.h"
-#warning "obsolete header, please use \"GaudiKernel/SerializeSTL.h\" instead"
diff --git a/GaudiKernel/include/GaudiKernel/SvcFactory.h b/GaudiKernel/include/GaudiKernel/SvcFactory.h
deleted file mode 100644
index a799f2f67cc25826d79a0598f30ae6c086046fdd..0000000000000000000000000000000000000000
--- a/GaudiKernel/include/GaudiKernel/SvcFactory.h
+++ /dev/null
@@ -1,16 +0,0 @@
-/***********************************************************************************\
-* (c) Copyright 1998-2019 CERN for the benefit of the LHCb and ATLAS collaborations *
-*                                                                                   *
-* This software is distributed under the terms of the Apache version 2 licence,     *
-* copied verbatim in the file "LICENSE".                                            *
-*                                                                                   *
-* In applying this licence, CERN does not waive the privileges and immunities       *
-* granted to it by virtue of its status as an Intergovernmental Organization        *
-* or submit itself to any jurisdiction.                                             *
-\***********************************************************************************/
-#ifndef KERNEL_SVCFACTORY_H
-#define KERNEL_SVCFACTORY_H
-
-#warning "obsolete empty header, please remove it"
-
-#endif // GAUDIKERNEL_SVCFACTORY_H
diff --git a/GaudiKernel/include/GaudiKernel/ToolFactory.h b/GaudiKernel/include/GaudiKernel/ToolFactory.h
deleted file mode 100644
index 9148370148949543ce868eeab783cc4b55769c7a..0000000000000000000000000000000000000000
--- a/GaudiKernel/include/GaudiKernel/ToolFactory.h
+++ /dev/null
@@ -1,16 +0,0 @@
-/***********************************************************************************\
-* (c) Copyright 1998-2019 CERN for the benefit of the LHCb and ATLAS collaborations *
-*                                                                                   *
-* This software is distributed under the terms of the Apache version 2 licence,     *
-* copied verbatim in the file "LICENSE".                                            *
-*                                                                                   *
-* In applying this licence, CERN does not waive the privileges and immunities       *
-* granted to it by virtue of its status as an Intergovernmental Organization        *
-* or submit itself to any jurisdiction.                                             *
-\***********************************************************************************/
-#ifndef GAUDI_KERNEL_TOOLFACTORY_H
-#define GAUDI_KERNEL_TOOLFACTORY_H
-
-#warning "obsolete empty header, please remove it"
-
-#endif // GAUDI_KERNEL_TOOLFACTORY_H
diff --git a/GaudiKernel/include/GaudiKernel/apply.h b/GaudiKernel/include/GaudiKernel/apply.h
deleted file mode 100644
index 4185f9affe1e5d744298a4aec6379882ecba11ff..0000000000000000000000000000000000000000
--- a/GaudiKernel/include/GaudiKernel/apply.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/***********************************************************************************\
-* (c) Copyright 1998-2019 CERN for the benefit of the LHCb and ATLAS collaborations *
-*                                                                                   *
-* This software is distributed under the terms of the Apache version 2 licence,     *
-* copied verbatim in the file "LICENSE".                                            *
-*                                                                                   *
-* In applying this licence, CERN does not waive the privileges and immunities       *
-* granted to it by virtue of its status as an Intergovernmental Organization        *
-* or submit itself to any jurisdiction.                                             *
-\***********************************************************************************/
-#ifndef GAUDIKERNEL_APPLY_H
-#define GAUDIKERNEL_APPLY_H
-#warning "Obsolete header, please use std::apply"
-#include <tuple>
-namespace Gaudi {
-  using std::apply;
-}
-#endif
diff --git a/GaudiKernel/include/GaudiKernel/invoke.h b/GaudiKernel/include/GaudiKernel/invoke.h
deleted file mode 100644
index 017f7563021c761e8cd40ab65a2505f64339a473..0000000000000000000000000000000000000000
--- a/GaudiKernel/include/GaudiKernel/invoke.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/***********************************************************************************\
-* (c) Copyright 1998-2019 CERN for the benefit of the LHCb and ATLAS collaborations *
-*                                                                                   *
-* This software is distributed under the terms of the Apache version 2 licence,     *
-* copied verbatim in the file "LICENSE".                                            *
-*                                                                                   *
-* In applying this licence, CERN does not waive the privileges and immunities       *
-* granted to it by virtue of its status as an Intergovernmental Organization        *
-* or submit itself to any jurisdiction.                                             *
-\***********************************************************************************/
-#ifndef GAUDIKERNEL_INVOKE_H
-#define GAUDIKERNEL_INVOKE_H
-#include <functional>
-
-#warning "Obsolete header, please use std::invoke"
-
-namespace Gaudi {
-  using std::invoke;
-}
-#endif
diff --git a/GaudiProfiling/CMakeLists.txt b/GaudiProfiling/CMakeLists.txt
index 5cf98ce56425b2e4f9758bad4838656be1c3f771..a3da42da5e3ecf1987c1c5ac8ff4e843aab928ad 100644
--- a/GaudiProfiling/CMakeLists.txt
+++ b/GaudiProfiling/CMakeLists.txt
@@ -122,8 +122,6 @@ if(GAUDI_USE_JEMALLOC)
            COMMAND run ${CMAKE_COMMAND} -E env LD_PRELOAD=$<TARGET_PROPERTY:jemalloc::jemalloc,LOCATION> gaudirun.py)
 endif()
 
-# Register the header only library (install include/)
-gaudi_add_header_only_library(GaudiProfilingHeaders)
 # Install python modules
 gaudi_install(PYTHON)
 # Install other scripts
diff --git a/GaudiProfiling/include/GaudiProfiling/PfmCodeAnalyser.h b/GaudiProfiling/include/GaudiProfiling/PfmCodeAnalyser.h
deleted file mode 100644
index 823eb661dd034d926f92d169eea381299d312b47..0000000000000000000000000000000000000000
--- a/GaudiProfiling/include/GaudiProfiling/PfmCodeAnalyser.h
+++ /dev/null
@@ -1,234 +0,0 @@
-/***********************************************************************************\
-* (c) Copyright 1998-2019 CERN for the benefit of the LHCb and ATLAS collaborations *
-*                                                                                   *
-* This software is distributed under the terms of the Apache version 2 licence,     *
-* copied verbatim in the file "LICENSE".                                            *
-*                                                                                   *
-* In applying this licence, CERN does not waive the privileges and immunities       *
-* granted to it by virtue of its status as an Intergovernmental Organization        *
-* or submit itself to any jurisdiction.                                             *
-\***********************************************************************************/
-#ifndef PfmCodeAnalyserH
-#define PfmCodeAnalyserH 1
-
-#include <perfmon/perfmon.h>
-#include <perfmon/perfmon_dfl_smpl.h>
-#include <perfmon/pfmlib.h>
-#include <perfmon/pfmlib_core.h>
-#include <perfmon/pfmlib_intel_nhm.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
-#include <unistd.h>
-
-#define MAX_EVT_NAME_LEN 256
-#define NUM_PMCS PFMLIB_MAX_PMCS
-#define NUM_PMDS PFMLIB_MAX_PMDS
-#define FMT_NAME PFM_DFL_SMPL_NAME
-#define MAX_NUMBER_OF_PROGRAMMABLE_COUNTERS 4
-#define cpuid( func, eax, ebx, ecx, edx )                                                                              \
-  __asm__ __volatile__( "cpuid" : "=a"( eax ), "=b"( ebx ), "=c"( ecx ), "=d"( edx ) : "a"( func ) );
-
-class PfmCodeAnalyser {
-private:
-  int                       used_counters_number;
-  int                       nehalem;
-  pfmlib_input_param_t      inp;
-  pfmlib_output_param_t     outp;
-  pfarg_ctx_t               ctx;
-  pfarg_pmd_t               pd[NUM_PMDS];
-  pfarg_pmc_t               pc[NUM_PMCS];
-  pfarg_load_t              load_arg;
-  int                       fd;
-  char                      event_str[MAX_NUMBER_OF_PROGRAMMABLE_COUNTERS][MAX_EVT_NAME_LEN];
-  bool                      inv[MAX_NUMBER_OF_PROGRAMMABLE_COUNTERS];
-  unsigned int              cmask[MAX_NUMBER_OF_PROGRAMMABLE_COUNTERS];
-  pfmlib_core_input_param_t params;
-  pfmlib_nhm_input_param_t  nhm_params;
-  int                       ret;
-  unsigned                  i;
-  unsigned long             sum[MAX_NUMBER_OF_PROGRAMMABLE_COUNTERS];
-  unsigned                  count;
-  unsigned                  overhead_avg[MAX_NUMBER_OF_PROGRAMMABLE_COUNTERS];
-
-private:
-  PfmCodeAnalyser( const char* event0, unsigned int cmask_v0, bool inv_v0, const char* event1, unsigned int cmask_v1,
-                   bool inv_v1, const char* event2, unsigned int cmask_v2, bool inv_v2, const char* event3,
-                   unsigned int cmask_v3, bool inv_v3 ); // constructor hidden
-  PfmCodeAnalyser( PfmCodeAnalyser const& );             // copy constructor hidden
-  PfmCodeAnalyser& operator=( PfmCodeAnalyser const& );  // assign operator hidden
-  ~PfmCodeAnalyser();                                    // destructor hidden
-
-public:
-  static PfmCodeAnalyser& Instance( const char* event0 = "UNHALTED_CORE_CYCLES", unsigned int cmask_v0 = 0,
-                                    bool inv_v0 = false, const char* event1 = "", unsigned int cmask_v1 = 0,
-                                    bool inv_v1 = false, const char* event2 = "", unsigned int cmask_v2 = 0,
-                                    bool inv_v2 = false, const char* event3 = "", unsigned int cmask_v3 = 0,
-                                    bool inv_v3 = false );
-  void                    start();
-  void                    stop();
-  void                    stop_init();
-};
-
-PfmCodeAnalyser::PfmCodeAnalyser( const char* event0, unsigned int cmask_v0, bool inv_v0, const char* event1,
-                                  unsigned int cmask_v1, bool inv_v1, const char* event2, unsigned int cmask_v2,
-                                  bool inv_v2, const char* event3, unsigned int cmask_v3, bool inv_v3 ) {
-  int ax, bx, cx, dx;
-  cpuid( 1, ax, bx, cx, dx );
-  int sse4_2_mask = 1 << 20;
-  nehalem         = cx & sse4_2_mask;
-  strcpy( event_str[0], event0 );
-  strcpy( event_str[1], event1 );
-  strcpy( event_str[2], event2 );
-  strcpy( event_str[3], event3 );
-  cmask[0]             = cmask_v0;
-  cmask[1]             = cmask_v1;
-  cmask[2]             = cmask_v2;
-  cmask[3]             = cmask_v3;
-  inv[0]               = inv_v0;
-  inv[1]               = inv_v1;
-  inv[2]               = inv_v2;
-  inv[3]               = inv_v3;
-  used_counters_number = 0;
-  for ( int i = 0; i < MAX_NUMBER_OF_PROGRAMMABLE_COUNTERS; i++ ) {
-    if ( strlen( event_str[i] ) > 0 ) used_counters_number++;
-  }
-  for ( int i = 0; i < used_counters_number; i++ ) {
-    sum[i]          = 0;
-    overhead_avg[i] = 0;
-  }
-  count = 0;
-  if ( pfm_initialize() != PFMLIB_SUCCESS ) {
-    printf( "Cannot initialize perfmon!!\nExiting...\n" );
-    exit( 0 );
-  }
-  while ( count < 3 ) {
-    start();
-    stop_init();
-  }
-  for ( int i = 0; i < used_counters_number; i++ ) { sum[i] = 0; }
-  count = 0;
-  while ( count < 10 ) {
-    start();
-    stop_init();
-  }
-  for ( int i = 0; i < used_counters_number; i++ ) {
-    overhead_avg[i] = sum[i] / count;
-    sum[i]          = 0;
-  }
-  count = 0;
-}
-
-PfmCodeAnalyser& PfmCodeAnalyser::Instance( const char* event0, unsigned int cmask_v0, bool inv_v0, const char* event1,
-                                            unsigned int cmask_v1, bool inv_v1, const char* event2,
-                                            unsigned int cmask_v2, bool inv_v2, const char* event3,
-                                            unsigned int cmask_v3, bool inv_v3 ) {
-  static PfmCodeAnalyser theSingleton( event0, cmask_v0, inv_v0, event1, cmask_v1, inv_v1, event2, cmask_v2, inv_v2,
-                                       event3, cmask_v3, inv_v3 );
-  return theSingleton;
-}
-
-// start()
-// initializes all the necessary structures to start the actual counting, calling pfm_start()
-void PfmCodeAnalyser::start() {
-  memset( &ctx, 0, sizeof( ctx ) );
-  memset( &inp, 0, sizeof( inp ) );
-  memset( &outp, 0, sizeof( outp ) );
-  memset( pd, 0, sizeof( pd ) );
-  memset( pc, 0, sizeof( pc ) );
-  memset( &load_arg, 0, sizeof( load_arg ) );
-  memset( &params, 0, sizeof( params ) );
-  for ( int i = 0; i < used_counters_number; i++ ) {
-    ret = pfm_find_full_event( event_str[i], &inp.pfp_events[i] );
-    if ( ret != PFMLIB_SUCCESS ) {
-      fprintf( stderr, "ERROR: cannot find event: %s\naborting...\n", event_str[i] );
-      exit( 1 );
-    }
-  }
-  inp.pfp_dfl_plm     = PFM_PLM3;
-  inp.pfp_event_count = used_counters_number;
-  for ( int i = 0; i < used_counters_number; i++ ) {
-    if ( inv[i] ) {
-      ( params.pfp_core_counters[i] ).flags |= PFM_CORE_SEL_INV;
-      ( nhm_params.pfp_nhm_counters[i] ).flags |= PFM_NHM_SEL_INV;
-    }
-    if ( cmask[i] > 0 ) {
-      ( params.pfp_core_counters[i] ).cnt_mask    = cmask[i];
-      ( nhm_params.pfp_nhm_counters[i] ).cnt_mask = cmask[i];
-    }
-  }
-  if ( nehalem ) {
-    ret = pfm_dispatch_events( &inp, &nhm_params, &outp, NULL );
-  } else {
-    ret = pfm_dispatch_events( &inp, &params, &outp, NULL );
-  }
-  if ( ret != PFMLIB_SUCCESS ) {
-    fprintf( stderr, "ERROR: cannot dispatch events: %s\naborting...\n", pfm_strerror( ret ) );
-    exit( 1 );
-  }
-  for ( unsigned int i = 0; i < outp.pfp_pmc_count; i++ ) {
-    pc[i].reg_num   = outp.pfp_pmcs[i].reg_num;
-    pc[i].reg_value = outp.pfp_pmcs[i].reg_value;
-  }
-  for ( unsigned int i = 0; i < outp.pfp_pmd_count; i++ ) {
-    pd[i].reg_num   = outp.pfp_pmds[i].reg_num;
-    pd[i].reg_value = 0;
-  }
-  fd = pfm_create_context( &ctx, NULL, 0, 0 );
-  if ( fd == -1 ) {
-    fprintf( stderr, "ERROR: Context not created\naborting...\n" );
-    exit( 1 );
-  }
-  if ( pfm_write_pmcs( fd, pc, outp.pfp_pmc_count ) == -1 ) {
-    fprintf( stderr, "ERROR: Could not write pmcs\naborting...\n" );
-    exit( 1 );
-  }
-  if ( pfm_write_pmds( fd, pd, outp.pfp_pmd_count ) == -1 ) {
-    fprintf( stderr, "ERROR: Could not write pmds\naborting...\n" );
-    exit( 1 );
-  }
-  load_arg.load_pid = getpid();
-  if ( pfm_load_context( fd, &load_arg ) == -1 ) {
-    fprintf( stderr, "ERROR: Could not load context\naborting...\n" );
-    exit( 1 );
-  }
-  pfm_start( fd, NULL );
-}
-
-// stop()
-// const ModuleDescription& desc : description of the module that just finished its execution (we are only interested in
-// its name)
-// stops the counting calling pfm_stop() and stores the counting results into the "results" map
-void PfmCodeAnalyser::stop() {
-  pfm_stop( fd );
-  if ( pfm_read_pmds( fd, pd, inp.pfp_event_count ) == -1 ) {
-    fprintf( stderr, "ERROR: Could not read pmds\naborting...\n" );
-    exit( 1 );
-  }
-
-  for ( int i = 0; i < used_counters_number; i++ ) { sum[i] += ( pd[i].reg_value - overhead_avg[i] ); }
-  count++;
-  close( fd );
-}
-
-void PfmCodeAnalyser::stop_init() {
-  pfm_stop( fd );
-  if ( pfm_read_pmds( fd, pd, inp.pfp_event_count ) == -1 ) {
-    fprintf( stderr, "ERROR: Could not read pmds\naborting...\n" );
-    exit( 1 );
-  }
-
-  for ( int i = 0; i < used_counters_number; i++ ) { sum[i] += ( pd[i].reg_value ); }
-  count++;
-  close( fd );
-}
-
-PfmCodeAnalyser::~PfmCodeAnalyser() {
-  for ( int i = 0; i < used_counters_number; i++ ) {
-    printf( "Event: %s\nTotal count:%lu\nNumber of counts:%u\nAverage count:%f\nOverhead removed:%u\n", event_str[i],
-            sum[i], count, (double)sum[i] / count, overhead_avg[i] );
-  }
-}
-
-#endif // PfmCodeAnalyserH
diff --git a/cmake/GaudiToolbox.cmake b/cmake/GaudiToolbox.cmake
index 017c4616323c80018c37327d4de5d62bb7bf98ae..d1d1d78bc3a9e0d3bda0907832cf708fb8d83f2a 100644
--- a/cmake/GaudiToolbox.cmake
+++ b/cmake/GaudiToolbox.cmake
@@ -91,6 +91,8 @@ Functions
 include_guard(GLOBAL) # Protect from multiple include (global scope, because
                       # everything defined in this file is globally visible)
 
+set(GAUDI_TOOLBOX_DIR "${CMAKE_CURRENT_LIST_DIR}" CACHE PATH "Directory containing this file")
+
 ################################ Global options ################################
 
 # Option used to know if the install() function must be called with OPTIONAL
@@ -110,6 +112,10 @@ endif()
 # Option to prefer local targets to imported ones
 option(GAUDI_PREFER_LOCAL_TARGETS "Prefer local targets over imported ones" FALSE)
 
+option(GAUDI_TEST_PUBLIC_HEADERS_BUILD
+    "Execute a test build of all public headers in the global target 'all'"
+    FALSE)
+
 # Default layout fo the installation (may be overridden in the cache)
 set(CMAKE_INSTALL_BINDIR "bin" CACHE STRING "Install executable in <prefix>/\${CMAKE_INSTALL_BINDIR}")
 set(CMAKE_INSTALL_LIBDIR "lib" CACHE STRING "Install libraries in <prefix>/\${CMAKE_INSTALL_LIBDIR}")
@@ -118,7 +124,7 @@ set(GAUDI_INSTALL_PLUGINDIR "${CMAKE_INSTALL_LIBDIR}" CACHE STRING "Install plug
 set(GAUDI_INSTALL_PYTHONDIR "python" CACHE STRING "Install python packages in <prefix>/\${GAUDI_INSTALL_PYTHONDIR}")
 set(GAUDI_INSTALL_CONFIGDIR "lib/cmake/${PROJECT_NAME}" CACHE STRING "Install cmake files in <prefix>/\${GAUDI_INSTALL_CONFIGDIR}")
 
-set(scan_dict_deps_command ${CMAKE_CURRENT_LIST_DIR}/scan_dict_deps.py
+set(scan_dict_deps_command ${GAUDI_TOOLBOX_DIR}/scan_dict_deps.py
     CACHE INTERNAL "command to use to scan dependencies of dictionary headers")
 
 ################################## Functions  ##################################
@@ -152,6 +158,60 @@ macro(_gaudi_runtime_append runtime value)
     set_property(TARGET target_runtime_paths APPEND PROPERTY runtime_${runtime} ${value})
 endmacro()
 
+# Helper function to add build test for every public header
+function(_test_build_public_headers lib_name)
+    if(NOT BUILD_TESTING)
+        # we test the build of the public headers only when tests are enabled
+        return()
+    endif()
+    # collect the list of public headers
+    file(GLOB_RECURSE headers
+        RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/include
+        CONFIGURE_DEPENDS
+        ${CMAKE_CURRENT_SOURCE_DIR}/include/*.h
+        ${CMAKE_CURRENT_SOURCE_DIR}/include/*.hxx
+        ${CMAKE_CURRENT_SOURCE_DIR}/include/*.hpp
+    )
+    # list the test source files generated (in a previous config)
+    file(GLOB_RECURSE old_srcs
+        ${CMAKE_CURRENT_BINARY_DIR}/headers_build_test/*.h.cpp
+        ${CMAKE_CURRENT_BINARY_DIR}/headers_build_test/*.hxx.cpp
+        ${CMAKE_CURRENT_BINARY_DIR}/headers_build_test/*.hpp.cpp
+    )
+    set(srcs)
+    if(headers)
+        # create a cpp file for each header file to test
+        foreach(header IN LISTS headers)
+            set(s "${CMAKE_CURRENT_BINARY_DIR}/headers_build_test/${header}.cpp")
+            configure_file("${GAUDI_TOOLBOX_DIR}/header_build_test.tpl" "${s}")
+            list(APPEND srcs "${s}")
+        endforeach()
+        # create an object library (we never need to use the product)
+        add_library(test_public_headers_build_${lib_name} OBJECT EXCLUDE_FROM_ALL ${srcs})        
+        target_link_libraries(test_public_headers_build_${lib_name}
+            PRIVATE ${lib_name})
+        target_compile_definitions(test_public_headers_build_${lib_name}
+            PRIVATE GAUDI_TEST_PUBLIC_HEADERS_BUILD)
+        # add it to the global target "test_public_headers_build" (making sure it exists)
+        if(NOT TARGET test_public_headers_build)
+            if(GAUDI_TEST_PUBLIC_HEADERS_BUILD)
+                add_custom_target(test_public_headers_build ALL
+                    COMMENT "test build of public headers")
+            else()
+                add_custom_target(test_public_headers_build
+                    COMMENT "test build of public headers")
+            endif()
+        endif()
+        add_dependencies(test_public_headers_build test_public_headers_build_${lib_name})
+        # keep in old_srcs only the source files not needed anymore 
+        list(REMOVE_ITEM old_srcs ${srcs})
+    endif()
+    # remove stale test source files
+    if(old_srcs)
+        file(REMOVE ${old_srcs})
+    endif()
+endfunction()
+
 #[========================================================================[.rst:
 .. command:: gaudi_add_library
 
@@ -216,6 +276,7 @@ function(gaudi_add_library lib_name)
         install(DIRECTORY include/
                 TYPE INCLUDE)
         set_property(DIRECTORY PROPERTY include_installed TRUE)
+        _test_build_public_headers(${lib_name})
     endif()
     # Runtime ROOT_INCLUDE_PATH
     _gaudi_runtime_append(root_include_path $<TARGET_PROPERTY:${lib_name},INTERFACE_INCLUDE_DIRECTORIES>)
@@ -287,6 +348,7 @@ function(gaudi_add_header_only_library lib_name)
         install(DIRECTORY include/
                 TYPE INCLUDE)
         set_property(DIRECTORY PROPERTY include_installed TRUE)
+        _test_build_public_headers(${lib_name})
     endif()
     # Runtime ROOT_INCLUDE_PATH
     _gaudi_runtime_append(root_include_path $<TARGET_PROPERTY:${lib_name},INTERFACE_INCLUDE_DIRECTORIES>)
diff --git a/cmake/header_build_test.tpl b/cmake/header_build_test.tpl
new file mode 100644
index 0000000000000000000000000000000000000000..6c200e893f0130704e134a415fd59d4fd7f3a675
--- /dev/null
+++ b/cmake/header_build_test.tpl
@@ -0,0 +1 @@
+#include <${header}>
diff --git a/cmake/tests/testGaudiInstallation.cmake b/cmake/tests/testGaudiInstallation.cmake
index d6af88710a1a36cb761a0a5ad9bb595e1614142b..6df6a1a995fe3a35c1e3fb55af3dc25ee6807755 100644
--- a/cmake/tests/testGaudiInstallation.cmake
+++ b/cmake/tests/testGaudiInstallation.cmake
@@ -111,18 +111,10 @@ elseif(DEFINED TEST_GAUDI_INSTALL_FILES_EXIST) # check some files that should be
         message(FATAL_ERROR "Include directory not installed correctly,"
             " Axis.h not found in include/GaudiCommonSvc/")
     endif()
-    if(NOT EXISTS ${GAUDI_INSTALL_DIR}/include/GaudiHive/HiveSlimEventLoopMgr.h)
-        message(FATAL_ERROR "Include directory not installed correctly,"
-            " HiveSlimEventLoopMgr.h not found in include/GaudiHive/")
-    endif()
     if(NOT EXISTS ${GAUDI_INSTALL_DIR}/include/GaudiMP/TESSerializer.h)
         message(FATAL_ERROR "Include directory not installed correctly,"
             " TESSerializer.h not found in include/GaudiMP/")
     endif()
-    if(NOT EXISTS ${GAUDI_INSTALL_DIR}/include/GaudiProfiling/PfmCodeAnalyser.h)
-        message(FATAL_ERROR "Include directory not installed correctly,"
-            " PfmCodeAnalyser.h not found in include/GaudiProfiling/")
-    endif()
     if(NOT EXISTS ${GAUDI_INSTALL_DIR}/include/GaudiPython/AlgDecorators.h)
         message(FATAL_ERROR "Include directory not installed correctly,"
             " AlgDecorators.h not found in include/GaudiPython/")