diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 2bea5123022c047325bdb11d6e81d6c1422e7708..40be5007b05fe7d2a2bea7d8276e1e0273ca8e6a 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -13,8 +13,6 @@ stages:
 
 # List global variables
 variables:
-  CMAKE_DEPS_BASE_ARGS: -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=../install
-  CMAKE_BASE_ARGS: -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=../install
   # also, 'CMAKE_EXTRA_FLAGS' will be specified by specific jobs when needed, and used by job templates like 'geomodel-job'
   GIT_SUBMODULE_STRATEGY: recursive
 
@@ -43,43 +41,20 @@ workflow:
     - export CPPFLAGS="-I/usr/local/opt/expat/include"
     - export PATH="/usr/local/opt/qt5/bin:$PATH" # to make Qt5 discoverable by CMake
 
-
-# general Ubuntu job template
-.ubuntu-template-job-base: &ubuntu-job-base
-  image: gitlab-registry.cern.ch/geomodeldev/ubuntu-geant4-image:main-base
-  rules:
-    - when: always
-
-
 # NOTE
 # The Ubuntu package 'nlohmann-json-dev' is version 2.x, too old for us.
 # Thus, for GeoModelVisualization (GMEX), we now build nlohmann_json as part
 # of the build, by using the 'standalone' job only
 .ubuntu-template-job-default: &ubuntu-job
-  <<: *ubuntu-job-base
+  image: gitlab-registry.cern.ch/geomodeldev/ubuntu-geant4-image:main-base
+  rules:
+    - when: always
 
 
 # TEMPLATES FOR BUILDING PACKAGES
 .geomodel-build-template: &geomodel-job
-  variables:
-    CMAKE_ARGS: ${CMAKE_BASE_ARGS}
   script:
-    - echo "PWD; LS" # CI debug only
-    - pwd; ls # CI debug only
-    - ls ../ # CI debug only
-    - ls ../../ # CI debug only
-    - cmake --version # CI debug only
-    - mkdir build
-    - cd build
-    - echo "CMAKE_ARGS -- ${CMAKE_ARGS}"
-    - echo "CMAKE_CONFIG_FLAGS -- ${CMAKE_CONFIG_FLAGS}"
-    - echo "CMAKE_EXTRA_FLAGS -- ${CMAKE_EXTRA_FLAGS}"
-    - cmake ${CMAKE_ARGS} ${CMAKE_CONFIG_FLAGS} ${CMAKE_EXTRA_FLAGS} .. # the CMAKE_EXTRA_FLAGS are set by specific jobs when needed
-    - cmake --build . -- -j2
-    - cmake --build . -- install
-    - pwd; ls # CI debug only
-    - ls ../ # CI debug only
-    - ls ../../ # CI debug only
+    - CI/compile_GeoModel.sh
   artifacts:
     paths:
       - install
@@ -133,8 +108,7 @@ debug-job:
 #   <<: *geomodel-job
 #   stage: step-A
 #   variables:
-#     CMAKE_ARGS: ${CMAKE_BASE_ARGS}
-#     CMAKE_EXTRA_FLAGS: -DGEOMODEL_BUILD_TOOLS=TRUE
+#     CMAKE_CONFIG_FLAGS: -DGEOMODEL_BUILD_TOOLS=TRUE
 
 # mac-gm-visualization:
 #   <<: *macos-job
@@ -142,8 +116,7 @@ debug-job:
 #   stage: step-C
 #   needs: ["mac-coin", "mac-soqt"]
 #   variables:
-#     CMAKE_ARGS: ${CMAKE_BASE_ARGS}
-#     CMAKE_EXTRA_FLAGS: -DGEOMODEL_BUILD_VISUALIZATION=TRUE
+#     CMAKE_CONFIG_FLAGS: -DGEOMODEL_BUILD_VISUALIZATION=TRUE
 
 # mac-gm-examples:
 #   <<: *macos-job
