diff --git a/src/mpsd_software_manager/cmds/available.py b/src/mpsd_software_manager/cmds/available.py
index c276eed166e7c2a069fe0bdf4909f73680160932..95e26518c8a5ae3253171e9380093ca8b50f7198 100644
--- a/src/mpsd_software_manager/cmds/available.py
+++ b/src/mpsd_software_manager/cmds/available.py
@@ -50,7 +50,7 @@ def get_available_package_sets(mpsd_release: str) -> List[str]:
     # find package_sets by cloning repository and checking out right branch
     clone_repo(
         tmp_dir_path,
-        config_vars["spack_environments_repo"],
+        config_vars.spack_environments_repo,
         branch=f"releases/{mpsd_release}",
     )
     # look for directories defining the package_sets
diff --git a/src/mpsd_software_manager/cmds/init.py b/src/mpsd_software_manager/cmds/init.py
index 26a70259908dbc0744edd07205fbf5b3bdaaa676..353c26c32cb04c090d61647fea666f4027d17e81 100644
--- a/src/mpsd_software_manager/cmds/init.py
+++ b/src/mpsd_software_manager/cmds/init.py
@@ -24,7 +24,7 @@ def initialise_environment(root_dir: Path) -> None:
 
     """
     # check if the root_dir is not already initialized
-    init_file = root_dir / config_vars["init_file"]
+    init_file = root_dir / config_vars.init_file
     if init_file.exists():
         logging.error(f"Directory {str(root_dir)} is already initialised.")
         sys.exit(30)
diff --git a/src/mpsd_software_manager/cmds/prepare.py b/src/mpsd_software_manager/cmds/prepare.py
index ccfd70d897c9cc75deb27e444e4b5e022c7f9cfc..e75ed3352eaac760c799de991bf3745b5d8f1eb1 100644
--- a/src/mpsd_software_manager/cmds/prepare.py
+++ b/src/mpsd_software_manager/cmds/prepare.py
@@ -66,7 +66,7 @@ def prepare_environment(mpsd_release: str, root_dir: Path) -> List[str]:
         with os_chdir(folders.repo_path):
             run(["git", "pull", "-v"], capture_output=True)
     else:
-        repo_url = config_vars["spack_environments_repo"]
+        repo_url = config_vars.spack_environments_repo
         logging.info(f"cloning repository {folders.repo_path} from {repo_url}")
         clone_repo(folders.repo_path, repo_url, branch=f"releases/{mpsd_release}")
 
diff --git a/src/mpsd_software_manager/cmds/status.py b/src/mpsd_software_manager/cmds/status.py
index 0e6a26aa478f0c97d6eafd43f0670c565059d564..8c423478c3ff1d43a5104ac5eaddabcf448c3fb8 100644
--- a/src/mpsd_software_manager/cmds/status.py
+++ b/src/mpsd_software_manager/cmds/status.py
@@ -156,7 +156,7 @@ def list_installed_toolchains(
     # find all folders for all microarch in the release directory
     # except for the blacklisted files
     black_listed_files = [
-        config_vars["cmd_log_file"],
+        config_vars.cmd_log_file,
         "spack-environments",
         "logs",
         "mpsd-spack-cache",
diff --git a/src/mpsd_software_manager/utils/filesystem_utils.py b/src/mpsd_software_manager/utils/filesystem_utils.py
index 051f88250484b64aa1a6b6e1e83c4cc6cc182590..96d50c82527951322245d58e6fcce73643ee3d0e 100644
--- a/src/mpsd_software_manager/utils/filesystem_utils.py
+++ b/src/mpsd_software_manager/utils/filesystem_utils.py
@@ -22,7 +22,7 @@ def get_root_dir() -> Path:
     """Get the root directory of the installation.
 
     Look for the hidden file ``.mpsd-software-root``
-    (defined in config_vars["init_file"])
+    (defined in config_vars.init_file)
     in the current directory, or any parent directory.
     If found, return the path to the root directory
     of the MPSD software instance.
@@ -39,13 +39,13 @@ def get_root_dir() -> Path:
     """
     # check if the root_dir is not already initialized
     script_call_dir = Path.cwd()
-    init_file = script_call_dir / config_vars["init_file"]
+    init_file = script_call_dir / config_vars.init_file
     if init_file.exists():
         return script_call_dir
 
     # if not, look for the init file in the parent directories
     for parent_folder in script_call_dir.parents:
-        init_file = parent_folder / config_vars["init_file"]
+        init_file = parent_folder / config_vars.init_file
         if init_file.exists():
             script_call_dir = parent_folder
             return script_call_dir
@@ -60,8 +60,8 @@ def get_root_dir() -> Path:
         "To initialise a MPSD software instance here, "
         "run 'mpsd-software init'.\n\n"
         f"To find the root directory of an existing MPSD software instance, look "
-        f"for the directory containing '{config_vars['cmd_log_file']}' "
-        + f"and the hidden file '{config_vars['init_file']}'."
+        f"for the directory containing '{config_vars.cmd_log_file}' "
+        + f"and the hidden file '{config_vars.init_file}'."
     )
     sys.exit(40)
 
diff --git a/src/mpsd_software_manager/utils/logging.py b/src/mpsd_software_manager/utils/logging.py
index 3bc5cb1e09048c28a1428a519e73443cb5ef67a7..c9e5bfddca1e31d6365a38d58209f81cb5530b6f 100644
--- a/src/mpsd_software_manager/utils/logging.py
+++ b/src/mpsd_software_manager/utils/logging.py
@@ -311,7 +311,7 @@ def write_to_cmd_log(root_dir: Path, msg: str) -> None:
     -------
     - None
     """
