diff --git a/.github/workflows/linux-eic-shell.yml b/.github/workflows/linux-eic-shell.yml
index 044091faa4723d0b3ace1fdbe4c1605d36d08c10..33beb726e7b036ce6e056df45ea1421f8364e865 100644
--- a/.github/workflows/linux-eic-shell.yml
+++ b/.github/workflows/linux-eic-shell.yml
@@ -3,16 +3,165 @@ name: linux-eic-shell
 on: [push, pull_request]
 
 jobs:
-  build-and-check-overlap:
+  xmllint:
     runs-on: ubuntu-latest
     steps:
     - uses: actions/checkout@v2
+    - run: |
+        sudo apt-get update
+        sudo apt-get install -y libxml2-utils
+        xmllint *.xml ip6/*.xml > /dev/null
+
+  build-test:
+    runs-on: ubuntu-latest
+    needs: xmllint
+    steps:
+    - uses: actions/checkout@v2
     - uses: cvmfs-contrib/github-action-cvmfs@v2
     - uses: eic/run-cvmfs-osg-eic-shell@main
       with:
         platform-release: "jug_xl:nightly"
         run: |
-          cmake -B build -S . -DCMAKE_INSTALL_PREFIX=install
+          PREFIX=install
+          cmake -B build -S . -DCMAKE_INSTALL_PREFIX=${PREFIX}
           cmake --build build -- install
-          export LD_LIBRARY_PATH=${PWD}/install/lib:${LD_LIBRARY_PATH}
-          checkOverlaps -c install/share/ip6/eic_ip6.xml
+    - uses: actions/upload-artifact@v3
+      with:
+        name: install
+        path: install/
+        if-no-files-found: error
+
+  convert-to-tgeo:
+    runs-on: ubuntu-latest
+    needs: build-test
+    steps:
+    - uses: actions/checkout@v2
+    - uses: actions/download-artifact@v3
+      with:
+        name: install
+        path: install/
+    - uses: cvmfs-contrib/github-action-cvmfs@v2
+    - uses: eic/run-cvmfs-osg-eic-shell@main
+      with:
+        platform-release: "jug_xl:nightly"
+        setup: install/setup.sh
+        run: |
+          mkdir -p geo
+          dd_web_display --output geo/${BEAMLINE}.root ${BEAMLINE_PATH}/${BEAMLINE}.xml
+    - uses: actions/upload-artifact@v3
+      with:
+        name: ip6.root
+        path: geo/
+        if-no-files-found: error
+
+  dump-constants:
+    runs-on: ubuntu-latest
+    needs: build-test
+    steps:
+    - uses: actions/checkout@v2
+    - uses: actions/download-artifact@v3
+      with:
+        name: install
+        path: install/
+    - uses: cvmfs-contrib/github-action-cvmfs@v2
+    - uses: eic/run-cvmfs-osg-eic-shell@main
+      with:
+        platform-release: "jug_xl:nightly"
+        setup: install/setup.sh
+        run: |
+          mkdir -p doc
+          npdet_info dump ${BEAMLINE_PATH}/${BEAMLINE}.xml | tee doc/constants.out
+    - uses: actions/upload-artifact@v3
+      with:
+        name: constants.out
+        path: doc/constants.out
+        if-no-files-found: error
+
+  check-overlap-tgeo:
+    runs-on: ubuntu-latest
+    needs: build-test
+    steps:
+    - uses: actions/checkout@v2
+    - uses: actions/download-artifact@v3
+      with:
+        name: install
+        path: install/
+    - uses: cvmfs-contrib/github-action-cvmfs@v2
+    - uses: eic/run-cvmfs-osg-eic-shell@main
+      with:
+        platform-release: "jug_xl:nightly"
+        setup: install/setup.sh
+        run: |
+          mkdir -p doc
+          checkOverlaps -c ${BEAMLINE_PATH}/${BEAMLINE_CONFIG}.xml | tee doc/overlap_check_tgeo.out
+          noverlaps="$(grep -c ovlp doc/overlap_check_tgeo.out || true)"
+          if [[ "${noverlaps}" -gt "0" ]] ; then echo "${noverlaps} overlaps found!" && false ; fi
+
+  check-overlap-geant4:
+    runs-on: ubuntu-latest
+    needs: build-test
+    steps:
+    - uses: actions/checkout@v2
+    - uses: actions/download-artifact@v3
+      with:
+        name: install
+        path: install/
+    - uses: cvmfs-contrib/github-action-cvmfs@v2
+    - uses: eic/run-cvmfs-osg-eic-shell@main
+      with:
+        platform-release: "jug_xl:nightly"
+        setup: install/setup.sh
+        run: |
+          mkdir -p doc
+          python scripts/checkOverlaps.py -c ${BEAMLINE_PATH}/${BEAMLINE_CONFIG}.xml | tee doc/overlap_check_geant4.out
+          noverlaps="$(grep -c GeomVol1002 doc/overlap_check_geant4.out || true)"
+          if [[ "${noverlaps}" -gt "0" ]] ; then echo "${noverlaps} overlaps found!" && false ; fi
+
+  generate-prim-file:
+    runs-on: ubuntu-latest
+    needs: build-test
+    steps:
+    - uses: actions/checkout@v2
+    - uses: actions/download-artifact@v3
+      with:
+        name: install
+        path: install/
+    - uses: cvmfs-contrib/github-action-cvmfs@v2
+    - uses: eic/run-cvmfs-osg-eic-shell@main
+      with:
+        platform-release: "jug_xl:nightly"
+        setup: install/setup.sh
+        run: |
+          bin/generate_prim_file -o prim -D -t detector_view -c ip6.xml
+    - uses: actions/upload-artifact@v3
+      with:
+        name: detector_view.prim
+        path: prim/detector_view.prim
+        if-no-files-found: error
+        retention-days: 1
+
+  dawn-view:
+    runs-on: ubuntu-latest
+    needs: generate-prim-file
+    strategy:
+      matrix:
+        view: [view50]
+      fail-fast: false
+    steps:
+    - uses: actions/checkout@v2
+    - uses: actions/download-artifact@v3
+      with:
+        name: detector_view.prim
+        path: prim/
+    - uses: cvmfs-contrib/github-action-cvmfs@v2
+    - uses: eic/run-cvmfs-osg-eic-shell@main
+      with:
+        platform-release: "jug_xl:nightly"
+        run: |
+          mkdir -p images
+          bin/make_dawn_views -i prim/detector_view.prim -t ${{ matrix.view }} -d views/${{ matrix.view }} -D
+    - uses: actions/upload-artifact@v3
+      with:
+        name: ${{ matrix.view }}
+        path: images/
+        if-no-files-found: error
diff --git a/.github/workflows/macos-lcg.yml b/.github/workflows/macos-lcg.yml
deleted file mode 100644
index 593c84513e57714d1816ccfc327bf36ec65d2301..0000000000000000000000000000000000000000
--- a/.github/workflows/macos-lcg.yml
+++ /dev/null
@@ -1,22 +0,0 @@
-name: macos-lcg
-
-on: [push, pull_request]
-
-jobs:
-  macos-1015:
-    runs-on: macos-10.15
-    strategy:
-      fail-fast: false
-      matrix:
-        LCG: ["LCG_101/x86_64-mac1015-clang120-opt"]
-    steps:
-    - uses: actions/checkout@v2
-    - uses: cvmfs-contrib/github-action-cvmfs@v2
-      with:
-        cvmfs_repositories: 'sft.cern.ch,geant4.cern.ch'
-    - uses: aidasoft/run-lcg-view@v1
-      with:
-        release-platform: ${{ matrix.LCG }}
-        run: |
-          cmake -B build -S .
-          cmake --build build -- install