diff --git a/.ci/Jenkinsfile b/.ci/Jenkinsfile
index 4fa1b5fec8aec45482ac05b0d9e54cae6dcddb66..016a8aedd687fb7beafde765d1533a7adf1c79d5 100755
--- a/.ci/Jenkinsfile
+++ b/.ci/Jenkinsfile
@@ -78,67 +78,67 @@ pipeline {
 				}
 				stage('Validate environment') {
 					steps {
-						sh "yashchiki/.ci/validate_environment.sh"
+						sh "yashchiki/lib/yashchiki/validate_environment.sh"
 					}
 				}
 				stage('Dump Meta Info') {
 					steps {
-						sh "yashchiki/.ci/dump_meta_info.sh"
-						sh "yashchiki/.ci/notify_gerrit.sh -m 'Build containing this change started..'"
+						sh "yashchiki/bin/yashchiki_dump_meta_info.sh"
+						sh "yashchiki/bin/yashchiki_notify_gerrit.sh -m 'Build containing this change started..'"
 					}
 				}
 				stage('Spack Fetch') {
 					steps {
 						script {
 							try {
-								sh "yashchiki/.ci/fetch.sh"
+								sh "yashchiki/lib/yashchiki/fetch.sh"
 							}
 							catch (Throwable t) {
 								archiveArtifacts "errors_concretization.log"
 								throw t
 							}
-							spec_folder_in_container = sh(script: "yashchiki/.ci/get_host_env.sh SPEC_FOLDER_IN_CONTAINER", returnStdout: true).trim()
+							spec_folder_in_container = sh(script: "yashchiki/lib/yashchiki/get_host_env.sh SPEC_FOLDER_IN_CONTAINER", returnStdout: true).trim()
 							archiveArtifacts(artifacts: "sandboxes/*/$spec_folder_in_container/*.yaml", allowEmptyArchive: true)
 						}
 					}
 				}
 				stage('Deploy utilities') {
 					steps {
-						sh "yashchiki/.ci/deploy_utilities.sh"
+						sh "yashchiki/bin/yashchiki_deploy_utilities.sh"
 					}
 				}
 				stage('Create visionary recipe') {
 					steps {
-						sh "yashchiki/.ci/visionary_create_recipe.sh"
+						sh "yashchiki/share/yashchiki/styles/visionary/create_recipe.sh"
 					}
 				}
 				stage('Build sandbox') {
 					steps {
-						sh "yashchiki/.ci/build_sandbox.sh"
+						sh "yashchiki/lib/yashchiki/build_sandbox.sh"
 					}
 				}
 				stage('Build container image') {
 					steps {
-						sh "yashchiki/.ci/build_image.sh"
+						sh "yashchiki/lib/yashchiki/build_image.sh"
 					}
 				}
 				stage('Update build cache and export container') {
 					steps {
 						script {
 							// we only want the container name, tail everything else
-							CONTAINER_IMAGE = sh(script: "yashchiki/.ci/deploy_container.sh | tail -n 1", returnStdout: true).trim()
+							CONTAINER_IMAGE = sh(script: "yashchiki/bin/yashchiki_deploy_container.sh | tail -n 1", returnStdout: true).trim()
 						}
-						sh "yashchiki/.ci/update_build_cache.sh -c \"$CONTAINER_IMAGE\""
-						sh "yashchiki/.ci/notify_gerrit.sh -t Build -c \"$CONTAINER_IMAGE\""
+						sh "yashchiki/lib/yashchiki/update_build_cache.sh -c \"$CONTAINER_IMAGE\""
+						sh "yashchiki/bin/yashchiki_notify_gerrit.sh -t Build -c \"$CONTAINER_IMAGE\""
 					}
 				}
 			}
 			post {
 				failure {
 					script {
-						cache_failed = sh(script: "yashchiki/.ci/create_temporary_build_cache_after_failure.sh", returnStdout: true).trim()
+						cache_failed = sh(script: "yashchiki/lib/yashchiki/create_temporary_build_cache_after_failure.sh", returnStdout: true).trim()
 					}
-					sh "yashchiki/.ci/notify_gerrit.sh -v -1 -t Build -m \"Successfully built packages stored in cache. Resume by issuing:\nWITH_CACHE_NAME=${cache_failed}\n\nIn your next gerrit comment, NOT commit message!\""
+					sh "yashchiki/bin/yashchiki_notify_gerrit.sh -v -1 -t Build -m \"Successfully built packages stored in cache. Resume by issuing:\nWITH_CACHE_NAME=${cache_failed}\n\nIn your next gerrit comment, NOT commit message!\""
 				}
 				cleanup {
 					archiveArtifacts "host.env"
@@ -206,24 +206,18 @@ pipeline {
 					}
 				}
 			}
+			environment {
+				YASHCHIKI_HOST_ENV_PATH = "${WORKSPACE}/host.env"
+			}
 			post {
 				success {
-					// singularityArgs needed because conviz is still running singularity 2.6 due to faster image build times
-					inSingularity(image: CONTAINER_IMAGE, singularityArgs: "-B /etc/passwd") {
-						jesh "/opt/spack_install_scripts/notify_gerrit.sh -v 1 -t Tests -c '${CONTAINER_IMAGE}'"
-					}
+					jesh "yashchiki/bin/yashchiki_notify_gerrit.sh -v 1 -t Tests -c '${CONTAINER_IMAGE}'"
 				}
 				unstable {
-					// singularityArgs needed because conviz is still running singularity 2.6 due to faster image build times
-					inSingularity(image: CONTAINER_IMAGE, singularityArgs: "-B /etc/passwd") {
-						jesh "/opt/spack_install_scripts/notify_gerrit.sh -v 0 -t Tests -c '${CONTAINER_IMAGE}'"
-					}
+					jesh "yashchiki/bin/yashchiki_notify_gerrit.sh -v 0 -t Tests -c '${CONTAINER_IMAGE}'"
 				}
 				failure {
-					// singularityArgs needed because conviz is still running singularity 2.6 due to faster image build times
-					inSingularity(image: CONTAINER_IMAGE, singularityArgs: "-B /etc/passwd") {
-						jesh "/opt/spack_install_scripts/notify_gerrit.sh -v -1 -t Tests -c '${CONTAINER_IMAGE}'"
-					}
+					jesh "yashchiki/bin/yashchiki_notify_gerrit.sh -v -1 -t Tests -c '${CONTAINER_IMAGE}'"
 				}
 			}
 		}
