diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 2be74b2af78da4ac7a11ffd4751c0d133934ab4a..964d0ef5006bb20393a6b1084519425991e9d629 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,5 +1,9 @@
 include:
   - 'https://gitlab.iri.upc.edu/mobile_robotics/wolf_projects/wolf_lib/wolf/-/raw/$WOLF_CORE_BRANCH/.license_template_ci.yml'
+  - 'https://gitlab.iri.upc.edu/mobile_robotics/wolf_projects/wolf_lib/wolf/-/raw/$WOLF_CORE_BRANCH/.yaml_schema_cpp.yml'
+  - 'https://gitlab.iri.upc.edu/mobile_robotics/wolf_projects/wolf_lib/wolf/-/raw/$WOLF_CORE_BRANCH/.clang_format.yml'
+  - 'https://gitlab.iri.upc.edu/mobile_robotics/wolf_projects/wolf_lib/wolf/-/raw/$WOLF_CORE_BRANCH/.preliminaries.yml'
+
 
 stages:
   - license
@@ -20,118 +24,15 @@ stages:
   ## PRINT VARIABLES
   - *print_variables_definition
 
-  ## Install ssh-agent if not already installed, it is required by Docker.
-  ## (change apt-get to yum if you use an RPM-based image)
-  - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
-
-  ## Run ssh-agent (inside the build environment)
-  - eval $(ssh-agent -s)
-
-  ## Add the SSH key stored in SSH_PRIVATE_KEY variable to the agent store
-  ## We're using tr to fix line endings which makes ed25519 keys work
-  ## without extra base64 encoding.
-  ## https://gitlab.com/gitlab-examples/ssh-private-key/issues/1#note_48526556
-  - mkdir -p ~/.ssh
-  - chmod 700 ~/.ssh  
-  - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null
-  # - echo "$SSH_KNOWN_HOSTS" > $HOME/.ssh/known_hosts
-  - ssh-keyscan -H -p 2202 gitlab.iri.upc.edu >> $HOME/.ssh/known_hosts
-
-  # update apt
-  - apt-get update
-
-  # create 'ci_deps' folder (if not exists)
-  - mkdir -pv ci_deps
-
-# .license_header_template: &license_header_definition
-#   - cd $CI_PROJECT_DIR
-
-#   # configure git
-#   - export CI_NEW_BRANCH=ci_processing$RANDOM
-#   - echo creating new temporary branch... $CI_NEW_BRANCH
-#   - git config --global user.email "${CI_EMAIL}"
-#   - git config --global user.name "${CI_USERNAME}"
-#   - git checkout -b $CI_NEW_BRANCH # temporary branch
-
-#   # download license script
-#   - if [ -f /ci_deps/license_manager.sh ]; then
-#   -   echo "File license_manager.sh already exists."
-#   - else
-#   -   echo "Downloading file license_manager.sh..."
-#   -   wget -P /ci_deps  https://gitlab.iri.upc.edu/mobile_robotics/wolf_projects/wolf_lib/wolf/-/raw/$WOLF_CORE_BRANCH/wolf_scripts/license_manager.sh
-#   - fi
-
-#   # license headers
-#   - export CURRENT_YEAR=$( date +'%Y' )
-#   - echo "current year:" ${CURRENT_YEAR}
-#   - if [ -f license_header_${CURRENT_YEAR}.txt ]; then
-#       # add license headers to new files
-#   -   echo "File license_header_${CURRENT_YEAR}.txt already exists. License headers are assumed to be updated. Adding headers to new files..."
-#   -   source /ci_deps/license_manager.sh --add --path=. --config-path=. --exclude=ci_deps
-#   - else
-#       # remove license headers of all files
-#   -   source /ci_deps/license_manager.sh --remove --path=. --config-path=. --exclude=ci_deps
-#       # update license header
-#   -   export PREV_YEAR=$(( CURRENT_YEAR-1 ))
-#   -   echo "Creating new file license_header_${CURRENT_YEAR}.txt..."
-#   -   git mv license_header_${PREV_YEAR}.txt license_header_${CURRENT_YEAR}.txt
-#   -   sed -i "s/${PREV_YEAR}/${PREV_YEAR},${CURRENT_YEAR}/g" license_header_${CURRENT_YEAR}.txt
-#       # add new license headers to all files
-#   -   source /ci_deps/license_manager.sh --add --path=. --config-path=. --exclude=ci_deps
-#   - fi
-
-#   # push changes (if any)
-#   - if git commit -a -m "[skip ci] license headers added or modified" ; then
-#   -   git remote set-url --push origin "ssh://git@gitlab.iri.upc.edu:2202/${CI_PROJECT_PATH}.git"
-#   -   git push origin $CI_NEW_BRANCH:${CI_COMMIT_REF_NAME}
-#   - else
-#   -   echo "No changes, nothing to commit!"
-#   - fi
-
-.install_yamlschemacpp_template: &install_yamlschemacpp_definition
-  - cd ${CI_PROJECT_DIR}/ci_deps
-  - if [ -d yaml-schema-cpp ]; then
-  -   echo "directory yaml-schema-cpp exists"
-  -   cd yaml-schema-cpp
-  -   git checkout main
-  -   git pull
-  - else
-  -   git clone -b main ssh://git@gitlab.iri.upc.edu:2202/labrobotica/algorithms/yaml-schema-cpp.git
-  -   cd yaml-schema-cpp
-  - fi
-  - mkdir -pv build
-  - cd build
-  - cmake -DCMAKE_BUILD_TYPE=release -DBUILD_TESTS=OFF ..
-  - make -j$(nproc)
-  - make install
-  - ldconfig
-
-.install_wolf_template: &install_wolf_definition
-  - cd ${CI_PROJECT_DIR}/ci_deps
-  - if [ -d wolf ]; then
-  -   echo "directory wolf exists"
-  -   cd wolf
-  -   git checkout devel
-  -   git pull
-  -   git checkout $WOLF_CORE_BRANCH
-  -   git pull
-  - else
-  -   git clone -b $WOLF_CORE_BRANCH ssh://git@gitlab.iri.upc.edu:2202/mobile_robotics/wolf_projects/wolf_lib/wolf.git
-  -   cd wolf
-  - fi
-  - mkdir -pv build
-  - cd build
-  - cmake -DCMAKE_BUILD_TYPE=release -DBUILD_DEMOS=OFF -DBUILD_TESTS=OFF ..
-  - make -j$(nproc)
-  - make install
+  ## preliminaries script (ssh, apt update and mkdir ci_deps)
+  - !reference [.preliminaries_script]
 
 .install_wolfimu_template: &install_wolfimu_definition
   - cd ${CI_PROJECT_DIR}/ci_deps
   - if [ -d imu ]; then
   -   echo "directory imu exists"
   -   cd imu
