diff --git a/CMakeLists.txt b/CMakeLists.txt
index fd800f939887c7fd5c84c6dc76db2218a5307f74..b8d979fe309bd5092dc251af0f52ddf034c011bd 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -23,6 +23,8 @@ option(DD4HEP_USE_LCIO    "Build lcio extensions"    OFF)
 option(BUILD_TESTING      "Enable and build tests"   ON)
 option(DD4HEP_USE_CXX11   "Build DD4hep using c++11" OFF)
 option(DD4HEP_USE_CXX14   "Build DD4hep using c++14" OFF)
+option(CMAKE_MACOSX_RPATH "Build with rpath on macos" ON)
+ 
 #
 #-----------------------------------------------------------------------------------------------------
 #
@@ -134,6 +136,7 @@ ENDIF()
 # ----for APPLE scripts have to set the DYLD_LIBRARY_PATH 
 if( APPLE ) 
   set( USE_DYLD 1)
+  set(CMAKE_MACOSX_RPATH 1)
 endif()
 
 configure_file(cmake/thisdd4hep.csh bin/thisdd4hep.csh @ONLY)
diff --git a/DDCore/include/DD4hep/Alignments.h b/DDCore/include/DD4hep/Alignments.h
index 20b39cc63596a8e328762ba0484eda7704536790..aec4263ee70cf848d0fdc064329b0a19d783b861 100644
--- a/DDCore/include/DD4hep/Alignments.h
+++ b/DDCore/include/DD4hep/Alignments.h
@@ -87,7 +87,8 @@ namespace DD4hep {
       /// Constructor to be used when reading the already parsed object
       template <typename Q> Alignment(const Handle<Q>& e) : Handle<Object>(e)  {}
       /// Object constructor for pure alignment objects
-      template <typename Q=Interna::AlignmentNamedObject> Alignment(const std::string& name);
+      //      template <typename Q=Interna::AlignmentNamedObject> Alignment(const std::string& name);
+      Alignment(const std::string& name) ;
 
       /// Hash code generation from input string
       static key_type hashCode(const char* value);
@@ -147,7 +148,8 @@ namespace DD4hep {
       /// Constructor to be used when reading the already parsed object
       template <typename Q> AlignmentCondition(const Handle<Q>& e) : Handle<Object>(e) {}
       /// Object constructor for pure alignment objects
-      template <typename Q=Object> AlignmentCondition(const std::string& name);
+      //      template <typename Q=Object> AlignmentCondition(const std::string& name);
+      AlignmentCondition(const std::string& name) ;
 
       /** Interval of validity            */
       /// Access the IOV type
diff --git a/DDCore/src/Alignments.cpp b/DDCore/src/Alignments.cpp
index df7d24f12923693c49580c3e71bb8ef1794e2b3b..e532e0b16b039e7a781b2f985d695f68d4b3ee2e 100644
--- a/DDCore/src/Alignments.cpp
+++ b/DDCore/src/Alignments.cpp
@@ -26,24 +26,32 @@ using namespace DD4hep::Alignments;
 
 /// Namespace for the AIDA detector description toolkit
 namespace DD4hep {
-
+  
   /// Namespace for the alignment part of the AIDA detector description toolkit
   namespace Alignments {
-
-    /// Initializing constructor to create a new object (Specialized for AlignmentNamedObject)
-    template <> Alignment::Alignment<Alignment::Object>(const string& nam) {
-      assign(new Alignment::Object(), nam, "alignment");
-    }
-
+    
+    // // /// Initializing constructor to create a new object (Specialized for AlignmentNamedObject)
+    // // template <> Alignment::Alignment<Alignment::Object>(const string& nam) {
+    // //   assign(new Alignment::Object(), nam, "alignment");
+    // // }
+    
+    // // /// Initializing constructor to create a new object (Specialized for AlignmentNamedObject)
+    // // template <> Alignment::Alignment<Interna::AlignmentNamedObject>(const string& nam) {
+    // //   assign(new Interna::AlignmentNamedObject(nam, "alignment"), nam, "alignment");
+    // // }
     /// Initializing constructor to create a new object (Specialized for AlignmentNamedObject)
-    template <> Alignment::Alignment<Interna::AlignmentNamedObject>(const string& nam) {
+    Alignment::Alignment(const string& nam) {
       assign(new Interna::AlignmentNamedObject(nam, "alignment"), nam, "alignment");
     }
-
+    
     /// Initializing constructor to create a new object (Specialized for AlignmentConditionObject)
-    template <> AlignmentCondition::AlignmentCondition<AlignmentCondition::Object>(const string& nam) {
-      assign(new Object(nam, "alignment"), nam, "alignment");
+    AlignmentCondition::AlignmentCondition(const string& nam) {
+      assign(new AlignmentCondition::Object(nam, "alignment"), nam, "alignment");
     }
+    // // /// Initializing constructor to create a new object (Specialized for AlignmentConditionObject)
+    // // template <> AlignmentCondition::AlignmentCondition<AlignmentCondition::Object>(const string& nam) {
+    // //   assign(new Object(nam, "alignment"), nam, "alignment");
+    // // }
   } /* End namespace Aligments                  */
 } /* End namespace DD4hep                       */