diff --git a/.ci/Jenkinsfile_asic b/.ci/Jenkinsfile_asic
index 2380a0b53c5cb5910c0433d87f2f3633c211cb60..e5e06dfd5dfc07bce36f8c9fc9ff4aa1e685064a 100755
--- a/.ci/Jenkinsfile_asic
+++ b/.ci/Jenkinsfile_asic
@@ -80,67 +80,70 @@ pipeline {
 				}
 				stage('Validate environment') {
 					steps {
-						sh "yashchiki/.ci/validate_environment.sh"
+						sh "yashchiki/lib/yashchiki/validate_environment.sh"
 					}
 				}
 				stage('Dump Meta Info') {
 					steps {
-						sh "yashchiki/.ci/dump_meta_info.sh"
-						sh "yashchiki/.ci/notify_gerrit.sh -m 'Build containing this change started..'"
+						sh "yashchiki/bin/yashchiki_dump_meta_info.sh"
+						sh "yashchiki/bin/yashchiki_notify_gerrit.sh -m 'Build containing this change started..'"
 					}
 				}
 				stage('Spack Fetch') {
 					steps {
 						script {
 							try {
-								sh "yashchiki/.ci/fetch.sh"
+								sh "yashchiki/lib/yashchiki/fetch.sh"
 							}
 							catch (Throwable t) {
 								archiveArtifacts "errors_concretization.log"
 								throw t
 							}
-							spec_folder_in_container = sh(script: "yashchiki/.ci/get_host_env.sh SPEC_FOLDER_IN_CONTAINER", returnStdout: true).trim()
+							spec_folder_in_container = sh(script: "yashchiki/lib/yashchiki/get_host_env.sh SPEC_FOLDER_IN_CONTAINER", returnStdout: true).trim()
 							archiveArtifacts(artifacts: "sandboxes/*/$spec_folder_in_container/*.yaml", allowEmptyArchive: true)
 						}
 					}
 				}
 				stage('Deploy utilities') {
 					steps {
-						sh "yashchiki/.ci/deploy_utilities.sh"
+						sh "yashchiki/bin/yashchiki_deploy_utilities.sh"
 					}
 				}
 				stage('Create asic recipe') {
 					steps {
-						sh "yashchiki/.ci/asic_create_recipe.sh"
+						sh "yashchiki/share/yashchiki/styles/asic/create_recipe.sh"
 					}
 				}
 				stage('Build sandbox') {
 					steps {
-						sh "yashchiki/.ci/build_sandbox.sh"
+						sh "yashchiki/lib/yashchiki/build_sandbox.sh"
 					}
 				}
 				stage('Build container image') {
 					steps {
-						sh "yashchiki/.ci/build_image.sh"
+						sh "yashchiki/lib/yashchiki/build_image.sh"
 					}
 				}
 				stage('Update build cache and export container') {
 					steps {
 						script {
 							// we only want the container name, tail everything else
-							CONTAINER_IMAGE = sh(script: "yashchiki/.ci/deploy_container.sh | tail -n 1", returnStdout: true).trim()
+							CONTAINER_IMAGE = sh(script: "yashchiki/bin/yashchiki_deploy_container.sh | tail -n 1", returnStdout: true).trim()
 						}
-						sh "yashchiki/.ci/update_build_cache.sh -c \"$CONTAINER_IMAGE\""
-						sh "yashchiki/.ci/notify_gerrit.sh -t Build -c \"$CONTAINER_IMAGE\""
+						sh "yashchiki/lib/yashchiki/update_build_cache.sh -c \"$CONTAINER_IMAGE\""
+						sh "yashchiki/bin/yashchiki_notify_gerrit.sh -t Build -c \"$CONTAINER_IMAGE\""
 					}
 				}
 			}
