diff --git a/DDCore/include/DD4hep/AlignmentData.h b/DDCore/include/DD4hep/AlignmentData.h
index 1c5517547ede822b8cbe6e2f30eb64e56e80679c..8c4f49a584801ad3fb6eabcd07a7b99053bb6a5e 100644
--- a/DDCore/include/DD4hep/AlignmentData.h
+++ b/DDCore/include/DD4hep/AlignmentData.h
@@ -195,6 +195,7 @@ namespace dd4hep {
     Position detectorToLocal(const Double_t det[3]) const
     {  return detectorToLocal(Position(det[0],det[1],det[2]));                        }
   };
+  std::ostream& operator << (std::ostream& s, const AlignmentData& data);
+  std::ostream& operator << (std::ostream& s, const Delta& data);
 }         /* End namespace dd4hep               */
-std::ostream& operator << (std::ostream& s, const dd4hep::AlignmentData& data);
 #endif    /* DD4HEP_ALIGMENTS_ALIGNMENTDATA_H   */
diff --git a/DDCore/include/DD4hep/ConditionsData.h b/DDCore/include/DD4hep/ConditionsData.h
index 9b0f49566413b431b56feef07528ff0837cfd676..9f106c6972321ef6e38149632e2ef8d9dac73328 100644
--- a/DDCore/include/DD4hep/ConditionsData.h
+++ b/DDCore/include/DD4hep/ConditionsData.h
@@ -123,7 +123,7 @@ namespace dd4hep {
         throw std::runtime_error("AbstractMap: Failed to access non-existing item:"+item);
       }
     };
-
+    std::ostream& operator << (std::ostream& s, const AbstractMap& data);
   } /* End namespace cond             */
 } /* End namespace dd4hep                   */
 #endif    /* DD4HEP_DDCORE_CONDITIONSDATA_H    */
diff --git a/DDCore/include/DD4hep/DetElement.h b/DDCore/include/DD4hep/DetElement.h
index 7d75f6ea25b6223c046fcf647cd0f513fafe3e60..4316648b70449970732eef96b3e45492206daf33 100644
--- a/DDCore/include/DD4hep/DetElement.h
+++ b/DDCore/include/DD4hep/DetElement.h
@@ -447,6 +447,7 @@ namespace dd4hep {
     /// Access to the constant survey alignment information
     Alignment survey() const;
   };
+  std::ostream& operator << (std::ostream& s, const DetElement& data);
 } /* End namespace dd4hep        */
 
 #include "DD4hep/AlignmentData.h"
diff --git a/DDCore/include/DD4hep/OpaqueData.h b/DDCore/include/DD4hep/OpaqueData.h
index ac51863edd2a12d2075ab4b6af6d470fc6e5c74a..ed538b79b0a7b1a504b8b6426e9d9b971c0e39dc 100644
--- a/DDCore/include/DD4hep/OpaqueData.h
+++ b/DDCore/include/DD4hep/OpaqueData.h
@@ -136,6 +136,8 @@ namespace dd4hep {
     /// Set data value
     void assign(const void* ptr,const std::type_info& typ);
   };
+  /// print OpaqueData object
+  std::ostream& operator<< (std::ostream& s, const OpaqueDataBlock& data);
 }      /* End namespace dd4hep */
 
 #include "DD4hep/BasicGrammar.h"
diff --git a/DDCore/src/AlignmentData.cpp b/DDCore/src/AlignmentData.cpp
index 25944ca67db16ae3124a36788695cc434ca875df..57fa9b16565a29815c3c22dc5a10de9145c70184 100644
--- a/DDCore/src/AlignmentData.cpp
+++ b/DDCore/src/AlignmentData.cpp
@@ -84,7 +84,7 @@ void Delta::computeMatrix(TGeoHMatrix& tr_delta)  const   {
 }
 
 /// print alignment delta object
-ostream& operator << (ostream& s, const Delta& data)   {
+ostream& dd4hep::operator<< (ostream& s, const Delta& data)   {
   string res;
   stringstream str;
   str << "[" << data.translation << "," << data.rotation << "," << data.pivot << "]";
@@ -131,7 +131,7 @@ AlignmentData& AlignmentData::operator=(const AlignmentData& copy)  {
 }
 
 /// print Conditions object
-ostream& operator << (ostream& s, const AlignmentData& data)   {
+ostream& dd4hep::operator << (ostream& s, const AlignmentData& data)   {
   stringstream str;
   str << data.delta;
   return s << str.str();
diff --git a/DDCore/src/AlignmentsCalculator.cpp b/DDCore/src/AlignmentsCalculator.cpp
index b186591ea1415cc58bdcaef1fe677101a45a1618..90f44e11b07a768aa5b9ec6c48f26a90e7e5ee6e 100644
--- a/DDCore/src/AlignmentsCalculator.cpp
+++ b/DDCore/src/AlignmentsCalculator.cpp
@@ -325,8 +325,6 @@ size_t AlignmentsCalculator::extract_deltas(DetElement start,
 
 // The map is used by the Alignments calculator
 typedef AlignmentsCalculator::OrderedDeltas OrderedMap;
-// Have only a weak reference here!
-inline std::ostream& operator << (std::ostream& s, const DetElement& )   { return s; }
 
 #include "Parsers/Parsers.h"
 DD4HEP_DEFINE_PARSER_DUMMY(OrderedMap)
diff --git a/DDCore/src/ConditionsData.cpp b/DDCore/src/ConditionsData.cpp
index 6742827ed0560af26c5dcb828f85edcb3293f894..507e90407618d503f6ee84ccf998c33d21c29563 100644
--- a/DDCore/src/ConditionsData.cpp
+++ b/DDCore/src/ConditionsData.cpp
@@ -20,7 +20,7 @@
 using namespace dd4hep::cond;
 
 /// print Conditions object
-std::ostream& operator << (std::ostream& s, const AbstractMap& data)   {
+std::ostream& dd4hep::cond::operator<< (std::ostream& s, const AbstractMap& data)   {
   struct _Print {
     void operator()(const AbstractMap::Params::value_type& obj)  const {
       if ( obj.second.typeInfo() == typeid(AbstractMap) )  {
diff --git a/DDCore/src/DetElement.cpp b/DDCore/src/DetElement.cpp
index aa0eedd27b8920fe1e7e7a9df7a0222db5f952cd..55f93755f0c66e85ce59aaba556af667f9f5c755 100644
--- a/DDCore/src/DetElement.cpp
+++ b/DDCore/src/DetElement.cpp
@@ -490,3 +490,5 @@ void* SensitiveDetector::extension(unsigned long long int k) const {
 void* SensitiveDetector::extension(unsigned long long int k, bool alert) const {
   return access()->extension(k, alert);
 }
+
+std::ostream& dd4hep::operator<< (std::ostream& s, const DetElement& )   { return s; }
diff --git a/DDCore/src/OpaqueData.cpp b/DDCore/src/OpaqueData.cpp
index 992b9f8c3133c7a965fcadb155224126439416fd..97368d273fc4f3b0859c7a84549675ce6328c969 100644
--- a/DDCore/src/OpaqueData.cpp
+++ b/DDCore/src/OpaqueData.cpp
@@ -196,7 +196,7 @@ void OpaqueDataBlock::assign(const void* ptr, const type_info& typ)  {
 }
 
 /// print Conditions object
-std::ostream& operator << (std::ostream& s, const OpaqueDataBlock& data)   {
+std::ostream& dd4hep::operator<< (std::ostream& s, const OpaqueDataBlock& data)   {
   s << data.str();
   return s;
 }