@@ -151,7 +124,6 @@ debug-job:
 #   stage: step-A
 #   # needs: ["mac-config"]
 #   variables:
-#     CMAKE_ARGS: ${CMAKE_BASE_ARGS}
 #     CMAKE_CONFIG_FLAGS: -DGEOMODEL_BUILD_EXAMPLES=TRUE
 
 # mac-gm-gmg4:
@@ -159,7 +131,6 @@ debug-job:
 #   <<: *geomodel-job
 #   stage: step-A
 #   variables:
-#     CMAKE_ARGS: ${CMAKE_BASE_ARGS}
 #     CMAKE_CONFIG_FLAGS: -DGEOMODEL_BUILD_GEOMODELG4=TRUE
 
 # mac-gm-examples-gmg4:
@@ -167,7 +138,6 @@ debug-job:
 #   <<: *geomodel-job
 #   stage: step-A
 #   variables:
-#     CMAKE_ARGS: ${CMAKE_BASE_ARGS}
 #     CMAKE_CONFIG_FLAGS: -DGEOMODEL_BUILD_EXAMPLES_W_GEANT4=TRUE
 
 # mac-gm-fullsimlight:
@@ -175,7 +145,6 @@ debug-job:
 #   <<: *geomodel-job
 #   stage: step-A
 #   variables:
-#     CMAKE_ARGS: ${CMAKE_BASE_ARGS}
 #     CMAKE_CONFIG_FLAGS: -DGEOMODEL_BUILD_FULLSIMLIGHT=TRUE
 
 # mac-gm-fsl:
@@ -183,8 +152,7 @@ debug-job:
 #   <<: *geomodel-job
 #   stage: step-A
 #   variables:
-#     CMAKE_ARGS: ${CMAKE_BASE_ARGS}
-#     CMAKE_EXTRA_FLAGS: -DGEOMODEL_BUILD_FSL=TRUE
+#     CMAKE_CONFIG_FLAGS: -DGEOMODEL_BUILD_FSL=TRUE
 
 # mac-gm-all:
 #   <<: *macos-job
@@ -192,15 +160,13 @@ debug-job:
 #   stage: step-C
 #   needs: ["mac-coin", "mac-soqt"]
 #   variables:
-#     CMAKE_ARGS: ${CMAKE_BASE_ARGS}
-#     CMAKE_EXTRA_FLAGS: -DGEOMODEL_BUILD_ALL=TRUE
+#     CMAKE_CONFIG_FLAGS: -DGEOMODEL_BUILD_ALL=TRUE
   
 # mac-gm-atlasextras:
 #   <<: *macos-job
 #   <<: *geomodel-job
 #   stage: step-A
 #   variables:
-#     CMAKE_ARGS: ${CMAKE_BASE_ARGS}
 #     CMAKE_CONFIG_FLAGS: -DGEOMODEL_BUILD_ATLASEXTENSIONS=TRUE
 
 
@@ -213,15 +179,12 @@ ubu-gm-base:
   <<: *ubuntu-job
   <<: *geomodel-job
   stage: step-A
-  variables:
-    CMAKE_ARGS: ${CMAKE_BASE_ARGS}
 
 ubu-gm-tools:
   <<: *ubuntu-job
   <<: *geomodel-job
   stage: step-A
   variables:
-    CMAKE_ARGS: ${CMAKE_BASE_ARGS}
     CMAKE_CONFIG_FLAGS: -DGEOMODEL_BUILD_TOOLS=TRUE
 
 
@@ -230,7 +193,6 @@ ubu-gm-visualization:
   <<: *geomodel-job
   stage: step-C
   variables:
-    CMAKE_ARGS: ${CMAKE_BASE_ARGS}
     CMAKE_CONFIG_FLAGS: -DGEOMODEL_BUILD_VISUALIZATION=TRUE
 
 ubu-gm-examples:
@@ -238,64 +200,61 @@ ubu-gm-examples:
   <<: *geomodel-job
   stage: step-A
   variables:
-    CMAKE_ARGS: ${CMAKE_BASE_ARGS}
     CMAKE_CONFIG_FLAGS: -DGEOMODEL_BUILD_EXAMPLES=TRUE
 
 
 ubu-gm-examples-gmg4:
   <<: *ubuntu-job
   <<: *geomodel-job
-  stage: step-B
+  stage: step-A
   variables:
-    CMAKE_ARGS: ${CMAKE_BASE_ARGS}
     CMAKE_CONFIG_FLAGS: -DGEOMODEL_BUILD_EXAMPLES_W_GEANT4=TRUE
 
 ubu-gm-gmg4:
   <<: *ubuntu-job
   <<: *geomodel-job
-  stage: step-B
+  stage: step-A
   variables:
-    CMAKE_ARGS: ${CMAKE_BASE_ARGS}
     CMAKE_CONFIG_FLAGS: -DGEOMODEL_BUILD_GEOMODELG4=TRUE
 
 
 ubu-gm-fullsimlight:
   <<: *ubuntu-job
   <<: *geomodel-job
-  stage: step-B
+  stage: step-A
   variables:
-    CMAKE_ARGS: ${CMAKE_BASE_ARGS}
     CMAKE_CONFIG_FLAGS: -DGEOMODEL_BUILD_FULLSIMLIGHT=TRUE
 
 
 ubu-gm-fsl:
   <<: *ubuntu-job
   <<: *geomodel-job
-  stage: step-B
+  stage: step-A
   variables:
-    CMAKE_ARGS: ${CMAKE_BASE_ARGS}
     CMAKE_CONFIG_FLAGS: -DGEOMODEL_BUILD_FSL=TRUE
 
 
 ubu-gm-all:
   <<: *ubuntu-job
   <<: *geomodel-job
-  stage: step-C
+  stage: step-A
   variables:
-    CMAKE_ARGS: ${CMAKE_BASE_ARGS}
     CMAKE_CONFIG_FLAGS: -DGEOMODEL_BUILD_ALL=TRUE
+  script: 
+     - CI/compile_GeoModel.sh
+     - mv ${CI_PROJECT_DIR}/../build ./
   artifacts:
     paths:
-    - build
+      - build
+      - install
     expire_in: 30 minutes
 
 
 ubu-gm-atlasextras:
   <<: *ubuntu-job
   <<: *geomodel-job
-  stage: step-B
+  stage: step-A
   variables:
-    CMAKE_ARGS: ${CMAKE_BASE_ARGS}
     CMAKE_CONFIG_FLAGS: -DGEOMODEL_BUILD_ATLASEXTENSIONS=TRUE
 
 #TODO: this does not work properly. Needs some work...
@@ -305,9 +264,7 @@ ubu-gm-atlasextras:
 #   stage: step-C
 #   variables:
 #     XERCESC_VERSION: 3.2.3
-#     CMAKE_ARGS: ${CMAKE_BASE_ARGS}
-#     CMAKE_CONFIG_FLAGS: -DGEOMODEL_BUILD_FULLSIMLIGHT=TRUE
-#     CMAKE_EXTRA_FLAGS: -DGEOMODEL_USE_BUILTIN_JSON=TRUE -DXercesC_INCLUDE_DIR=../install/xerces-c-${XERCESC_VERSION}/include -DXercesC_LIBRARY=../install/xerces-c-${XERCESC_VERSION}/lib/libxerces-c.dylib
+#     CMAKE_CONFIG_FLAGS: -DGEOMODEL_BUILD_FULLSIMLIGHT=TRUE -DGEOMODEL_USE_BUILTIN_JSON=TRUE -DXercesC_INCLUDE_DIR=../install/xerces-c-${XERCESC_VERSION}/include -DXercesC_LIBRARY=../install/xerces-c-${XERCESC_VERSION}/lib/libxerces-c.dylib
 #   rules:
 #     - when: manual
 