+			environment {
+				YASHCHIKI_HOST_ENV_PATH = "${WORKSPACE}/host.env"
+			}
 			post {
 				failure {
 					script {
-						cache_failed = sh(script: "yashchiki/.ci/create_temporary_build_cache_after_failure.sh", returnStdout: true).trim()
+						cache_failed = sh(script: "yashchiki/lib/yashchiki/create_temporary_build_cache_after_failure.sh", returnStdout: true).trim()
 					}
-					sh "yashchiki/.ci/notify_gerrit.sh -v -1 -t Build -m \"Successfully built packages stored in cache. Resume by issuing:\nWITH_CACHE_NAME=${cache_failed}\n\nIn your next gerrit comment, NOT commit message!\""
+					sh "yashchiki/bin/yashchiki_notify_gerrit.sh -v -1 -t Build -m \"Successfully built packages stored in cache. Resume by issuing:\nWITH_CACHE_NAME=${cache_failed}\n\nIn your next gerrit comment, NOT commit message!\""
 				}
 				cleanup {
 					archiveArtifacts "host.env"
diff --git a/.ci/deploy_container.sh b/bin/yashchiki_deploy_container.sh
similarity index 95%
rename from .ci/deploy_container.sh
rename to bin/yashchiki_deploy_container.sh
index 51b1dbb5976a52a600d5c8ec4260e83a16a2403f..51de53f24c67282af6e4945172726530c7c8460f 100755
--- a/.ci/deploy_container.sh
+++ b/bin/yashchiki_deploy_container.sh
@@ -6,8 +6,8 @@ shopt -s inherit_errexit
 # NOTE: stdout of this script is parsed within the Jenkinsfile.
 #       Think twice before adding any output!
 
-SOURCE_DIR="$(dirname "$(readlink -m "${BASH_SOURCE[0]}")")"
-source "${SOURCE_DIR}/commons.sh"
+ROOT_DIR="$(dirname "$(dirname "$(readlink -m "${BASH_SOURCE[0]}")")")"
+source "${ROOT_DIR}/lib/yashchiki/commons.sh"
 
 INSTALL_DIR="/containers/${CONTAINER_BUILD_TYPE}"
 FALLBACK_DIR="${HOME}/container_mount_full"
diff --git a/.ci/deploy_utilities.sh b/bin/yashchiki_deploy_utilities.sh
similarity index 54%
rename from .ci/deploy_utilities.sh
rename to bin/yashchiki_deploy_utilities.sh
index ef05f0d28c3969dcac808e3ab4f2d3bef75f31fa..5439a154be7125dd41659fe18fadd3376d97451d 100755
--- a/.ci/deploy_utilities.sh
+++ b/bin/yashchiki_deploy_utilities.sh
@@ -1,6 +1,7 @@
 #!/bin/bash
 
-SOURCE_FOLDER="yashchiki/utils"
+ROOT_DIR="$(dirname "$(dirname "$(readlink -m "${BASH_SOURCE[0]}")")")"
+SOURCE_FOLDER="${ROOT_DIR}/share/yashchiki/utils"
 
 TARGET_FOLDER="/containers/utils"
 NAME_FILTER=( "(" -name "*.py" -or -name "*.sh" ")" )
@@ -8,5 +9,5 @@ NAME_FILTER=( "(" -name "*.py" -or -name "*.sh" ")" )
 if [ "${CONTAINER_BUILD_TYPE}" = "stable" ]; then
     find "${TARGET_FOLDER}" "${NAME_FILTER[@]}" -delete
     find "${SOURCE_FOLDER}" "${NAME_FILTER[@]}" -print0 \
-        | xargs -n 1 -0 "${PWD}/yashchiki/.ci/deploy_utility_with_preamble.sh" "${TARGET_FOLDER}"
+        | xargs -n 1 -0 "${sourcedir}/../lib/yashchiki/deploy_utility_with_preamble.sh" "${TARGET_FOLDER}"
 fi
diff --git a/.ci/dump_meta_info.sh b/bin/yashchiki_dump_meta_info.sh
similarity index 85%
rename from .ci/dump_meta_info.sh
rename to bin/yashchiki_dump_meta_info.sh
index 460de3df77534052d33fbd2e386f6a0b644ca118..1eb17e9052a1e76eb5000cd7c4f1f07b8ac2f09b 100755
--- a/.ci/dump_meta_info.sh
+++ b/bin/yashchiki_dump_meta_info.sh
@@ -6,8 +6,8 @@
 set -Eeuo pipefail
 shopt -s inherit_errexit
 
-SOURCE_DIR="$(dirname "$(readlink -m "${BASH_SOURCE[0]}")")"
-source "${SOURCE_DIR}/commons.sh"
+ROOT_DIR="$(dirname "$(dirname "$(readlink -m "${BASH_SOURCE[0]}")")")"
+source "${ROOT_DIR}/lib/yashchiki/commons.sh"
 
 mkdir -p "${META_DIR_OUTSIDE}"
 
diff --git a/.ci/notify_gerrit.sh b/bin/yashchiki_notify_gerrit.sh
similarity index 93%
rename from .ci/notify_gerrit.sh
rename to bin/yashchiki_notify_gerrit.sh
index af56b5cbbeb61d9ad9342054a40c9738d7695965..8cbe558203b83a262e06d0446d7bbccedfda9794 100755
--- a/.ci/notify_gerrit.sh
+++ b/bin/yashchiki_notify_gerrit.sh
@@ -15,9 +15,9 @@ if ! [ "${CONTAINER_BUILD_TYPE:-}" = "testing" ]; then
     exit 0
 fi
 
-SOURCE_DIR="$(dirname "$(readlink -m "${BASH_SOURCE[0]}")")"
-source "${SOURCE_DIR}/dummy_variables.sh"
-source "${SOURCE_DIR}/commons.sh"
+ROOT_DIR="$(dirname "$(dirname "$(readlink -m "${BASH_SOURCE[0]}")")")"
+source "${ROOT_DIR}/lib/yashchiki/dummy_variables.sh"
+source "${ROOT_DIR}/lib/yashchiki/commons.sh"
 
 container_name=""
 result_type=""
diff --git a/container-build-files b/container-build-files
deleted file mode 120000
index ecb1fd3368117f1523c70aac20a36f6a99e00685..0000000000000000000000000000000000000000
--- a/container-build-files
+++ /dev/null
@@ -1 +0,0 @@
-.ci
\ No newline at end of file
diff --git a/.ci/bootstrap_spack.sh b/lib/yashchiki/bootstrap_spack.sh
similarity index 100%
rename from .ci/bootstrap_spack.sh
rename to lib/yashchiki/bootstrap_spack.sh
diff --git a/.ci/build_image.sh b/lib/yashchiki/build_image.sh
similarity index 100%
rename from .ci/build_image.sh
rename to lib/yashchiki/build_image.sh
diff --git a/.ci/build_sandbox.sh b/lib/yashchiki/build_sandbox.sh
similarity index 89%
rename from .ci/build_sandbox.sh
rename to lib/yashchiki/build_sandbox.sh
index c8d9d2db89c72dd345ccca4e1ecf777b1917d363..98f103d448c438fa6e37e6f06429902697afcf1c 100755
--- a/.ci/build_sandbox.sh
+++ b/lib/yashchiki/build_sandbox.sh
@@ -15,8 +15,8 @@ unset LC_TIME
 unset LC_MESSAGES
 
 echo "creating ${YASHCHIKI_RECIPE_PATH}" >&2
-SOURCE_DIR="$(dirname "$(readlink -m "${BASH_SOURCE[0]}")")"
-"${SOURCE_DIR}/${CONTAINER_STYLE}_create_recipe.sh"
+ROOT_DIR="$(dirname "$(dirname "$(dirname "$(readlink -m "${BASH_SOURCE[0]}")")")")"
+bash "${ROOT_DIR}/share/yashchiki/styles/${CONTAINER_STYLE}/create_recipe.sh"
 
 echo "created ${YASHCHIKI_RECIPE_PATH}" >&2
 cat "${YASHCHIKI_RECIPE_PATH}"
diff --git a/.ci/commons.sh b/lib/yashchiki/commons.sh
similarity index 98%
rename from .ci/commons.sh
rename to lib/yashchiki/commons.sh
index 24ed0dc4b226846cb6d7b51043500bca1d4a6077..d6144c04df537c0fbabf41daeeac8b258632d03b 100755
--- a/.ci/commons.sh
+++ b/lib/yashchiki/commons.sh
@@ -3,6 +3,7 @@
 set -euo pipefail
 shopt -s inherit_errexit 2>/dev/null || true
 
+ROOT_DIR="$(dirname "$(dirname "$(dirname "$(readlink -m "${BASH_SOURCE[0]}")")")")"
 SOURCE_DIR="$(dirname "$(readlink -m "${BASH_SOURCE[0]}")")"
 
 HOST_ENV_FILE_INSIDE="/tmp/spack/host.env"
@@ -179,7 +180,13 @@ declare -A spack_add_to_view
 #                                   "no" otherwise
 declare -A spack_add_to_view_with_dependencies
 
-source "${SOURCE_DIR}/${CONTAINER_STYLE}_spack_collection.sh"
+if test -f "${ROOT_DIR}/share/yashchiki/styles/${CONTAINER_STYLE}/spack_collection.sh"; then
+    # outside of container
+    source "${ROOT_DIR}/share/yashchiki/styles/${CONTAINER_STYLE}/spack_collection.sh"
+else
+    # inside of container
+    source "${SOURCE_DIR}/spack_collection.sh"
+fi
 
 # Control verbosity etc of commands
 SPACK_ARGS_INSTALL=()
diff --git a/.ci/complete_spack_install_routine_called_in_post_as_root.sh b/lib/yashchiki/complete_spack_install_routine_called_in_post_as_root.sh
similarity index 100%
rename from .ci/complete_spack_install_routine_called_in_post_as_root.sh
rename to lib/yashchiki/complete_spack_install_routine_called_in_post_as_root.sh
diff --git a/.ci/create_temporary_build_cache_after_failure.sh b/lib/yashchiki/create_temporary_build_cache_after_failure.sh
similarity index 100%
rename from .ci/create_temporary_build_cache_after_failure.sh
rename to lib/yashchiki/create_temporary_build_cache_after_failure.sh
diff --git a/.ci/deploy_utility_with_preamble.sh b/lib/yashchiki/deploy_utility_with_preamble.sh
similarity index 93%
rename from .ci/deploy_utility_with_preamble.sh
rename to lib/yashchiki/deploy_utility_with_preamble.sh
index 502bb2c92b39c57ef5a3a7f2a3c37157705100c3..5f0d65c415ecdf0ac93c64f416d28c9c52c8f64c 100755
--- a/.ci/deploy_utility_with_preamble.sh
+++ b/lib/yashchiki/deploy_utility_with_preamble.sh
@@ -25,7 +25,7 @@ echo ""
 }
 
 # source and destination are reversed for xargs!
-len_preamble=$(awk -f "$(cd yashchiki && git rev-parse --show-toplevel)/.ci/find_num_lines_shebang.awk" "${src}")
+len_preamble=$(awk -f "$(cd yashchiki && git rev-parse --show-toplevel)/lib/yashchiki/find_num_lines_shebang.awk" "${src}")
 head -n "${len_preamble}" "${src}" > "${dst}"
 make_preamble >> "${dst}"
 tail -n +$(( len_preamble + 1 )) "${src}" >> "${dst}"
diff --git a/.ci/dummy_variables.sh b/lib/yashchiki/dummy_variables.sh
similarity index 100%
rename from .ci/dummy_variables.sh
rename to lib/yashchiki/dummy_variables.sh
diff --git a/.ci/fetch.sh b/lib/yashchiki/fetch.sh
similarity index 100%
rename from .ci/fetch.sh
rename to lib/yashchiki/fetch.sh
diff --git a/.ci/find_num_lines_shebang.awk b/lib/yashchiki/find_num_lines_shebang.awk
similarity index 100%
rename from .ci/find_num_lines_shebang.awk
rename to lib/yashchiki/find_num_lines_shebang.awk
diff --git a/.ci/generate_modules.sh b/lib/yashchiki/generate_modules.sh
similarity index 100%
rename from .ci/generate_modules.sh
rename to lib/yashchiki/generate_modules.sh
diff --git a/.ci/get_host_env.sh b/lib/yashchiki/get_host_env.sh
similarity index 100%
rename from .ci/get_host_env.sh
rename to lib/yashchiki/get_host_env.sh
diff --git a/.ci/install_gocryptfs_as_root.sh b/lib/yashchiki/install_gocryptfs_as_root.sh
similarity index 100%
rename from .ci/install_gocryptfs_as_root.sh
rename to lib/yashchiki/install_gocryptfs_as_root.sh
diff --git a/.ci/install_prerequisites.sh b/lib/yashchiki/install_prerequisites.sh
similarity index 100%
rename from .ci/install_prerequisites.sh
rename to lib/yashchiki/install_prerequisites.sh
diff --git a/.ci/install_singularity_as_root.sh b/lib/yashchiki/install_singularity_as_root.sh
similarity index 100%
rename from .ci/install_singularity_as_root.sh
rename to lib/yashchiki/install_singularity_as_root.sh
diff --git a/.ci/install_spack.sh b/lib/yashchiki/install_spack.sh
similarity index 97%
rename from .ci/install_spack.sh
rename to lib/yashchiki/install_spack.sh
index 974943f56f8e833aea93e0dcf4922add1469e60b..a693509e4db2206db97a978e549426168f682e83 100755
--- a/.ci/install_spack.sh
+++ b/lib/yashchiki/install_spack.sh
@@ -56,7 +56,7 @@ umask 000
 # several spack packages get linked into the same view and the random order of
 # execution in a parallel context, builds might become unstable otherwise.
 {
-source ${SPACK_INSTALL_SCRIPTS}/${CONTAINER_STYLE}_spack_custom_view.sh
+source ${SPACK_INSTALL_SCRIPTS}/spack_custom_view.sh
 } | parallel_cmds
 
 # Perform the remaining additions to the views defined in commons.
diff --git a/.ci/install_system_dependencies.sh b/lib/yashchiki/install_system_dependencies.sh
similarity index 100%
rename from .ci/install_system_dependencies.sh
rename to lib/yashchiki/install_system_dependencies.sh
diff --git a/.ci/manual_system_level_patching_routine_called_in_post_as_root.sh b/lib/yashchiki/manual_system_level_patching_routine_called_in_post_as_root.sh
similarity index 100%
rename from .ci/manual_system_level_patching_routine_called_in_post_as_root.sh
rename to lib/yashchiki/manual_system_level_patching_routine_called_in_post_as_root.sh
diff --git a/.ci/prepare_spack_as_root.sh b/lib/yashchiki/prepare_spack_as_root.sh
similarity index 100%
rename from .ci/prepare_spack_as_root.sh
rename to lib/yashchiki/prepare_spack_as_root.sh
diff --git a/.ci/preserve_built_spack_packages.sh b/lib/yashchiki/preserve_built_spack_packages.sh
similarity index 96%
rename from .ci/preserve_built_spack_packages.sh
rename to lib/yashchiki/preserve_built_spack_packages.sh
index 20ef43595d56b874a7d2a6873183bdf21c1e5664..dba27fb3ba812a43301105ed21606ad3947fc9d1 100755
--- a/.ci/preserve_built_spack_packages.sh
+++ b/lib/yashchiki/preserve_built_spack_packages.sh
@@ -14,7 +14,7 @@
 # Additionally, a temporary build cache is created under
 # failed/c<num>p<num>_<num> that contains a union of the current build cache
 # and all successfully built packages via symlinks (see
-# .ci/create_temporary_build_cache_after_failure.sh).
+# lib/yashchiki/create_temporary_build_cache_after_failure.sh).
 
 set -euo pipefail
 shopt -s inherit_errexit 2>/dev/null || true
diff --git a/.ci/restore_spack_user_settings.sh b/lib/yashchiki/restore_spack_user_settings.sh
similarity index 100%
rename from .ci/restore_spack_user_settings.sh
rename to lib/yashchiki/restore_spack_user_settings.sh
diff --git a/.ci/restore_spack_user_settings_as_root.sh b/lib/yashchiki/restore_spack_user_settings_as_root.sh
similarity index 100%
rename from .ci/restore_spack_user_settings_as_root.sh
rename to lib/yashchiki/restore_spack_user_settings_as_root.sh
diff --git a/.ci/setup_env_spack.sh b/lib/yashchiki/setup_env_spack.sh
similarity index 100%
rename from .ci/setup_env_spack.sh
rename to lib/yashchiki/setup_env_spack.sh
diff --git a/.ci/update_build_cache.sh b/lib/yashchiki/update_build_cache.sh
similarity index 100%
rename from .ci/update_build_cache.sh
rename to lib/yashchiki/update_build_cache.sh
diff --git a/.ci/update_build_cache_in_container.sh b/lib/yashchiki/update_build_cache_in_container.sh
similarity index 100%
rename from .ci/update_build_cache_in_container.sh
rename to lib/yashchiki/update_build_cache_in_container.sh
diff --git a/.ci/validate_environment.sh b/lib/yashchiki/validate_environment.sh
similarity index 100%
rename from .ci/validate_environment.sh
rename to lib/yashchiki/validate_environment.sh
diff --git a/misc-files/init/spack.sh b/share/yashchiki/misc-files/init/spack.sh
similarity index 100%
rename from misc-files/init/spack.sh
rename to share/yashchiki/misc-files/init/spack.sh
diff --git a/misc-files/locale.alias b/share/yashchiki/misc-files/locale.alias
similarity index 100%
rename from misc-files/locale.alias
rename to share/yashchiki/misc-files/locale.alias
diff --git a/misc-files/locale.gen b/share/yashchiki/misc-files/locale.gen
similarity index 100%
rename from misc-files/locale.gen
rename to share/yashchiki/misc-files/locale.gen
diff --git a/misc-files/parselog.awk b/share/yashchiki/misc-files/parselog.awk
similarity index 100%
rename from misc-files/parselog.awk
rename to share/yashchiki/misc-files/parselog.awk
diff --git a/misc-files/setup-spack.sh b/share/yashchiki/misc-files/setup-spack.sh
similarity index 100%
rename from misc-files/setup-spack.sh
rename to share/yashchiki/misc-files/setup-spack.sh
diff --git a/misc-files/sudoers b/share/yashchiki/misc-files/sudoers
similarity index 100%
rename from misc-files/sudoers
rename to share/yashchiki/misc-files/sudoers
diff --git a/.ci/patches/gccxml_usr_include.patch b/share/yashchiki/patches/gccxml_usr_include.patch
similarity index 100%
rename from .ci/patches/gccxml_usr_include.patch
rename to share/yashchiki/patches/gccxml_usr_include.patch
diff --git a/.ci/pinned/asic.list b/share/yashchiki/pinned/asic.list
similarity index 100%
rename from .ci/pinned/asic.list
rename to share/yashchiki/pinned/asic.list
diff --git a/.ci/pinned/dev.list b/share/yashchiki/pinned/dev.list
similarity index 100%
rename from .ci/pinned/dev.list
rename to share/yashchiki/pinned/dev.list
diff --git a/.ci/pinned/dls.list b/share/yashchiki/pinned/dls.list
similarity index 100%
rename from .ci/pinned/dls.list
rename to share/yashchiki/pinned/dls.list
diff --git a/.ci/pinned/simulation.list b/share/yashchiki/pinned/simulation.list
similarity index 100%
rename from .ci/pinned/simulation.list
rename to share/yashchiki/pinned/simulation.list
diff --git a/.ci/pinned/spikey_w_dev.list b/share/yashchiki/pinned/spikey_w_dev.list
similarity index 100%
rename from .ci/pinned/spikey_w_dev.list
rename to share/yashchiki/pinned/spikey_w_dev.list
diff --git a/.ci/pinned/spikey_wout_dev.list b/share/yashchiki/pinned/spikey_wout_dev.list
similarity index 100%
rename from .ci/pinned/spikey_wout_dev.list
rename to share/yashchiki/pinned/spikey_wout_dev.list
diff --git a/.ci/pinned/wafer-visu.list b/share/yashchiki/pinned/wafer-visu.list
similarity index 100%
rename from .ci/pinned/wafer-visu.list
rename to share/yashchiki/pinned/wafer-visu.list
diff --git a/.ci/pinned/wafer.list b/share/yashchiki/pinned/wafer.list
similarity index 100%
rename from .ci/pinned/wafer.list
rename to share/yashchiki/pinned/wafer.list
diff --git a/.ci/asic_create_recipe.sh b/share/yashchiki/styles/asic/create_recipe.sh
similarity index 91%
rename from .ci/asic_create_recipe.sh
rename to share/yashchiki/styles/asic/create_recipe.sh
index cdb7b992a2d6ce4e4080bbe6459f83368e4b97b5..70e4140a7dd85026fddf272d182cd466f6f0169f 100755
--- a/.ci/asic_create_recipe.sh
+++ b/share/yashchiki/styles/asic/create_recipe.sh
@@ -1,7 +1,7 @@
 #!/bin/bash
 
-SOURCE_DIR="$(dirname "$(readlink -m "${BASH_SOURCE[0]}")")"
-source "${SOURCE_DIR}/commons.sh"
+ROOT_DIR="$(dirname "$(dirname "$(dirname "$(dirname "$(dirname "$(readlink -m "${BASH_SOURCE[0]}")")")")")")"
+source "${ROOT_DIR}/lib/yashchiki/commons.sh"
 
 # create container description file
 # * based on CentOS 7's docker image
@@ -31,14 +31,15 @@ From: ${DOCKER_BASE_IMAGE}
     mount --no-mtab --bind "${JOB_TMP_SPACK}" "\${SINGULARITY_ROOTFS}/tmp/spack"
     # copy install scripts
     mkdir "\${SINGULARITY_ROOTFS}/${SPACK_INSTALL_SCRIPTS}"
-    rsync -av "${SOURCE_DIR}"/*.sh "\${SINGULARITY_ROOTFS}/${SPACK_INSTALL_SCRIPTS}"
-    rsync -av "${SOURCE_DIR}"/*.awk "\${SINGULARITY_ROOTFS}/${SPACK_INSTALL_SCRIPTS}"
-    rsync -av "${SOURCE_DIR}"/patches "\${SINGULARITY_ROOTFS}/${SPACK_INSTALL_SCRIPTS}"
+    rsync -av "${ROOT_DIR}"/share/yashchiki/styles/asic/*.sh "\${SINGULARITY_ROOTFS}/${SPACK_INSTALL_SCRIPTS}"
+    rsync -av "${ROOT_DIR}"/lib/yashchiki/*.sh "\${SINGULARITY_ROOTFS}/${SPACK_INSTALL_SCRIPTS}"
+    rsync -av "${ROOT_DIR}"/lib/yashchiki/*.awk "\${SINGULARITY_ROOTFS}/${SPACK_INSTALL_SCRIPTS}"
+    rsync -av "${ROOT_DIR}"/share/yashchiki/patches "\${SINGULARITY_ROOTFS}/${SPACK_INSTALL_SCRIPTS}"
     mkdir -p "\${SINGULARITY_ROOTFS}/${META_DIR_INSIDE}"
     rsync -av "${META_DIR_OUTSIDE}"/* "\${SINGULARITY_ROOTFS}/${META_DIR_INSIDE}"
     # init scripts for user convenience
     mkdir -p "\${SINGULARITY_ROOTFS}/opt/init"
-    rsync -av "${YASHCHIKI_INSTALL}"/misc-files/init/*.sh "\${SINGULARITY_ROOTFS}/opt/init"
+    rsync -av "${ROOT_DIR}"/share/yashchiki/misc-files/init/*.sh "\${SINGULARITY_ROOTFS}/opt/init"
 
 %files
     # NOTE: Due to a bug in singularity 2.6 all paths in this section _cannot_
@@ -46,10 +47,10 @@ From: ${DOCKER_BASE_IMAGE}
     # there are, I pray for your poor soul that escaping them works..
     # --obreitwi, 17-02-19 # 23:45:51
     # provide spack command to login shells
-    ${YASHCHIKI_INSTALL}/misc-files/setup-spack.sh /etc/profile.d/setup-spack.sh
-    ${YASHCHIKI_INSTALL}/misc-files/locale.gen /etc/locale.gen
-    ${YASHCHIKI_INSTALL}/misc-files/locale.alias /etc/locale.alias
-    ${YASHCHIKI_INSTALL}/misc-files/sudoers /etc/sudoers
+    ${ROOT_DIR}/share/yashchiki/misc-files/setup-spack.sh /etc/profile.d/setup-spack.sh
+    ${ROOT_DIR}/share/yashchiki/misc-files/locale.gen /etc/locale.gen
+    ${ROOT_DIR}/share/yashchiki/misc-files/locale.alias /etc/locale.alias
+    ${ROOT_DIR}/share/yashchiki/misc-files/sudoers /etc/sudoers
     ${HOST_ENV_FILE} ${HOST_ENV_FILE_INSIDE}
 
 %post
diff --git a/.ci/asic_spack_collection.sh b/share/yashchiki/styles/asic/spack_collection.sh
similarity index 100%
rename from .ci/asic_spack_collection.sh
rename to share/yashchiki/styles/asic/spack_collection.sh
diff --git a/.ci/asic_spack_custom_view.sh b/share/yashchiki/styles/asic/spack_custom_view.sh
similarity index 100%
rename from .ci/asic_spack_custom_view.sh
rename to share/yashchiki/styles/asic/spack_custom_view.sh
diff --git a/.ci/visionary_create_recipe.sh b/share/yashchiki/styles/visionary/create_recipe.sh
similarity index 86%
rename from .ci/visionary_create_recipe.sh
rename to share/yashchiki/styles/visionary/create_recipe.sh
index 48bc894ea45759215f7ac919b77f8f1ffe7fa9f6..b0664d251365e39c9e2fb5353ab0569983c17046 100755
--- a/.ci/visionary_create_recipe.sh
+++ b/share/yashchiki/styles/visionary/create_recipe.sh
@@ -1,7 +1,7 @@
 #!/bin/bash
 
-SOURCE_DIR="$(dirname "$(readlink -m "${BASH_SOURCE[0]}")")"
-source "${SOURCE_DIR}/commons.sh"
+ROOT_DIR="$(dirname "$(dirname "$(dirname "$(dirname "$(dirname "$(readlink -m "${BASH_SOURCE[0]}")")")")")")"
+source "${ROOT_DIR}/lib/yashchiki/commons.sh"
 
 # create container description file
 # * based on Debian buster (minimal) + a few extra packages (e.g. git, python, ...)
@@ -36,14 +36,15 @@ From: ${DOCKER_BASE_IMAGE}
     mount --no-mtab --bind "${JOB_TMP_SPACK}" "\${SINGULARITY_ROOTFS}/tmp/spack"
     # copy install scripts
     mkdir "\${SINGULARITY_ROOTFS}/${SPACK_INSTALL_SCRIPTS}"
-    rsync -av "${SOURCE_DIR}"/*.sh "\${SINGULARITY_ROOTFS}/${SPACK_INSTALL_SCRIPTS}"
-    rsync -av "${SOURCE_DIR}"/*.awk "\${SINGULARITY_ROOTFS}/${SPACK_INSTALL_SCRIPTS}"
-    rsync -av "${SOURCE_DIR}"/patches "\${SINGULARITY_ROOTFS}/${SPACK_INSTALL_SCRIPTS}"
+    rsync -av "${ROOT_DIR}"/share/yashchiki/styles/visionary/*.sh "\${SINGULARITY_ROOTFS}/${SPACK_INSTALL_SCRIPTS}"
+    rsync -av "${ROOT_DIR}"/lib/yashchiki/*.sh "\${SINGULARITY_ROOTFS}/${SPACK_INSTALL_SCRIPTS}"
+    rsync -av "${ROOT_DIR}"/lib/yashchiki/*.awk "\${SINGULARITY_ROOTFS}/${SPACK_INSTALL_SCRIPTS}"
+    rsync -av "${ROOT_DIR}"/share/yashchiki/patches "\${SINGULARITY_ROOTFS}/${SPACK_INSTALL_SCRIPTS}"
     mkdir -p "\${SINGULARITY_ROOTFS}/${META_DIR_INSIDE}"
     rsync -av "${META_DIR_OUTSIDE}"/* "\${SINGULARITY_ROOTFS}/${META_DIR_INSIDE}"
     # init scripts for user convenience
     mkdir -p "\${SINGULARITY_ROOTFS}/opt/init"
-    rsync -av "${YASHCHIKI_INSTALL}"/misc-files/init/*.sh "\${SINGULARITY_ROOTFS}/opt/init"
+    rsync -av "${ROOT_DIR}"/share/yashchiki/misc-files/init/*.sh "\${SINGULARITY_ROOTFS}/opt/init"
 
 %files
     # NOTE: Due to a bug in singularity 2.6 all paths in this section _cannot_
@@ -51,10 +52,10 @@ From: ${DOCKER_BASE_IMAGE}
     # there are, I pray for your poor soul that escaping them works..
     # --obreitwi, 17-02-19 # 23:45:51
     # provide spack command to login shells
-    ${YASHCHIKI_INSTALL}/misc-files/setup-spack.sh /etc/profile.d/setup-spack.sh
-    ${YASHCHIKI_INSTALL}/misc-files/locale.gen /etc/locale.gen
-    ${YASHCHIKI_INSTALL}/misc-files/locale.alias /etc/locale.alias
-    ${YASHCHIKI_INSTALL}/misc-files/sudoers /etc/sudoers
+    ${ROOT_DIR}/share/yashchiki/misc-files/setup-spack.sh /etc/profile.d/setup-spack.sh
+    ${ROOT_DIR}/share/yashchiki/misc-files/locale.gen /etc/locale.gen
+    ${ROOT_DIR}/share/yashchiki/misc-files/locale.alias /etc/locale.alias
+    ${ROOT_DIR}/share/yashchiki/misc-files/sudoers /etc/sudoers
     ${HOST_ENV_FILE} ${HOST_ENV_FILE_INSIDE}
 
 %post
diff --git a/.ci/visionary_spack_collection.sh b/share/yashchiki/styles/visionary/spack_collection.sh
similarity index 100%
rename from .ci/visionary_spack_collection.sh
rename to share/yashchiki/styles/visionary/spack_collection.sh
diff --git a/.ci/visionary_spack_custom_view.sh b/share/yashchiki/styles/visionary/spack_custom_view.sh
similarity index 100%
rename from .ci/visionary_spack_custom_view.sh
rename to share/yashchiki/styles/visionary/spack_custom_view.sh
diff --git a/utils/README b/share/yashchiki/utils/README
similarity index 100%
rename from utils/README
rename to share/yashchiki/utils/README
diff --git a/utils/access.sh b/share/yashchiki/utils/access.sh
similarity index 100%
rename from utils/access.sh
rename to share/yashchiki/utils/access.sh
diff --git a/utils/check_build_cache_integrity.py b/share/yashchiki/utils/check_build_cache_integrity.py
similarity index 100%
rename from utils/check_build_cache_integrity.py
rename to share/yashchiki/utils/check_build_cache_integrity.py
diff --git a/utils/clean_testing_build_remnants.sh b/share/yashchiki/utils/clean_testing_build_remnants.sh
similarity index 100%
rename from utils/clean_testing_build_remnants.sh
rename to share/yashchiki/utils/clean_testing_build_remnants.sh
diff --git a/utils/dump_cache.sh b/share/yashchiki/utils/dump_cache.sh
similarity index 97%
rename from utils/dump_cache.sh
rename to share/yashchiki/utils/dump_cache.sh
index dc45830562aba3b6e1b806312c4dbe8fd8b7a2be..a66a6ac8ccb7fb2676bdecaa363c7c53bf516c2b 100755
--- a/utils/dump_cache.sh
+++ b/share/yashchiki/utils/dump_cache.sh
@@ -93,7 +93,7 @@ fi
 
 (
 # Set variables that need to be defined but are irrelevant to buildcache
-# dumping (TODO: keep in sync with .ci/dummy_variables.sh!).
+# dumping (TODO: keep in sync with lib/yashchiki/dummy_variables.sh!).
 export BUILD_CACHE_NAME="${BUILD_CACHE_NAME:-undefined}"
 export DEPENDENCY_PYTHON="${DEPENDENCY_PYTHON:-undefined}"
 export VISIONARY_GCC="${VISIONARY_GCC:-undefined}"
diff --git a/utils/extract_current_pinnings.py b/share/yashchiki/utils/extract_current_pinnings.py
similarity index 100%
rename from utils/extract_current_pinnings.py
rename to share/yashchiki/utils/extract_current_pinnings.py
diff --git a/utils/extract_dna.sh b/share/yashchiki/utils/extract_dna.sh
similarity index 100%
rename from utils/extract_dna.sh
rename to share/yashchiki/utils/extract_dna.sh
diff --git a/utils/gerrit.sh b/share/yashchiki/utils/gerrit.sh
similarity index 100%
rename from utils/gerrit.sh
rename to share/yashchiki/utils/gerrit.sh
diff --git a/utils/merged.sh b/share/yashchiki/utils/merged.sh
similarity index 100%
rename from utils/merged.sh
rename to share/yashchiki/utils/merged.sh
diff --git a/utils/public.sh b/share/yashchiki/utils/public.sh
similarity index 100%
rename from utils/public.sh
rename to share/yashchiki/utils/public.sh
diff --git a/tests/test-gerrit_notify_change.sh b/tests/test-gerrit_notify_change.sh
index c6c03eb1482bf54276be6aad1513ad8819f48e25..69b882d16d18e1c7997edbd22728940e2da0837a 100755
--- a/tests/test-gerrit_notify_change.sh
+++ b/tests/test-gerrit_notify_change.sh
@@ -10,19 +10,17 @@ export DEPENDENCY_PYTHON=undefined
 export VISIONARY_GCC=undefined
 export BUILD_URL="https://obreitwi/testing/manual.html"
 
-sourcedir="$(dirname "$(readlink -m "${BASH_SOURCE[0]}")")"
+ROOT_DIR="$(dirname "$(dirname "$(readlink -m "${BASH_SOURCE[0]}")")")"
 
-notify_gerrit="${sourcedir}/../.ci/notify_gerrit.sh" 
+notify_gerrit="${ROOT_DIR}/bin/yashchiki/notify_gerrit.sh" 
 
-bash "${notify_gerrit}" -c "testing-notify-feature" -s "${sourcedir}/../spack" -v 1
+bash "${notify_gerrit}" -c "testing-notify-feature" -s "${ROOT_DIR}/spack" -v 1
 
 export CONTAINER_BUILD_TYPE=stable
-bash "${notify_gerrit}" -c "testing-notify-feature" -s "${sourcedir}/../spack" -v 1
+bash "${notify_gerrit}" -c "testing-notify-feature" -s "${ROOT_DIR}/spack" -v 1
 
 export CONTAINER_BUILD_TYPE=testing
 
-sourcedir="$(dirname "$(readlink -m "${BASH_SOURCE[0]}")")"
-
-bash "${notify_gerrit}" -c "testing-notify-feature" -s "${sourcedir}/../spack" -v 1
-bash "${notify_gerrit}" -c "testing-notify-feature" -s "${sourcedir}/../spack" -v -1
-bash "${notify_gerrit}" -s "${sourcedir}/../spack" -v 0
+bash "${notify_gerrit}" -c "testing-notify-feature" -s "${ROOT_DIR}/spack" -v 1
+bash "${notify_gerrit}" -c "testing-notify-feature" -s "${ROOT_DIR}/spack" -v -1
+bash "${notify_gerrit}" -s "${ROOT_DIR}/spack" -v 0