diff --git a/.github/workflows/linux-lcg.yml b/.github/workflows/linux-lcg.yml
index 8a1ed8a5edfbe285cb805a09bf29eac58d713d87..73a8ccc9c1eb0807e1838f636211b74f6e899826 100644
--- a/.github/workflows/linux-lcg.yml
+++ b/.github/workflows/linux-lcg.yml
@@ -20,7 +20,7 @@ jobs:
         release-platform: ${{ matrix.LCG }}
         run: |
           cmake -B build -S .
-          cmake --build build install
+          cmake --build build -- install
 
   ubuntu-2204:
     runs-on: ubuntu-22.04
@@ -39,4 +39,4 @@ jobs:
         release-platform: ${{ matrix.LCG }}
         run: |
           cmake -B build -S .
-          cmake --build build install
+          cmake --build build -- install
diff --git a/.github/workflows/macos-lcg.yml b/.github/workflows/macos-lcg.yml
index 6a92d0eefd5aa907b1af0d7b9eff85a5fae620cf..9d10bb50bdfde1b0fde71eaaf8d9424e1f9c1e18 100644
--- a/.github/workflows/macos-lcg.yml
+++ b/.github/workflows/macos-lcg.yml
@@ -20,4 +20,4 @@ jobs:
         release-platform: ${{ matrix.LCG }}
         run: |
           cmake -B build -S .