-  -   git checkout devel
-  -   git pull
+  -   git fetch --all
   -   git checkout $WOLF_IMU_BRANCH
   -   git pull
   - else
@@ -163,6 +64,29 @@ license_headers:
     # - *license_header_definition
     - !reference [.license_header_script]
 
+############ CLANG FORMAT ############
+clang_format:
+  stage: clang
+  image: labrobotica/wolf_deps:20.04
+  before_script:  
+    - *preliminaries_definition
+  script: 
+    - !reference [.clang_format_script]
+
+############ YAML TEMPLATES GENERATION ############
+yaml_templates_generation:
+  stage: yaml_templates
+  image: labrobotica/wolf_deps:20.04
+  cache:
+    - key: yamlschemacpp-focal
+      paths:
+      - ci_deps/yaml-schema-cpp/
+  before_script:  
+    - *preliminaries_definition
+    - !reference [.install_yamlschemacpp_script]
+  script:
+    - !reference [.generate_yaml_templates_script]
+
 ############ UBUNTU 18.04 TESTS ############
 build_and_test:bionic:
   image: labrobotica/wolf_deps:18.04
@@ -179,8 +103,8 @@ build_and_test:bionic:
       - ci_deps/imu/
   before_script:
     - *preliminaries_definition
-    - *install_yamlschemacpp_definition
-    - *install_wolf_definition
+    - !reference [.install_yamlschemacpp_script]
+    - !reference [.install_core_script]
     - *install_wolfimu_definition
     - ldconfig # update links (shared libraries)
   script:
@@ -202,8 +126,8 @@ build_and_test:focal:
       - ci_deps/imu/
   before_script:
     - *preliminaries_definition
-    - *install_yamlschemacpp_definition
-    - *install_wolf_definition
+    - !reference [.install_yamlschemacpp_script]
+    - !reference [.install_core_script]
     - *install_wolfimu_definition
     - ldconfig # update links (shared libraries)
   script: