diff --git a/DDCore/src/plugins/ReadoutSegmentations.cpp b/DDCore/src/plugins/ReadoutSegmentations.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..7462e7d931e8557762d2a7cc375ff5ec24ba8b44
--- /dev/null
+++ b/DDCore/src/plugins/ReadoutSegmentations.cpp
@@ -0,0 +1,77 @@
+//==========================================================================
+//  AIDA Detector description implementation 
+//--------------------------------------------------------------------------
+// Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN)
+// All rights reserved.
+//
+// For the licensing terms see $DD4hepINSTALL/LICENSE.
+// For the list of contributors see $DD4hepINSTALL/doc/CREDITS.
+//
+// Author     : M.Frank
+//
+//==========================================================================
+
+// Framework includes
+#include "DD4hep/detail/SegmentationsInterna.h"
+#include "DD4hep/Factories.h"
+
+using namespace dd4hep;
+using namespace dd4hep::DDSegmentation;
+
+namespace {
+  template<typename T> dd4hep::SegmentationObject*
+  create_segmentation(const dd4hep::BitFieldCoder* decoder)  {
+    return new dd4hep::SegmentationWrapper<T>(decoder);
+  }
+}
+
+#include "DDSegmentation/NoSegmentation.h"
+DECLARE_SEGMENTATION(NoSegmentation,create_segmentation<dd4hep::DDSegmentation::NoSegmentation>)
+
+#include "DDSegmentation/CartesianGridXY.h"
+DECLARE_SEGMENTATION(CartesianGridXY,create_segmentation<dd4hep::DDSegmentation::CartesianGridXY>)
+
+#include "DDSegmentation/CartesianGridXZ.h"
+DECLARE_SEGMENTATION(CartesianGridXZ,create_segmentation<dd4hep::DDSegmentation::CartesianGridXZ>)
+
+#include "DDSegmentation/CartesianGridYZ.h"
+DECLARE_SEGMENTATION(CartesianGridYZ,create_segmentation<dd4hep::DDSegmentation::CartesianGridYZ>)
+
+#include "DDSegmentation/CartesianGridXYZ.h"
+DECLARE_SEGMENTATION(CartesianGridXYZ,create_segmentation<dd4hep::DDSegmentation::CartesianGridXYZ>)
+
+#include "DDSegmentation/CartesianStripX.h"
+DECLARE_SEGMENTATION(CartesianStripX,create_segmentation<dd4hep::DDSegmentation::CartesianStripX>)
+
+#include "DDSegmentation/CartesianStripY.h"
+DECLARE_SEGMENTATION(CartesianStripY,create_segmentation<dd4hep::DDSegmentation::CartesianStripY>)
+
+#include "DDSegmentation/CartesianStripZ.h"
+DECLARE_SEGMENTATION(CartesianStripZ,create_segmentation<dd4hep::DDSegmentation::CartesianStripZ>)
+
+#include "DDSegmentation/TiledLayerGridXY.h"
+DECLARE_SEGMENTATION(TiledLayerGridXY,create_segmentation<dd4hep::DDSegmentation::TiledLayerGridXY>)
+
+#include "DDSegmentation/MegatileLayerGridXY.h"
+DECLARE_SEGMENTATION(MegatileLayerGridXY,create_segmentation<dd4hep::DDSegmentation::MegatileLayerGridXY>)
+
+#include "DDSegmentation/WaferGridXY.h"
+DECLARE_SEGMENTATION(WaferGridXY,create_segmentation<dd4hep::DDSegmentation::WaferGridXY>)
+
+#include "DDSegmentation/PolarGridRPhi.h"
+DECLARE_SEGMENTATION(PolarGridRPhi,create_segmentation<dd4hep::DDSegmentation::PolarGridRPhi>)
+
+#include "DDSegmentation/GridPhiEta.h"
+DECLARE_SEGMENTATION(GridPhiEta,create_segmentation<dd4hep::DDSegmentation::GridPhiEta>)
+
+#include "DDSegmentation/GridRPhiEta.h"
+DECLARE_SEGMENTATION(GridRPhiEta,create_segmentation<dd4hep::DDSegmentation::GridRPhiEta>)
+
+#include "DDSegmentation/PolarGridRPhi2.h"
+DECLARE_SEGMENTATION(PolarGridRPhi2,create_segmentation<dd4hep::DDSegmentation::PolarGridRPhi2>)
+
+#include "DDSegmentation/ProjectiveCylinder.h"
+DECLARE_SEGMENTATION(ProjectiveCylinder,create_segmentation<dd4hep::DDSegmentation::ProjectiveCylinder>)
+
+#include "DDSegmentation/MultiSegmentation.h"
+DECLARE_SEGMENTATION(MultiSegmentation,create_segmentation<dd4hep::DDSegmentation::MultiSegmentation>)
diff --git a/DDCore/src/segmentations/CartesianGridXY.cpp b/DDCore/src/segmentations/CartesianGridXY.cpp
index 88cce3e9eb8d750d0fb8f6254a4867b6196f875b..f6cd2087f2c0ec87d20971208752718523afbcad 100644
--- a/DDCore/src/segmentations/CartesianGridXY.cpp
+++ b/DDCore/src/segmentations/CartesianGridXY.cpp
@@ -6,7 +6,6 @@
  */
 
 #include "DDSegmentation/CartesianGridXY.h"
-#include "DD4hep/Factories.h"
 
 namespace dd4hep {
 namespace DDSegmentation {
@@ -80,5 +79,6 @@ std::vector<double> CartesianGridXY::cellDimensions(const CellID&) const {
 } /* namespace DDSegmentation */
 } /* namespace dd4hep */
 
-
-DECLARE_SEGMENTATION(CartesianGridXY,dd4hep::create_segmentation<dd4hep::DDSegmentation::CartesianGridXY>)
+// This is done DDCore/src/plugins/ReadoutSegmentations.cpp so the plugin is not part of libDDCore
+// needs also #include "DD4hep/Factories.h"
+// DECLARE_SEGMENTATION(CartesianGridXY,dd4hep::create_segmentation<dd4hep::DDSegmentation::CartesianGridXY>)
diff --git a/DDCore/src/segmentations/CartesianGridXYZ.cpp b/DDCore/src/segmentations/CartesianGridXYZ.cpp
index 1f8d420a165866fcbd4a3b50e4737e50d6c1ec4e..a4bec58b4da4f03230c75de63349817dd0dcff51 100644
--- a/DDCore/src/segmentations/CartesianGridXYZ.cpp
+++ b/DDCore/src/segmentations/CartesianGridXYZ.cpp
@@ -6,7 +6,6 @@
  */
 
 #include "DDSegmentation/CartesianGridXYZ.h"
-#include "DD4hep/Factories.h"
 
 namespace dd4hep {
 namespace DDSegmentation {
@@ -76,4 +75,6 @@ std::vector<double> CartesianGridXYZ::cellDimensions(const CellID&) const {
 } /* namespace DDSegmentation */
 } /* namespace dd4hep */
 
-DECLARE_SEGMENTATION(CartesianGridXYZ,create_segmentation<dd4hep::DDSegmentation::CartesianGridXYZ>)
+// This is done DDCore/src/plugins/ReadoutSegmentations.cpp so the plugin is not part of libDDCore
+// needs also #include "DD4hep/Factories.h"
+// DECLARE_SEGMENTATION(CartesianGridXYZ,create_segmentation<dd4hep::DDSegmentation::CartesianGridXYZ>)
diff --git a/DDCore/src/segmentations/CartesianGridXZ.cpp b/DDCore/src/segmentations/CartesianGridXZ.cpp
index e89599ac6a4f9728c91c7d0df28e0231cb0a80e8..2c151bb0a8baaa6ea8d9d190ed2b705feb42a032 100644
--- a/DDCore/src/segmentations/CartesianGridXZ.cpp
+++ b/DDCore/src/segmentations/CartesianGridXZ.cpp
@@ -6,7 +6,6 @@
  */
 
 #include "DDSegmentation/CartesianGridXZ.h"
-#include "DD4hep/Factories.h"
 
 namespace dd4hep {
 namespace DDSegmentation {
@@ -83,4 +82,6 @@ std::vector<double> CartesianGridXZ::cellDimensions(const CellID&) const {
 } /* namespace DDSegmentation */
 } /* namespace dd4hep */
 
-DECLARE_SEGMENTATION(CartesianGridXZ,create_segmentation<dd4hep::DDSegmentation::CartesianGridXZ>)
+// This is done DDCore/src/plugins/ReadoutSegmentations.cpp so the plugin is not part of libDDCore
+// needs also #include "DD4hep/Factories.h"
+// DECLARE_SEGMENTATION(CartesianGridXZ,create_segmentation<dd4hep::DDSegmentation::CartesianGridXZ>)
diff --git a/DDCore/src/segmentations/CartesianGridYZ.cpp b/DDCore/src/segmentations/CartesianGridYZ.cpp
index 1ff9bb5c93218c1c877d0e24b69d562bd2cb94cd..47204dcd77215af7a5e685a927b09b20e582355e 100644
--- a/DDCore/src/segmentations/CartesianGridYZ.cpp
+++ b/DDCore/src/segmentations/CartesianGridYZ.cpp
@@ -7,7 +7,6 @@
  *     by Christian Grefe, CERN
  */
 #include "DDSegmentation/CartesianGridYZ.h"
-#include "DD4hep/Factories.h"
 
 namespace dd4hep {
 namespace DDSegmentation {
@@ -81,4 +80,6 @@ std::vector<double> CartesianGridYZ::cellDimensions(const CellID&) const {
 } /* namespace DDSegmentation */
 } /* namespace dd4hep */
 
-DECLARE_SEGMENTATION(CartesianGridYZ,create_segmentation<dd4hep::DDSegmentation::CartesianGridYZ>)
+// This is done DDCore/src/plugins/ReadoutSegmentations.cpp so the plugin is not part of libDDCore
+// needs also #include "DD4hep/Factories.h"
+// DECLARE_SEGMENTATION(CartesianGridYZ,create_segmentation<dd4hep::DDSegmentation::CartesianGridYZ>)
diff --git a/DDCore/src/segmentations/CartesianStripX.cpp b/DDCore/src/segmentations/CartesianStripX.cpp
index a105b93553bf2bd0f8d31d4451c87a83b6114f8f..f0e3743c32a8af534059dd0359e53412775f5a48 100644
--- a/DDCore/src/segmentations/CartesianStripX.cpp
+++ b/DDCore/src/segmentations/CartesianStripX.cpp
@@ -7,7 +7,6 @@
  */
 
 #include "DDSegmentation/CartesianStripX.h"
-#include "DD4hep/Factories.h"
 
 namespace dd4hep {
 namespace DDSegmentation {
@@ -65,4 +64,7 @@ std::vector<double> CartesianStripX::cellDimensions(const CellID&) const {
 
 }  // namespace DDSegmentation
 } /* namespace dd4hep */
-DECLARE_SEGMENTATION(CartesianStripX,create_segmentation<dd4hep::DDSegmentation::CartesianStripX>)
+
+// This is done DDCore/src/plugins/ReadoutSegmentations.cpp so the plugin is not part of libDDCore
+// needs also #include "DD4hep/Factories.h"
+// DECLARE_SEGMENTATION(CartesianStripX,create_segmentation<dd4hep::DDSegmentation::CartesianStripX>)
diff --git a/DDCore/src/segmentations/CartesianStripY.cpp b/DDCore/src/segmentations/CartesianStripY.cpp
index e2403f11e7aeb6209c9ab8db3647bc0efeada55d..9366f8e263407bd6bb8f61a86d293c539dcdf815 100644
--- a/DDCore/src/segmentations/CartesianStripY.cpp
+++ b/DDCore/src/segmentations/CartesianStripY.cpp
@@ -7,7 +7,6 @@
  */
 
 #include "DDSegmentation/CartesianStripY.h"
-#include "DD4hep/Factories.h"
 
 namespace dd4hep {
 namespace DDSegmentation {
@@ -65,4 +64,7 @@ std::vector<double> CartesianStripY::cellDimensions(const CellID&) const {
 
 }  // namespace DDSegmentation
 } /* namespace dd4hep */
-DECLARE_SEGMENTATION(CartesianStripY,create_segmentation<dd4hep::DDSegmentation::CartesianStripY>)
+
+// This is done DDCore/src/plugins/ReadoutSegmentations.cpp so the plugin is not part of libDDCore
+// needs also #include "DD4hep/Factories.h"
+// DECLARE_SEGMENTATION(CartesianStripY,create_segmentation<dd4hep::DDSegmentation::CartesianStripY>)
diff --git a/DDCore/src/segmentations/CartesianStripZ.cpp b/DDCore/src/segmentations/CartesianStripZ.cpp
index d2e27ac6dbf47970f55e3133893dc4abdbc06bfa..3b57882998db3f9d068d8f56ee6a2a7a000c22f2 100644
--- a/DDCore/src/segmentations/CartesianStripZ.cpp
+++ b/DDCore/src/segmentations/CartesianStripZ.cpp
@@ -7,7 +7,6 @@
  */
 
 #include "DDSegmentation/CartesianStripZ.h"
-#include "DD4hep/Factories.h"
 
 namespace dd4hep {
 namespace DDSegmentation {
@@ -65,4 +64,7 @@ std::vector<double> CartesianStripZ::cellDimensions(const CellID&) const {
 
 }  // namespace DDSegmentation
 } /* namespace dd4hep */
-DECLARE_SEGMENTATION(CartesianStripZ,create_segmentation<dd4hep::DDSegmentation::CartesianStripZ>)
+
+// This is done DDCore/src/plugins/ReadoutSegmentations.cpp so the plugin is not part of libDDCore
+// needs also #include "DD4hep/Factories.h"
+// DECLARE_SEGMENTATION(CartesianStripZ,create_segmentation<dd4hep::DDSegmentation::CartesianStripZ>)
diff --git a/DDCore/src/segmentations/GridPhiEta.cpp b/DDCore/src/segmentations/GridPhiEta.cpp
index 7a8b0e5415a72b3a30f400d05e3f7365ed2745cd..aeb75490c2775db1585332076a323618ef31cc60 100644
--- a/DDCore/src/segmentations/GridPhiEta.cpp
+++ b/DDCore/src/segmentations/GridPhiEta.cpp
@@ -1,6 +1,5 @@
 #include "DDSegmentation/GridPhiEta.h"
 #include "DDSegmentation/SegmentationUtil.h"
-#include "DD4hep/Factories.h"
 
 namespace dd4hep {
 namespace DDSegmentation {
@@ -59,4 +58,6 @@ double GridPhiEta::phi(const CellID& cID) const {
 }
 }
 
-DECLARE_SEGMENTATION(GridPhiEta,create_segmentation<dd4hep::DDSegmentation::GridPhiEta>)
+// This is done DDCore/src/plugins/ReadoutSegmentations.cpp so the plugin is not part of libDDCore
+// needs also #include "DD4hep/Factories.h"
+// DECLARE_SEGMENTATION(GridPhiEta,create_segmentation<dd4hep::DDSegmentation::GridPhiEta>)
diff --git a/DDCore/src/segmentations/GridRPhiEta.cpp b/DDCore/src/segmentations/GridRPhiEta.cpp
index dafff9915708e0dbf5d4ead9aefd4986c4095562..7da109951604a86e3de9e04c178782ba7c8ff947 100644
--- a/DDCore/src/segmentations/GridRPhiEta.cpp
+++ b/DDCore/src/segmentations/GridRPhiEta.cpp
@@ -1,6 +1,5 @@
 #include "DDSegmentation/GridRPhiEta.h"
 #include "DDSegmentation/SegmentationUtil.h"
-#include "DD4hep/Factories.h"
 
 namespace dd4hep {
 namespace DDSegmentation {
@@ -51,4 +50,6 @@ double GridRPhiEta::r(const CellID& cID) const {
 }
 }
 
-DECLARE_SEGMENTATION(GridRPhiEta,create_segmentation<dd4hep::DDSegmentation::GridRPhiEta>)
+// This is done DDCore/src/plugins/ReadoutSegmentations.cpp so the plugin is not part of libDDCore
+// needs also #include "DD4hep/Factories.h"
+// DECLARE_SEGMENTATION(GridRPhiEta,create_segmentation<dd4hep::DDSegmentation::GridRPhiEta>)
diff --git a/DDCore/src/segmentations/MegatileLayerGridXY.cpp b/DDCore/src/segmentations/MegatileLayerGridXY.cpp
index bbe7c6c5a5582e687f0d40f5779a4541fa8610d5..d9582f589f2dce4050fcef10045dfd6dcc142111 100644
--- a/DDCore/src/segmentations/MegatileLayerGridXY.cpp
+++ b/DDCore/src/segmentations/MegatileLayerGridXY.cpp
@@ -7,7 +7,6 @@
  */
 
 #include "DDSegmentation/MegatileLayerGridXY.h"
-#include "DD4hep/Factories.h"
 
 #undef NDEBUG
 #include <cmath>
@@ -188,4 +187,6 @@ namespace dd4hep {
   } /* namespace DDSegmentation */
 } /* namespace dd4hep */
 
-DECLARE_SEGMENTATION(MegatileLayerGridXY,create_segmentation<dd4hep::DDSegmentation::MegatileLayerGridXY>)
+// This is done DDCore/src/plugins/ReadoutSegmentations.cpp so the plugin is not part of libDDCore
+// needs also #include "DD4hep/Factories.h"
+// DECLARE_SEGMENTATION(MegatileLayerGridXY,create_segmentation<dd4hep::DDSegmentation::MegatileLayerGridXY>)
diff --git a/DDCore/src/segmentations/MultiSegmentation.cpp b/DDCore/src/segmentations/MultiSegmentation.cpp
index bdc3b93eeca0e812d22f1c9b74dd6d789fba1314..2e522472d29068c1015145367808ef85f38530ec 100644
--- a/DDCore/src/segmentations/MultiSegmentation.cpp
+++ b/DDCore/src/segmentations/MultiSegmentation.cpp
@@ -6,7 +6,6 @@
  */
 
 #include "DDSegmentation/MultiSegmentation.h"
-#include "DD4hep/Factories.h"
 
 #include <iomanip>
 #include <stdexcept>
@@ -103,4 +102,6 @@ namespace dd4hep {
   } /* namespace DDSegmentation */
 } /* namespace dd4hep */
 
-DECLARE_SEGMENTATION(MultiSegmentation,create_segmentation<dd4hep::DDSegmentation::MultiSegmentation>)
+// This is done DDCore/src/plugins/ReadoutSegmentations.cpp so the plugin is not part of libDDCore
+// needs also #include "DD4hep/Factories.h"
+// DECLARE_SEGMENTATION(MultiSegmentation,create_segmentation<dd4hep::DDSegmentation::MultiSegmentation>)
diff --git a/DDCore/src/segmentations/NoSegmentation.cpp b/DDCore/src/segmentations/NoSegmentation.cpp
index 67ba05b6936ae04e05d41429ff55d0293a7f1882..2c4257f0cf40283ed744b7b00ba7d597d8713ca3 100644
--- a/DDCore/src/segmentations/NoSegmentation.cpp
+++ b/DDCore/src/segmentations/NoSegmentation.cpp
@@ -6,7 +6,6 @@
  */
 
 #include "DDSegmentation/NoSegmentation.h"
-#include "DD4hep/Factories.h"
 
 namespace dd4hep {
   namespace DDSegmentation {
@@ -40,4 +39,7 @@ namespace dd4hep {
 
   } /* namespace DDSegmentation */
 } /* namespace dd4hep */
-DECLARE_SEGMENTATION(NoSegmentation,create_segmentation<dd4hep::DDSegmentation::NoSegmentation>)
+
+// This is done DDCore/src/plugins/ReadoutSegmentations.cpp so the plugin is not part of libDDCore
+// needs also #include "DD4hep/Factories.h"
+// DECLARE_SEGMENTATION(NoSegmentation,create_segmentation<dd4hep::DDSegmentation::NoSegmentation>)
diff --git a/DDCore/src/segmentations/PolarGridRPhi.cpp b/DDCore/src/segmentations/PolarGridRPhi.cpp
index 112af39bdff022caa4ec5d65c660b18dc3c0da1a..8ad9473612129316f88b56e0c174216024e107a5 100644
--- a/DDCore/src/segmentations/PolarGridRPhi.cpp
+++ b/DDCore/src/segmentations/PolarGridRPhi.cpp
@@ -6,7 +6,6 @@
  */
 
 #include "DDSegmentation/PolarGridRPhi.h"
-#include "DD4hep/Factories.h"
 
 namespace dd4hep {
 namespace DDSegmentation {
@@ -85,4 +84,7 @@ std::vector<double> PolarGridRPhi::cellDimensions(const CellID& cID) const {
 
 } /* namespace DDSegmentation */
 } /* namespace dd4hep */
-DECLARE_SEGMENTATION(PolarGridRPhi,create_segmentation<dd4hep::DDSegmentation::PolarGridRPhi>)
+
+// This is done DDCore/src/plugins/ReadoutSegmentations.cpp so the plugin is not part of libDDCore
+// needs also #include "DD4hep/Factories.h"
+// DECLARE_SEGMENTATION(PolarGridRPhi,create_segmentation<dd4hep::DDSegmentation::PolarGridRPhi>)
diff --git a/DDCore/src/segmentations/PolarGridRPhi2.cpp b/DDCore/src/segmentations/PolarGridRPhi2.cpp
index 6bbf5aa71c3fc05bad27f1563b9e63db7151be80..adf4a4446d522d137de17176b548058046137478 100644
--- a/DDCore/src/segmentations/PolarGridRPhi2.cpp
+++ b/DDCore/src/segmentations/PolarGridRPhi2.cpp
@@ -6,7 +6,6 @@
  */
 
 #include "DDSegmentation/PolarGridRPhi2.h"
-#include "DD4hep/Factories.h"
 
 namespace dd4hep {
 namespace DDSegmentation {
@@ -107,4 +106,7 @@ std::vector<double> PolarGridRPhi2::cellDimensions(const CellID& cID) const {
 
 } /* namespace DDSegmentation */
 } /* namespace dd4hep */
-DECLARE_SEGMENTATION(PolarGridRPhi2,create_segmentation<dd4hep::DDSegmentation::PolarGridRPhi2>)
+
+// This is done DDCore/src/plugins/ReadoutSegmentations.cpp so the plugin is not part of libDDCore
+// needs also #include "DD4hep/Factories.h"
+// DECLARE_SEGMENTATION(PolarGridRPhi2,create_segmentation<dd4hep::DDSegmentation::PolarGridRPhi2>)
diff --git a/DDCore/src/segmentations/ProjectiveCylinder.cpp b/DDCore/src/segmentations/ProjectiveCylinder.cpp
index 6a4e021d961f384a3b59be73c6cf03f6c935cbf1..3819e4baded06cd655864356fb16427ae93ad502 100644
--- a/DDCore/src/segmentations/ProjectiveCylinder.cpp
+++ b/DDCore/src/segmentations/ProjectiveCylinder.cpp
@@ -7,7 +7,6 @@
 
 #include "DDSegmentation/ProjectiveCylinder.h"
 #include "DDSegmentation/SegmentationUtil.h"
-#include "DD4hep/Factories.h"
 
 #define _USE_MATH_DEFINES
 #include <cmath>
@@ -85,4 +84,6 @@ double ProjectiveCylinder::phi(const CellID& cID) const {
 } /* namespace DDSegmentation */
 } /* namespace dd4hep */
 
-DECLARE_SEGMENTATION(ProjectiveCylinder,create_segmentation<dd4hep::DDSegmentation::ProjectiveCylinder>)
+// This is done DDCore/src/plugins/ReadoutSegmentations.cpp so the plugin is not part of libDDCore
+// needs also #include "DD4hep/Factories.h"
+// DECLARE_SEGMENTATION(ProjectiveCylinder,create_segmentation<dd4hep::DDSegmentation::ProjectiveCylinder>)
diff --git a/DDCore/src/segmentations/TiledLayerGridXY.cpp b/DDCore/src/segmentations/TiledLayerGridXY.cpp
index 36ac181553f022f7579287080fbd75b2bd643e82..32d9432feb30efc144b4b10c6b3ff733bae0e662 100644
--- a/DDCore/src/segmentations/TiledLayerGridXY.cpp
+++ b/DDCore/src/segmentations/TiledLayerGridXY.cpp
@@ -6,7 +6,6 @@
  */
 
 #include "DDSegmentation/TiledLayerGridXY.h"
-#include "DD4hep/Factories.h"
 
 // C/C++ includes
 #include <algorithm>
@@ -127,4 +126,6 @@ std::vector<double> TiledLayerGridXY::cellDimensions(const CellID&) const {
 } /* namespace DDSegmentation */
 } /* namespace dd4hep */
 
-DECLARE_SEGMENTATION(TiledLayerGridXY,create_segmentation<dd4hep::DDSegmentation::TiledLayerGridXY>)
+// This is done DDCore/src/plugins/ReadoutSegmentations.cpp so the plugin is not part of libDDCore
+// needs also #include "DD4hep/Factories.h"
+// DECLARE_SEGMENTATION(TiledLayerGridXY,create_segmentation<dd4hep::DDSegmentation::TiledLayerGridXY>)
diff --git a/DDCore/src/segmentations/WaferGridXY.cpp b/DDCore/src/segmentations/WaferGridXY.cpp
index 52c9a4e08df7546e13727eaddc34e38634d3ce3d..608c975497568693428be2e9ad63e6111295f2f7 100644
--- a/DDCore/src/segmentations/WaferGridXY.cpp
+++ b/DDCore/src/segmentations/WaferGridXY.cpp
@@ -6,7 +6,6 @@
  */
 
 #include "DDSegmentation/WaferGridXY.h"
-#include "DD4hep/Factories.h"
 
 namespace dd4hep {
 namespace DDSegmentation {
@@ -130,4 +129,6 @@ std::vector<double> WaferGridXY::cellDimensions(const CellID&) const {
 } /* namespace DDSegmentation */
 } /* namespace dd4hep */
 
-DECLARE_SEGMENTATION(WaferGridXY,create_segmentation<dd4hep::DDSegmentation::WaferGridXY>)
+// This is done DDCore/src/plugins/ReadoutSegmentations.cpp so the plugin is not part of libDDCore
+// needs also #include "DD4hep/Factories.h"
+// DECLARE_SEGMENTATION(WaferGridXY,create_segmentation<dd4hep::DDSegmentation::WaferGridXY>)