-          cmake --build build install
+          cmake --build build -- install
diff --git a/src/BarrelBarDetectorWithSideFrame_geo.cpp b/src/BarrelBarDetectorWithSideFrame_geo.cpp
index be8e88832b519ce129225edbca51cc44b23771ac..921a0ec0c8a06cfbee24ce56cad5fe6a221792c0 100644
--- a/src/BarrelBarDetectorWithSideFrame_geo.cpp
+++ b/src/BarrelBarDetectorWithSideFrame_geo.cpp
@@ -85,7 +85,7 @@ static Ref_t create_BarrelBarDetectorWithSideFrame(Detector& description, xml_h
     // Get frame width, as it impacts the main module for being built. We
     // construct the actual frame structure later (once we know the module width)
     double frame_width = 0;
-    if (x_mod.hasChild("frame")) {
+    if (x_mod.hasChild(_U(frame))) {
       xml_comp_t m_frame = x_mod.child(_U(frame));
       frame_width        = m_frame.width();
     }
@@ -132,7 +132,7 @@ static Ref_t create_BarrelBarDetectorWithSideFrame(Detector& description, xml_h
       thickness_so_far += x_comp.thickness();
     }
     // Now add-on the frame
-    if (x_mod.hasChild("frame")) {
+    if (x_mod.hasChild(_U(frame))) {
       xml_comp_t m_frame         = x_mod.child(_U(frame));
       double     frame_thickness = getAttrOrDefault<double>(m_frame, _U(thickness), total_thickness);
 
diff --git a/src/BarrelCalorimeter_geo.cpp b/src/BarrelCalorimeter_geo.cpp
index 103c7ef01b3553d282ce8a05bc7fb49ee9b72311..1f9e6442c1edc8841ef472b80e1ce60f26b37063 100644
--- a/src/BarrelCalorimeter_geo.cpp
+++ b/src/BarrelCalorimeter_geo.cpp
@@ -36,7 +36,7 @@ static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector s
   double        dphi              = (2 * M_PI / nsides);
   double        hphi              = dphi / 2;
   double        support_thickness = 0.0;
-  if (x_staves.hasChild("support")) {
+  if (x_staves.hasChild(_U(support))) {
     support_thickness = getAttrOrDefault(x_staves.child(_U(support)), _U(thickness), 5.0 * cm);
   }
   double           mod_z    = layering.totalThickness() + support_thickness;
@@ -79,7 +79,7 @@ static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector s
 
   Solid support_frame_s;
   // optional stave support
-  if (x_staves.hasChild("support")) {
+  if (x_staves.hasChild(_U(support))) {
     xml_comp_t x_support = x_staves.child(_U(support));
     // FIXME is_inside_support is read but not supported
     // is the support on the inside surface?
diff --git a/src/BarrelTrackerWithFrame_geo.cpp b/src/BarrelTrackerWithFrame_geo.cpp
index c0b071c7cdd2a2dbc5de9fcf776c216bd69fabf6..e582a5d74bdee0900e04b60f87b9cad1513770c3 100644
--- a/src/BarrelTrackerWithFrame_geo.cpp
+++ b/src/BarrelTrackerWithFrame_geo.cpp
@@ -94,7 +94,7 @@ static Ref_t create_BarrelTrackerWithFrame(Detector& description, xml_h e, Sensi
     xml_dim_t   pos(x_support.child(_U(position), false));
     xml_dim_t   rot(x_support.child(_U(rotation), false));
     Solid       support_solid;
-    if (x_support.hasChild("shape")) {
+    if (x_support.hasChild(_U(shape))) {
       xml_comp_t shape(x_support.child(_U(shape)));
       string     shape_type = shape.typeStr();
       support_solid         = xml::createShape(description, shape_type, shape);
@@ -145,7 +145,7 @@ static Ref_t create_BarrelTrackerWithFrame(Detector& description, xml_h e, Sensi
     m_vol.setVisAttributes(description.visAttributes(x_mod.visStr()));
 
     // Optional module frame.
-    if (x_mod.hasChild("frame")) {
+    if (x_mod.hasChild(_U(frame))) {
       xml_comp_t m_frame = x_mod.child(_U(frame));
       // xmleles[m_nam]  = x_mod;
       double frame_thickness = m_frame.thickness();
diff --git a/src/DRICH_geo.cpp b/src/DRICH_geo.cpp
index a0471d155013c838f2a6b10ad486e429967ed1a0..1a2bd4f2a616b71511ba4b2141c58e763fc9d672 100644
--- a/src/DRICH_geo.cpp
+++ b/src/DRICH_geo.cpp
@@ -149,7 +149,7 @@ static Ref_t createDetector(Detector& desc, xml::Handle_t handle, SensitiveDetec
   double boreDelta  = vesselRmin1 - vesselRmin0;
   double snoutDelta = vesselRmax1 - vesselRmax0;
   Cone   vesselSnout(snoutLength / 2.0, vesselRmin0, vesselRmax0, vesselRmin0 + boreDelta * snoutLength / vesselLength,
-                   vesselRmax1);
+                     vesselRmax1);
   Cone   gasvolSnout(
       /* note: `gasvolSnout` extends a bit into the tank, so it touches `gasvolTank`
        * - the extension distance is equal to the tank `windowThickness`, so the
@@ -298,7 +298,7 @@ static Ref_t createDetector(Detector& desc, xml::Handle_t handle, SensitiveDetec
     auto sensorSphPos = Position(sensorSphCenterX, 0., sensorSphCenterZ) + originFront;
 
     // sensitivity
-    if (!debugOptics || debugOpticsMode==3)
+    if (!debugOptics || debugOpticsMode == 3)
       sensorVol.setSensitiveDetector(sens);
 
     // SENSOR MODULE LOOP ------------------------
@@ -392,7 +392,7 @@ static Ref_t createDetector(Detector& desc, xml::Handle_t handle, SensitiveDetec
           sensorPV.addPhysVolID("sector", isec).addPhysVolID("module", imod);
           DetElement sensorDE(det, Form("sensor_de%d_%d", isec, imod), imodsec);
           sensorDE.setPlacement(sensorPV);
-          if (!debugOptics || debugOpticsMode==3) {
+          if (!debugOptics || debugOpticsMode == 3) {
             SkinSurface sensorSkin(desc, sensorDE, Form("sensor_optical_surface%d", isec), sensorSurf, sensorVol);
             sensorSkin.isValid();
           };
@@ -515,7 +515,7 @@ static Ref_t createDetector(Detector& desc, xml::Handle_t handle, SensitiveDetec
   }; // END SECTOR LOOP //////////////////////////
 
   return det;
-};
+}
 
 // clang-format off
 DECLARE_DETELEMENT(ecce_DRICH, createDetector)
diff --git a/src/PFRICH_geo.cpp b/src/PFRICH_geo.cpp
index 1fae39d6293219fe658e20b8837b8de1ef20f707..86bc6a9cb32f2a0284643bc0679514d9ced006f5 100644
--- a/src/PFRICH_geo.cpp
+++ b/src/PFRICH_geo.cpp
@@ -266,7 +266,7 @@ static Ref_t createDetector(Detector& desc, xml::Handle_t handle, SensitiveDetec
   // END SENSOR MODULE LOOP ------------------------
   //
   // Add service material if desired
-  if (detElem.child("sensors").hasChild("services")) {
+  if (detElem.child("sensors").hasChild(_Unicode(services))) {
     xml_comp_t x_service = detElem.child("sensors").child(_Unicode(services));
     Assembly   service_vol("services");
     service_vol.setVisAttributes(desc, x_service.visStr());
@@ -306,7 +306,7 @@ static Ref_t createDetector(Detector& desc, xml::Handle_t handle, SensitiveDetec
   det.setPlacement(vesselPV);
 
   return det;
-};
+}
 
 // clang-format off
 DECLARE_DETELEMENT(ecce_PFRICH, createDetector)
diff --git a/src/ScFiCalorimeter_geo.cpp b/src/ScFiCalorimeter_geo.cpp
index 24db6a4c5f1f7c8aa74a87f20d18e8da44159538..ade6ae8228641b7b9bdafe0708c9c8d1bb218734 100644
--- a/src/ScFiCalorimeter_geo.cpp
+++ b/src/ScFiCalorimeter_geo.cpp
@@ -115,7 +115,7 @@ std::tuple<Volume, Position> build_module(const Detector& desc, const xml::Compo
     modVol.setVisAttributes(desc.visAttributes(mod_x.attr<std::string>(_Unicode(vis))));
   }
 
-  if (mod_x.hasChild("fiber")) {
+  if (mod_x.hasChild(_Unicode(fiber))) {
     auto   fiber_x  = mod_x.child(_Unicode(fiber));
     auto   fr       = fiber_x.attr<double>(_Unicode(radius));
     auto   fsx      = fiber_x.attr<double>(_Unicode(spacex));
diff --git a/src/TrapEndcapTracker_geo.cpp b/src/TrapEndcapTracker_geo.cpp
index 2fcfeeccd09c552c8bdaab85e9dd30b304968365..ba951969094e6420d188aa0bc96a0e7a00b0d328 100644
--- a/src/TrapEndcapTracker_geo.cpp
+++ b/src/TrapEndcapTracker_geo.cpp
@@ -85,7 +85,7 @@ static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector s
     xml_dim_t   pos(x_support.child(_U(position), false));
     xml_dim_t   rot(x_support.child(_U(rotation), false));
     Solid       support_solid;
-    if (x_support.hasChild("shape")) {
+    if (x_support.hasChild(_U(shape))) {
       xml_comp_t shape(x_support.child(_U(shape)));
       string     shape_type = shape.typeStr();
       support_solid         = xml::createShape(description, shape_type, shape);
@@ -134,7 +134,7 @@ static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector s
     m_volume.setVisAttributes(description.visAttributes(x_mod.visStr()));
 
     Solid frame_s;
-    if (x_mod.hasChild("frame")) {
+    if (x_mod.hasChild(_U(frame))) {
       // build frame from trd (assumed to be smaller)
       xml_comp_t m_frame         = x_mod.child(_U(frame));
       xml_comp_t f_pos           = m_frame.child(_U(position));