@@ -329,11 +286,7 @@ ubu-single-gmbase:
   variables:
       CMAKE_ARGS: ${CMAKE_BASE_ARGS}
   script:
-    - mkdir build
-    - cd build
-    - cmake ${CMAKE_ARGS} .. # the CMAKE_EXTRA_FLAGS are set by specific jobs when needed
-    - cmake --build . -- -j2
-    - cmake --build . -- install
+    - CI/compile_GeoModel.sh
   artifacts:
     paths:
       - install
@@ -344,13 +297,10 @@ ubu-single-gmtools:
   stage: step-B
   needs: ["ubu-single-gmbase"]
   variables:
-      CMAKE_ARGS: ${CMAKE_BASE_ARGS}
+      SOURCE_DIR: "${CI_PROJECT_DIR}/GeoModelTools"
   script:
-    - mkdir build
-    - cd build
-    - cmake ${CMAKE_ARGS} ../GeoModelTools # the CMAKE_EXTRA_FLAGS are set by specific jobs when needed
-    - cmake --build . -- -j2
-    - cmake --build . -- install
+    - CI/compile_GeoModel.sh
+
   artifacts:
     paths:
       - install
@@ -361,13 +311,9 @@ ubu-single-gmviz:
   stage: step-C
   needs: ["ubu-single-gmbase"]
   variables:
-      CMAKE_ARGS: ${CMAKE_BASE_ARGS}
+      SOURCE_DIR: "${CI_PROJECT_DIR}/GeoModelVisualization"
   script:
-    - mkdir build
-    - cd build
-    - cmake ${CMAKE_ARGS} ../GeoModelVisualization # the CMAKE_EXTRA_FLAGS are set by specific jobs when needed
-    - cmake --build . -- -j2
-    - cmake --build . -- install
+    - CI/compile_GeoModel.sh
   artifacts:
     paths:
       - install
@@ -378,13 +324,9 @@ ubu-single-gmg4:
   stage: step-C
   needs: ["ubu-single-gmbase"]
   variables:
-      CMAKE_ARGS: ${CMAKE_BASE_ARGS}
+      SOURCE_DIR: "${CI_PROJECT_DIR}/GeoModelG4"
   script:
-    - mkdir build
-    - cd build
-    - cmake ${CMAKE_ARGS} ../GeoModelG4 # the CMAKE_EXTRA_FLAGS are set by specific jobs when needed
-    - cmake --build . -- -j2
-    - cmake --build . -- install
+    - CI/compile_GeoModel.sh
   artifacts:
     paths:
       - install
@@ -395,13 +337,9 @@ ubu-single-gmfullsimlight:
   stage: step-D
   needs: ["ubu-single-gmg4"]
   variables:
-      CMAKE_ARGS: ${CMAKE_BASE_ARGS}
+      SOURCE_DIR: "${CI_PROJECT_DIR}/FullSimLight"
   script:
-    - mkdir build
-    - cd build
-    - cmake ${CMAKE_ARGS} ../FullSimLight # the CMAKE_EXTRA_FLAGS are set by specific jobs when needed
-    - cmake --build . -- -j2
-    - cmake --build . -- install
+    - CI/compile_GeoModel.sh
   artifacts:
     paths:
       - install
@@ -412,15 +350,20 @@ ubu-single-gmfsl:
   stage: step-E
   needs: ["ubu-single-gmfullsimlight"]
   variables:
-      CMAKE_ARGS: ${CMAKE_BASE_ARGS}
+      SOURCE_DIR: ${CMAKE_PROJECT_DIR}/FSL
   script:
-    - mkdir build
-    - cd build
-    - cmake ${CMAKE_ARGS} ../FSL # the CMAKE_EXTRA_FLAGS are set by specific jobs when needed
-    - cmake --build . -- -j2
-    - cmake --build . -- install
-
+    - CI/compile_GeoModel.sh
 