-    cmd_log_file_path = root_dir / config_vars["cmd_log_file"]
+    cmd_log_file_path = root_dir / config_vars.cmd_log_file
     write_to_file(cmd_log_file_path, msg)
 
 
@@ -426,7 +426,7 @@ def read_metadata_from_logfile(logfile: Union[str, Path]) -> dict:
     return {
         match.group(1): match.group(2)
         for match in re.finditer(
-            rf"{config_vars['metadata_tag_open']}(\w+):(\w+){config_vars['metadata_tag_close']}",
+            rf"{config_vars.metadata_tag_open}(\w+):(\w+){config_vars.metadata_tag_close}",
             log_text,
         )
     }
diff --git a/src/mpsd_software_manager/utils/microarch.py b/src/mpsd_software_manager/utils/microarch.py
index bddc917cce5417d32fec280dba8b6b9c7a5be44e..21c2ad01a7effd970580de7384e775701850c290 100644
--- a/src/mpsd_software_manager/utils/microarch.py
+++ b/src/mpsd_software_manager/utils/microarch.py
@@ -93,5 +93,5 @@ def log_metadata(key: str, value: str) -> None:
     returns : None
     """
     logging.info(
-        f"{config_vars['metadata_tag_open']}{key}:{value}{config_vars['metadata_tag_close']}"
+        f"{config_vars.metadata_tag_open}{key}:{value}{config_vars.metadata_tag_close}"
     )
diff --git a/tests/test_init.py b/tests/test_init.py
index ca54de658a0ca0ee267a79074725370694699dbe..792791aff60edeaaa78ac4e3e0d52c04ca2acc61 100644
--- a/tests/test_init.py
+++ b/tests/test_init.py
@@ -8,11 +8,11 @@ def test_initialise_environment(tmp_path):
     """Test that init_file is created as expected."""
     # test that the init file is created as expected
     init.initialise_environment(tmp_path)
-    init_file = tmp_path / mpsd_software_manager.config_vars["init_file"]
+    init_file = tmp_path / mpsd_software_manager.config_vars.init_file
 
     assert init_file.exists()
     # ensure "Initialising MPSD software ..." is in the log file
-    log_file = tmp_path / mpsd_software_manager.config_vars["cmd_log_file"]
+    log_file = tmp_path / mpsd_software_manager.config_vars.cmd_log_file
     with open(log_file, "r") as f:
         assert (f"Initialising MPSD software instance at {tmp_path}") in f.read()
 
diff --git a/tests/test_install.py b/tests/test_install.py
index 4e4cb1825347ee3fe6a106967a0fcf09598fcfcc..e0db75a8ef94d0102f569e8360027aab1c5946f2 100644
--- a/tests/test_install.py
+++ b/tests/test_install.py
@@ -53,7 +53,7 @@ def test_install_environment_zlib(create_mock_git_repository):
     root_dir.mkdir(exist_ok=True, parents=True)
     mpsd_release_to_test = "dev-23a"
     package_set_to_test = "global_generic"
-    cmd_log_file = mpsd_software_manager.config_vars["cmd_log_file"]
+    cmd_log_file = mpsd_software_manager.config_vars.cmd_log_file
     microarch = mpsd_software_manager.utils.microarch.get_native_microarchitecture()
     folders = mpsd_software_manager.utils.filesystem_utils.get_important_folders(
         mpsd_release_to_test, root_dir
diff --git a/tests/test_logging.py b/tests/test_logging.py
index 350286f44adad4097569f62613b075f3cf1dc750..1817a2690e3a35b2e0846668fea487809afba53a 100644
--- a/tests/test_logging.py
+++ b/tests/test_logging.py
@@ -8,7 +8,7 @@ from mpsd_software_manager.utils import logging as software_manager_logging
 
 def test_write_to_cmd_log(tmp_path):
     """Check that we write to the correct log file"""
-    cmd_log_file = mpsd_software_manager.config_vars["cmd_log_file"]
+    cmd_log_file = mpsd_software_manager.config_vars.cmd_log_file
     software_manager_logging.write_to_cmd_log(root_dir=tmp_path, msg="test_cmd")
     assert os.path.exists(tmp_path / cmd_log_file)
     with open(tmp_path / cmd_log_file, "r") as f:
@@ -20,7 +20,7 @@ def test_record_script_execution_summary(tmp_path, create_mock_git_repository):
 
     Check that logs/install-software-environment.log is updated when the module is run
     """
-    cmd_log_file = mpsd_software_manager.config_vars["cmd_log_file"]
+    cmd_log_file = mpsd_software_manager.config_vars.cmd_log_file
 
     root_dir = tmp_path / "test_prepare_env"
     script_version = mpsd_software_manager.__version__
@@ -58,8 +58,8 @@ def test_metadata_logging(tmp_path):
     expected_log_entries = []
     for key, value in zip(keys, values):
         mpsd_software_manager.utils.microarch.log_metadata(key, value)
-        open_tag = mpsd_software_manager.config_vars["metadata_tag_open"]
-        close_tag = mpsd_software_manager.config_vars["metadata_tag_close"]
+        open_tag = mpsd_software_manager.config_vars.metadata_tag_open
+        close_tag = mpsd_software_manager.config_vars.metadata_tag_close
         expected_log = f"{open_tag}{key}:{value}{close_tag}"
         expected_log_entries.append(expected_log)
         logging.info(f"Add some other info (after adding key={key})")