+ubu-geomodelatlas:
+  <<: *ubuntu-job
+  stage: step-B
+  needs : ["ubu-gm-all"]
+  variables:
+      SOURCE_DIR: ${CMAKE_PROJECT_DIR}/GeoModelATLAS
+  script:
+    - git clone https://${EOS_ACCOUNT_USERNAME}:${GEOMODEL_READ_ACCESS}@gitlab.cern.ch/atlas/geomodelatlas/GeoModelATLAS.git
+    - ls -lh
+    - CI/compile_GeoModel.sh
 #####################
 ### Documentation ###
 #####################
@@ -569,7 +512,8 @@ tests-ubuntu:
   needs: ["ubu-gm-all"]
   stage: test
   script:
-    - cd build
+    - mv build ../
+    - cd ../build
     - ctest #--output-on-failure
   
 include:
diff --git a/CI/compile_GeoModel.sh b/CI/compile_GeoModel.sh
new file mode 100755
index 0000000000000000000000000000000000000000..864edae958d69eda794d586a9c988b71d41b08c3
--- /dev/null
+++ b/CI/compile_GeoModel.sh
@@ -0,0 +1,55 @@
+#!/bin/bash
+
+echo "Compile GeoModelCore with flags: "
+echo "   **** CMAKE_CONFIG_FLAGS: ${CMAKE_CONFIG_FLAGS}"
+echo "   **** CMAKE_EXTRA_FLAGS: ${CMAKE_EXTRA_FLAGS}"
+
+if [ -z "${SOURCE_DIR}" ]; then
+    SOURCE_DIR="${PWD}"
+fi
+
+echo "${EOS_ACCOUNT_PASSWORD}" | kinit ${EOS_ACCOUNT_USERNAME}@CERN.CH
+echo "SOURCE_DIR=\"${SOURCE_DIR}\""
+echo "BUILD_DIR=\"${CI_PROJECT_DIR}/../build\""
+echo "INSTALL_DIR=\"${CI_PROJECT_DIR}/install\""
+
+BUILD_DIR="${CI_PROJECT_DIR}/../build"
+INSTALL_DIR="${CI_PROJECT_DIR}/install"
+
+mkdir -p ${BUILD_DIR}
+mkdir -p ${INSTALL_DIR}
+ls -lh ${INSTALL_DIR}
+echo "mkdir -p ${BUILD_DIR}"
+echo "mkdir -p ${INSTALL_DIR}"
+
+cd ${BUILD_DIR}
+echo "cd ${BUILD_DIR}"
+
+export LD_LIBRARY_PATH="${INSTALL_DIR}/lib:${LD_LIBRARY_PATH}" 
+export ROOT_INCLUDE_PATH="${INSTALL_DIR}/include:${ROOT_INCLUDE_PATH}"
+export PATH="${INSTALL_DIR}/bin:${PATH}"
+
+echo "export LD_LIBRARY_PATH=\"${INSTALL_DIR}/lib:${LD_LIBRARY_PATH}\""
+echo "export ROOT_INCLUDE_PATH=\"${INSTALL_DIR}/include:${ROOT_INCLUDE_PATH}\""
+echo "export PATH=\"${INSTALL_DIR}/bin:${PATH}\""
+
+
+cmake ${CMAKE_CONFIG_FLAGS} \
+    -DCMAKE_CXX_FLAGS="${CMAKE_EXTRA_FLAGS}" \
+    -DCMAKE_BUILD_TYPE=Debug \
+    -DCMAKE_INSTALL_PREFIX=${INSTALL_DIR} \
+     ${SOURCE_DIR}
+
+echo "cmake ${CMAKE_CONFIG_FLAGS} \
+    -DCMAKE_CXX_FLAGS=\"${CMAKE_EXTRA_FLAGS}\" \
+    -DCMAKE_BUILD_TYPE=Debug \
+    -DCMAKE_INSTALL_PREFIX=${INSTALL_DIR} \
+     ${SOURCE_DIR}"
+
+
+make -j4
+
+make install
+
+ls -lh ${INSTALL_DIR}
+