diff --git a/.reuse/dep5 b/.reuse/dep5
index f21f6e2ee48fcbef711be47c1c94f4248adb37b9..4e2a69c2921139df15d0edbb731375714f78b61e 100644
--- a/.reuse/dep5
+++ b/.reuse/dep5
@@ -15,8 +15,8 @@ Files:
  doc/results/img/*.jpg
  doc/results/img/*.png
  doc/results/img/*/*.jpg
- src/ptbench/data/*/*.json
- src/ptbench/data/*/*.json.bz2
+ src/ptbench/config/data/*/*.json
+ src/ptbench/config/data/*/*.json.bz2
  tests/data/*.csv
  tests/data/*.json
  tests/data/*.png
diff --git a/doc/_templates/config.rst b/doc/_templates/config.rst
index 3a1f3d38f834a9180521eb514aea2a5eef4a85b9..dc8a8877cb94fd522852f4ee9c3d43ecf3f8dc51 100644
--- a/doc/_templates/config.rst
+++ b/doc/_templates/config.rst
@@ -1,3 +1,6 @@
 {% include "autosummary/module.rst" %}
-.. literalinclude:: ../../../../src/{{ fullname.replace(".", "/") }}.py
+.. literalinclude:: ../../../src/{{ fullname.replace(".", "/") }}.py
    :start-at: import
+
+
+.. include:: ../../links.rst
diff --git a/doc/api.rst b/doc/api.rst
index 5bfd2b2ff89183687536b4a65a85f8ef0591588d..4b223ca53824abd5707cee134e792820c7c08d84 100644
--- a/doc/api.rst
+++ b/doc/api.rst
@@ -28,44 +28,6 @@ Auxiliary classes and methods to define raw dataset iterators.
    ptbench.data.split
    ptbench.data.typing
 
-.. _ptbench.api.rawdata:
-
-Basic Datamodules
------------------
-
-Pytorch_ :py:class:`torch.utils.data.DataLoader` access through lightning_
-:py:class:`lightning.pytorch.core.LightningDataModule`.
-
-.. autosummary::
-   :toctree: api/data/raw
-
-   ptbench.data.hivtb.datamodule
-   ptbench.data.indian.datamodule
-   ptbench.data.montgomery.datamodule
-   ptbench.data.nih_cxr14.datamodule
-   ptbench.data.padchest.datamodule
-   ptbench.data.shenzhen.datamodule
-   ptbench.data.tbpoc.datamodule
-   ptbench.data.tbx11k.datamodule
-
-
-.. _ptbench.api.remixdata:
-
-Remixed Datamodules
--------------------
-
-Pytorch_ :py:class:`torch.utils.data.DataLoader` access through lightning_
-:py:class:`lightning.pytorch.core.LightningDataModule`.
-
-.. autosummary::
-   :toctree: api/data/raw
-
-   ptbench.data.montgomery_shenzhen.datamodule
-   ptbench.data.montgomery_shenzhen_indian.datamodule
-   ptbench.data.montgomery_shenzhen_indian_tbx11k.datamodule
-   ptbench.data.montgomery_shenzhen_indian_padchest.datamodule
-   ptbench.data.nih_cxr14_padchest.datamodule
-
 
 .. _ptbench.api.models:
 
diff --git a/doc/config.rst b/doc/config.rst
index cedc8c0760a99467952171b791f17f06c39c0366..93c4559abe5306567cbfacb4ae6cc58fdfcd3091 100644
--- a/doc/config.rst
+++ b/doc/config.rst
@@ -13,68 +13,86 @@ datamodules.
 
 .. _ptbench.config.models:
 
-Models
-======
+Pre-configured Models
+=====================
+
+Pre-configured models you can readily use.
 
 .. autosummary::
-   :toctree: api/models/config
+   :toctree: api/config.models
    :template: config.rst
 
-   ptbench.models.config.alexnet
-   ptbench.models.config.alexnet_pretrained
-   ptbench.models.config.densenet
-   ptbench.models.config.densenet_pretrained
-   ptbench.models.config.densenet_rs
-   ptbench.models.config.logistic_regression
-   ptbench.models.config.mlp
-   ptbench.models.config.pasa
+   ptbench.config.models.alexnet
+   ptbench.config.models.alexnet_pretrained
+   ptbench.config.models.densenet
+   ptbench.config.models.densenet_pretrained
+   ptbench.config.models.densenet_rs
+   ptbench.config.models.logistic_regression
+   ptbench.config.models.mlp
+   ptbench.config.models.pasa
 
 
 .. _ptbench.config.datamodules:
 
-Preset Datamodules
+DataModule support
 ==================
 
-Datamodules include iterative accessors to raw data
-(:ref:`ptbench.setup.databases`) including data pre-processing to a minimum
-input standard, if applicable.  Use these datamodules for training and evaluating
-your models.
+Base DataModules and raw data loaders for the various databases currently
+supported in this package, for your reference.  Each pre-configured data module
+can receive the name of one or more splits as argument to build a fully
+functional data module that can be used in training, prediction or testing.
 
 .. autosummary::
-   :toctree: api/data/config
-   :template: config.rst
+   :toctree: api/config.datamodules
 
-   ptbench.data.indian.default
-   ptbench.data.montgomery.default
-   ptbench.data.nih_cxr14.default
-   ptbench.data.padchest.idiap
-   ptbench.data.shenzhen.default
-   ptbench.data.tbx11k.v1_healthy_vs_atb
-   ptbench.data.tbx11k.v2_others_vs_atb
+   ptbench.config.data.hivtb.datamodule
+   ptbench.config.data.indian.datamodule
+   ptbench.config.data.montgomery.datamodule
+   ptbench.config.data.montgomery_shenzhen.datamodule
+   ptbench.config.data.montgomery_shenzhen_indian.datamodule
+   ptbench.config.data.montgomery_shenzhen_indian_padchest.datamodule
+   ptbench.config.data.montgomery_shenzhen_indian_tbx11k.datamodule
+   ptbench.config.data.nih_cxr14.datamodule
+   ptbench.config.data.nih_cxr14_padchest.datamodule
+   ptbench.config.data.padchest.datamodule
+   ptbench.config.data.shenzhen.datamodule
+   ptbench.config.data.tbpoc.datamodule
+   ptbench.config.data.tbx11k.datamodule
 
 
-.. _ptbench.config.datamodules.remix:
+.. _ptbench.config.datamodule-instances:
 
-Remix Datamodules
-=================
+Pre-configured DataModules
+==========================
 
-We provide some aggregated datamodules to facilitate cross-database development.
+DataModules provide access to preset pytorch dataloaders for training,
+validating, testing and running prediction tasks.  Each of the pre-configured
+DataModule is based on one (or more) of the :ref:`supported base data modules
+<ptbench.config.datamodules>`.
 
 .. autosummary::
-   :toctree: api/data/config
+   :toctree: api/config.datamodule-instances
    :template: config.rst
 
-   ptbench.data.montgomery_shenzhen.default
-   ptbench.data.montgomery_shenzhen_indian.default
-   ptbench.data.montgomery_shenzhen_indian_padchest.default
-   ptbench.data.montgomery_shenzhen_indian_tbx11k.v1_healthy_vs_atb
-   ptbench.data.montgomery_shenzhen_indian_tbx11k.v2_others_vs_atb
-   ptbench.data.nih_cxr14_padchest.idiap
-
-
-.. _ptbench.config.datamodules.folds:
-
-Cross-validation Datamodules
+   ptbench.config.data.indian.default
+   ptbench.config.data.montgomery.default
+   ptbench.config.data.montgomery_shenzhen.default
+   ptbench.config.data.montgomery_shenzhen_indian.default
+   ptbench.config.data.montgomery_shenzhen_indian_padchest.default
+   ptbench.config.data.montgomery_shenzhen_indian_tbx11k.v1_healthy_vs_atb
+   ptbench.config.data.montgomery_shenzhen_indian_tbx11k.v2_others_vs_atb
+   ptbench.config.data.nih_cxr14.default
+   ptbench.config.data.nih_cxr14_padchest.idiap
+   ptbench.config.data.padchest.idiap
+   ptbench.config.data.shenzhen.default
+   ptbench.config.data.tbx11k.v1_healthy_vs_atb
+   ptbench.config.data.tbx11k.v2_others_vs_atb
+   ptbench.config.data.tbx11k.v2_others_vs_atb
+
+
+.. _ptbench.config.datamodule-instances.folds:
+
+Cross-validation DataModules
 ============================
 
 We support cross-validation with precise preset folds.  In this section, you
@@ -84,19 +102,20 @@ datamodules.  Nine other folds are available for every configuration (from 1 to
 
 
 .. autosummary::
-   :toctree: api/data/config
+   :toctree: api/config.datamodule-folds
    :template: config.rst
 
-   ptbench.data.hivtb.fold_0
-   ptbench.data.indian.fold_0
-   ptbench.data.montgomery.fold_0
-   ptbench.data.montgomery_shenzhen.fold_0
-   ptbench.data.montgomery_shenzhen_indian.fold_0
-   ptbench.data.montgomery_shenzhen_indian_tbx11k.v1_fold_0
-   ptbench.data.montgomery_shenzhen_indian_tbx11k.v2_fold_0
-   ptbench.data.shenzhen.fold_0
-   ptbench.data.tbpoc.fold_0
-   ptbench.data.tbx11k.v1_fold_0
-   ptbench.data.tbx11k.v2_fold_0
+   ptbench.config.data.hivtb.fold_0
+   ptbench.config.data.indian.fold_0
+   ptbench.config.data.montgomery.fold_0
+   ptbench.config.data.montgomery_shenzhen.fold_0
+   ptbench.config.data.montgomery_shenzhen_indian.fold_0
+   ptbench.config.data.montgomery_shenzhen_indian_tbx11k.v1_fold_0
+   ptbench.config.data.montgomery_shenzhen_indian_tbx11k.v2_fold_0
+   ptbench.config.data.shenzhen.fold_0
+   ptbench.config.data.tbpoc.fold_0
+   ptbench.config.data.tbx11k.v1_fold_0
+   ptbench.config.data.tbx11k.v2_fold_0
+
 
 .. include:: links.rst
diff --git a/doc/links.rst b/doc/links.rst
index 2e4540828cdfa3ee4f2b9d729c38b44b2b9e2b58..f4ba3310e86051b9555e9c919180187372125de0 100644
--- a/doc/links.rst
+++ b/doc/links.rst
@@ -25,6 +25,6 @@
 .. models
 .. _imagenet: https://www.image-net.org
 .. _alexnet: https://en.wikipedia.org/wiki/AlexNet
-.. _alexnet_pytorch: https://pytorch.org/hub/pytorch_vision_alexnet/
+.. _alexnet-pytorch: https://pytorch.org/hub/pytorch_vision_alexnet/
 .. _densenet: https://arxiv.org/abs/1608.06993
-.. _densenet_pytorch: https://pytorch.org/hub/pytorch_vision_densenet/
+.. _densenet-pytorch: https://pytorch.org/hub/pytorch_vision_densenet/
diff --git a/doc/results/index.rst b/doc/results/index.rst
index 0217fe6c798c9d1d0ad388f363313fa7c2819c42..0585e912d2b2841b437312c76417d92fad4a7394 100644
--- a/doc/results/index.rst
+++ b/doc/results/index.rst
@@ -113,37 +113,37 @@ Thresholds used:
            :scale: 50%
            :alt: Testing sets ROC curves for Pasa model trained on normalized-kfold MC
 
-           :py:mod:`Pasa <ptbench.models.config.pasa>`: Pasa trained on normalized-kfold MC
+           :py:mod:`Pasa <ptbench.config.models.pasa>`: Pasa trained on normalized-kfold MC
       - .. figure:: img/compare_pasa_mc_ch_kfold_500.jpg
            :align: center
            :scale: 50%
            :alt: Testing sets ROC curves for Pasa model trained on normalized-kfold MC-CH
 
-           :py:mod:`Pasa <ptbench.models.config.pasa>`: Pasa trained on normalized-kfold MC-CH
+           :py:mod:`Pasa <ptbench.config.models.pasa>`: Pasa trained on normalized-kfold MC-CH
       - .. figure:: img/compare_pasa_mc_ch_in_kfold_500.jpg
            :align: center
            :scale: 50%
            :alt: Testing sets ROC curves for Pasa model trained on normalized-kfold MC-CH-IN
 
-           :py:mod:`Pasa <ptbench.models.config.pasa>`: Pasa trained on normalized-kfold MC-CH-IN
+           :py:mod:`Pasa <ptbench.config.models.pasa>`: Pasa trained on normalized-kfold MC-CH-IN
     * - .. figure:: img/compare_densenet_mc_kfold_2000.jpg
            :align: center
            :scale: 50%
            :alt: Testing sets ROC curves for DenseNet model trained on normalized-kfold MC
 
-           :py:mod:`DenseNet <ptbench.models.config.densenet>`: DenseNet trained on normalized-kfold MC
+           :py:mod:`DenseNet <ptbench.config.models.densenet>`: DenseNet trained on normalized-kfold MC
       - .. figure:: img/compare_densenet_mc_ch_kfold_2000.jpg
            :align: center
            :scale: 50%
            :alt: Testing sets ROC curves for DenseNet model trained on normalized-kfold MC-CH
 
-           :py:mod:`DenseNet <ptbench.models.config.densenet>`: DenseNet trained on normalized-kfold MC-CH
+           :py:mod:`DenseNet <ptbench.config.models.densenet>`: DenseNet trained on normalized-kfold MC-CH
       - .. figure:: img/compare_densenet_mc_ch_in_kfold_2000.jpg
            :align: center
            :scale: 50%
            :alt: Testing sets ROC curves for DenseNet model trained on normalized-kfold MC-CH-IN
 
-           :py:mod:`DenseNet <ptbench.models.config.densenet>`: DenseNet trained on normalized-kfold MC-CH-IN
+           :py:mod:`DenseNet <ptbench.config.models.densenet>`: DenseNet trained on normalized-kfold MC-CH-IN
 
 DenseNet-121 (pretrained on ImageNet)
 """""""""""""""""""""""""""""""""""""
@@ -180,19 +180,19 @@ Thresholds used:
            :scale: 50%
            :alt: Testing sets ROC curves for DenseNet model trained on normalized-kfold MC
 
-           :py:mod:`DenseNet <ptbench.models.config.densenet>` DenseNet trained on normalized-kfold MC
+           :py:mod:`DenseNet <ptbench.config.models.densenet>` DenseNet trained on normalized-kfold MC
       - .. figure:: img/compare_densenetpreIN_mc_ch_kfold_600.jpg
            :align: center
            :scale: 50%
            :alt: Testing sets ROC curves for DenseNet model trained on normalized-kfold MC-CH
 
-           :py:mod:`DenseNet <ptbench.models.config.densenet>` DenseNet trained on normalized-kfold MC-CH
+           :py:mod:`DenseNet <ptbench.config.models.densenet>` DenseNet trained on normalized-kfold MC-CH
       - .. figure:: img/compare_densenetpreIN_mc_ch_ch_kfold_600.jpg
            :align: center
            :scale: 50%
            :alt: Testing sets ROC curves for DenseNet model trained on normalized-kfold MC-CH-IN
 
-           :py:mod:`DenseNet <ptbench.models.config.densenet>` DenseNet trained on normalized-kfold MC-CH-IN
+           :py:mod:`DenseNet <ptbench.config.models.densenet>` DenseNet trained on normalized-kfold MC-CH-IN
 
 Logistic Regression Classifier
 """"""""""""""""""""""""""""""
@@ -229,19 +229,19 @@ Thresholds used:
            :scale: 50%
            :alt: Testing sets ROC curves for LogReg model trained on normalized-kfold MC
 
-           :py:mod:`LogReg <ptbench.models.config.logistic_regression>`: LogReg trained on normalized-kfold MC
+           :py:mod:`LogReg <ptbench.config.models.logistic_regression>`: LogReg trained on normalized-kfold MC
       - .. figure:: img/compare_logreg_mc_ch_kfold_100.jpg
            :align: center
            :scale: 50%
            :alt: Testing sets ROC curves for LogReg model trained on normalized-kfold MC-CH
 
-           :py:mod:`LogReg <ptbench.models.config.logistic_regression>`: LogReg trained on normalized-kfold MC-CH
+           :py:mod:`LogReg <ptbench.config.models.logistic_regression>`: LogReg trained on normalized-kfold MC-CH
       - .. figure:: img/compare_logreg_mc_ch_in_kfold_100.jpg
            :align: center
            :scale: 50%
            :alt: Testing sets ROC curves for LogReg model trained on normalized-kfold MC-CH-IN
 
-           :py:mod:`LogReg <ptbench.models.config.logistic_regression>`: LogReg trained on normalized-kfold MC-CH-IN
+           :py:mod:`LogReg <ptbench.config.models.logistic_regression>`: LogReg trained on normalized-kfold MC-CH-IN
 
 DenseNet-121 (pretrained on ImageNet and NIH CXR14)
 """""""""""""""""""""""""""""""""""""""""""""""""""
@@ -278,19 +278,19 @@ Thresholds used:
            :scale: 50%
            :alt: Testing sets ROC curves for DenseNet model trained on normalized-kfold MC (pretrained on NIH)
 
-           :py:mod:`DenseNet <ptbench.models.config.densenet>`: DenseNet trained on normalized-kfold MC (pretrained on NIH)
+           :py:mod:`DenseNet <ptbench.config.models.densenet>`: DenseNet trained on normalized-kfold MC (pretrained on NIH)
       - .. figure:: img/compare_densenetpre_mc_ch_kfold_300.jpg
            :align: center
            :scale: 50%
            :alt: Testing sets ROC curves for DenseNet model trained on normalized-kfold MC-CH (pretrained on NIH)
 
-           :py:mod:`DenseNet <ptbench.models.config.densenet>`: DenseNet trained on normalized-kfold MC-CH (pretrained on NIH)
+           :py:mod:`DenseNet <ptbench.config.models.densenet>`: DenseNet trained on normalized-kfold MC-CH (pretrained on NIH)
       - .. figure:: img/compare_densenetpre_mc_ch_in_kfold_300.jpg
            :align: center
            :scale: 50%
            :alt: Testing sets ROC curves for DenseNet model trained on normalized-kfold MC-CH-IN (pretrained on NIH)
 
-           :py:mod:`DenseNet <ptbench.models.config.densenet>`: DenseNet trained on normalized-kfold MC-CH-IN (pretrained on NIH)
+           :py:mod:`DenseNet <ptbench.config.models.densenet>`: DenseNet trained on normalized-kfold MC-CH-IN (pretrained on NIH)
 
 
 Global sensitivity analysis (relevance)
diff --git a/doc/usage/evaluation.rst b/doc/usage/evaluation.rst
index 8d98ca924873c9dec0c6781641541cceb9f36ee7..1778e126ce2de28c1cfe123178c0c85176f61b24 100644
--- a/doc/usage/evaluation.rst
+++ b/doc/usage/evaluation.rst
@@ -35,7 +35,7 @@ the pre-trained model.
 .. tip::
 
    An option to generate grad-CAMs is available for the :py:mod:`DensenetRS
-   <ptbench.models.config.densenet_rs>` model. To activate it, use the
+   <ptbench.config.models.densenet_rs>` model. To activate it, use the
    ``--grad-cams`` argument.
 
 .. tip::
diff --git a/pyproject.toml b/pyproject.toml
index f2de6fd46df9574bf29241d6fdf6515382474e00..8ebe16e4e5b18a26930ce3439a740c79e17cb980 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -41,7 +41,7 @@ dependencies = [
   "torch>=1.8",
   "torchvision>=0.10",
   "lightning>=2.0.3",
-  "pydantic <2.0,>=1.7.4",  # temporary, until issue #31 is fixed
+  "pydantic <2.0,>=1.7.4", # temporary, until issue #31 is fixed
   "tensorboard",
 ]
 
@@ -70,168 +70,168 @@ ptbench = "ptbench.scripts.cli:cli"
 [project.entry-points."ptbench.config"]
 
 # models
-pasa = "ptbench.models.config.pasa"
-mlp = "ptbench.models.config.mlp"
-logistic-regression = "ptbench.models.config.logistic_regression"
-alexnet = "ptbench.models.config.alexnet"
-alexnet-pretrained = "ptbench.models.config.alexnet_pretrained"
-densenet = "ptbench.models.config.densenet"
-densenet-pretrained = "ptbench.models.config.densenet_pretrained"
+pasa = "ptbench.config.models.pasa"
+mlp = "ptbench.config.models.mlp"
+logistic-regression = "ptbench.config.models.logistic_regression"
+alexnet = "ptbench.config.models.alexnet"
+alexnet-pretrained = "ptbench.config.models.alexnet_pretrained"
+densenet = "ptbench.config.models.densenet"
+densenet-pretrained = "ptbench.config.models.densenet_pretrained"
 
 # montgomery dataset (and cross-validation folds)
-montgomery = "ptbench.data.montgomery.default"
-montgomery-f0 = "ptbench.data.montgomery.fold_0"
-montgomery-f1 = "ptbench.data.montgomery.fold_1"
-montgomery-f2 = "ptbench.data.montgomery.fold_2"
-montgomery-f3 = "ptbench.data.montgomery.fold_3"
-montgomery-f4 = "ptbench.data.montgomery.fold_4"
-montgomery-f5 = "ptbench.data.montgomery.fold_5"
-montgomery-f6 = "ptbench.data.montgomery.fold_6"
-montgomery-f7 = "ptbench.data.montgomery.fold_7"
-montgomery-f8 = "ptbench.data.montgomery.fold_8"
-montgomery-f9 = "ptbench.data.montgomery.fold_9"
+montgomery = "ptbench.config.data.montgomery.default"
+montgomery-f0 = "ptbench.config.data.montgomery.fold_0"
+montgomery-f1 = "ptbench.config.data.montgomery.fold_1"
+montgomery-f2 = "ptbench.config.data.montgomery.fold_2"
+montgomery-f3 = "ptbench.config.data.montgomery.fold_3"
+montgomery-f4 = "ptbench.config.data.montgomery.fold_4"
+montgomery-f5 = "ptbench.config.data.montgomery.fold_5"
+montgomery-f6 = "ptbench.config.data.montgomery.fold_6"
+montgomery-f7 = "ptbench.config.data.montgomery.fold_7"
+montgomery-f8 = "ptbench.config.data.montgomery.fold_8"
+montgomery-f9 = "ptbench.config.data.montgomery.fold_9"
 
 # shenzhen dataset (and cross-validation folds)
-shenzhen = "ptbench.data.shenzhen.default"
-shenzhen-f0 = "ptbench.data.shenzhen.fold_0"
-shenzhen-f1 = "ptbench.data.shenzhen.fold_1"
-shenzhen-f2 = "ptbench.data.shenzhen.fold_2"
-shenzhen-f3 = "ptbench.data.shenzhen.fold_3"
-shenzhen-f4 = "ptbench.data.shenzhen.fold_4"
-shenzhen-f5 = "ptbench.data.shenzhen.fold_5"
-shenzhen-f6 = "ptbench.data.shenzhen.fold_6"
-shenzhen-f7 = "ptbench.data.shenzhen.fold_7"
-shenzhen-f8 = "ptbench.data.shenzhen.fold_8"
-shenzhen-f9 = "ptbench.data.shenzhen.fold_9"
+shenzhen = "ptbench.config.data.shenzhen.default"
+shenzhen-f0 = "ptbench.config.data.shenzhen.fold_0"
+shenzhen-f1 = "ptbench.config.data.shenzhen.fold_1"
+shenzhen-f2 = "ptbench.config.data.shenzhen.fold_2"
+shenzhen-f3 = "ptbench.config.data.shenzhen.fold_3"
+shenzhen-f4 = "ptbench.config.data.shenzhen.fold_4"
+shenzhen-f5 = "ptbench.config.data.shenzhen.fold_5"
+shenzhen-f6 = "ptbench.config.data.shenzhen.fold_6"
+shenzhen-f7 = "ptbench.config.data.shenzhen.fold_7"
+shenzhen-f8 = "ptbench.config.data.shenzhen.fold_8"
+shenzhen-f9 = "ptbench.config.data.shenzhen.fold_9"
 
 # indian dataset (and cross-validation folds)
-indian = "ptbench.data.indian.default"
-indian-f0 = "ptbench.data.indian.fold_0"
-indian-f1 = "ptbench.data.indian.fold_1"
-indian-f2 = "ptbench.data.indian.fold_2"
-indian-f3 = "ptbench.data.indian.fold_3"
-indian-f4 = "ptbench.data.indian.fold_4"
-indian-f5 = "ptbench.data.indian.fold_5"
-indian-f6 = "ptbench.data.indian.fold_6"
-indian-f7 = "ptbench.data.indian.fold_7"
-indian-f8 = "ptbench.data.indian.fold_8"
-indian-f9 = "ptbench.data.indian.fold_9"
+indian = "ptbench.config.data.indian.default"
+indian-f0 = "ptbench.config.data.indian.fold_0"
+indian-f1 = "ptbench.config.data.indian.fold_1"
+indian-f2 = "ptbench.config.data.indian.fold_2"
+indian-f3 = "ptbench.config.data.indian.fold_3"
+indian-f4 = "ptbench.config.data.indian.fold_4"
+indian-f5 = "ptbench.config.data.indian.fold_5"
+indian-f6 = "ptbench.config.data.indian.fold_6"
+indian-f7 = "ptbench.config.data.indian.fold_7"
+indian-f8 = "ptbench.config.data.indian.fold_8"
+indian-f9 = "ptbench.config.data.indian.fold_9"
 
 # TBX11K dataset split 1: healthy vs active tb, and cross-validation folds
-tbx11k-v1-healthy-vs-atb = "ptbench.data.tbx11k.v1_healthy_vs_atb"
-tbx11k-v1-f0 = "ptbench.data.tbx11k.v1_fold_0"
-tbx11k-v1-f1 = "ptbench.data.tbx11k.v1_fold_1"
-tbx11k-v1-f2 = "ptbench.data.tbx11k.v1_fold_2"
-tbx11k-v1-f3 = "ptbench.data.tbx11k.v1_fold_3"
-tbx11k-v1-f4 = "ptbench.data.tbx11k.v1_fold_4"
-tbx11k-v1-f5 = "ptbench.data.tbx11k.v1_fold_5"
-tbx11k-v1-f6 = "ptbench.data.tbx11k.v1_fold_6"
-tbx11k-v1-f7 = "ptbench.data.tbx11k.v1_fold_7"
-tbx11k-v1-f8 = "ptbench.data.tbx11k.v1_fold_8"
-tbx11k-v1-f9 = "ptbench.data.tbx11k.v1_fold_9"
+tbx11k-v1-healthy-vs-atb = "ptbench.config.data.tbx11k.v1_healthy_vs_atb"
+tbx11k-v1-f0 = "ptbench.config.data.tbx11k.v1_fold_0"
+tbx11k-v1-f1 = "ptbench.config.data.tbx11k.v1_fold_1"
+tbx11k-v1-f2 = "ptbench.config.data.tbx11k.v1_fold_2"
+tbx11k-v1-f3 = "ptbench.config.data.tbx11k.v1_fold_3"
+tbx11k-v1-f4 = "ptbench.config.data.tbx11k.v1_fold_4"
+tbx11k-v1-f5 = "ptbench.config.data.tbx11k.v1_fold_5"
+tbx11k-v1-f6 = "ptbench.config.data.tbx11k.v1_fold_6"
+tbx11k-v1-f7 = "ptbench.config.data.tbx11k.v1_fold_7"
+tbx11k-v1-f8 = "ptbench.config.data.tbx11k.v1_fold_8"
+tbx11k-v1-f9 = "ptbench.config.data.tbx11k.v1_fold_9"
 
 # TBX11K dataset split 2: others vs active tb, and cross-validation folds
-tbx11k-v2-others-vs-atb = "ptbench.data.tbx11k.v2_others_vs_atb"
-tbx11k-v2-f0 = "ptbench.data.tbx11k.v2_fold_0"
-tbx11k-v2-f1 = "ptbench.data.tbx11k.v2_fold_1"
-tbx11k-v2-f2 = "ptbench.data.tbx11k.v2_fold_2"
-tbx11k-v2-f3 = "ptbench.data.tbx11k.v2_fold_3"
-tbx11k-v2-f4 = "ptbench.data.tbx11k.v2_fold_4"
-tbx11k-v2-f5 = "ptbench.data.tbx11k.v2_fold_5"
-tbx11k-v2-f6 = "ptbench.data.tbx11k.v2_fold_6"
-tbx11k-v2-f7 = "ptbench.data.tbx11k.v2_fold_7"
-tbx11k-v2-f8 = "ptbench.data.tbx11k.v2_fold_8"
-tbx11k-v2-f9 = "ptbench.data.tbx11k.v2_fold_9"
+tbx11k-v2-others-vs-atb = "ptbench.config.data.tbx11k.v2_others_vs_atb"
+tbx11k-v2-f0 = "ptbench.config.data.tbx11k.v2_fold_0"
+tbx11k-v2-f1 = "ptbench.config.data.tbx11k.v2_fold_1"
+tbx11k-v2-f2 = "ptbench.config.data.tbx11k.v2_fold_2"
+tbx11k-v2-f3 = "ptbench.config.data.tbx11k.v2_fold_3"
+tbx11k-v2-f4 = "ptbench.config.data.tbx11k.v2_fold_4"
+tbx11k-v2-f5 = "ptbench.config.data.tbx11k.v2_fold_5"
+tbx11k-v2-f6 = "ptbench.config.data.tbx11k.v2_fold_6"
+tbx11k-v2-f7 = "ptbench.config.data.tbx11k.v2_fold_7"
+tbx11k-v2-f8 = "ptbench.config.data.tbx11k.v2_fold_8"
+tbx11k-v2-f9 = "ptbench.config.data.tbx11k.v2_fold_9"
 
 # montgomery-shenzhen aggregated dataset
-montgomery-shenzhen = "ptbench.data.montgomery_shenzhen.default"
-montgomery-shenzhen-f0 = "ptbench.data.montgomery_shenzhen.fold_0"
-montgomery-shenzhen-f1 = "ptbench.data.montgomery_shenzhen.fold_1"
-montgomery-shenzhen-f2 = "ptbench.data.montgomery_shenzhen.fold_2"
-montgomery-shenzhen-f3 = "ptbench.data.montgomery_shenzhen.fold_3"
-montgomery-shenzhen-f4 = "ptbench.data.montgomery_shenzhen.fold_4"
-montgomery-shenzhen-f5 = "ptbench.data.montgomery_shenzhen.fold_5"
-montgomery-shenzhen-f6 = "ptbench.data.montgomery_shenzhen.fold_6"
-montgomery-shenzhen-f7 = "ptbench.data.montgomery_shenzhen.fold_7"
-montgomery-shenzhen-f8 = "ptbench.data.montgomery_shenzhen.fold_8"
-montgomery-shenzhen-f9 = "ptbench.data.montgomery_shenzhen.fold_9"
+montgomery-shenzhen = "ptbench.config.data.montgomery_shenzhen.default"
+montgomery-shenzhen-f0 = "ptbench.config.data.montgomery_shenzhen.fold_0"
+montgomery-shenzhen-f1 = "ptbench.config.data.montgomery_shenzhen.fold_1"
+montgomery-shenzhen-f2 = "ptbench.config.data.montgomery_shenzhen.fold_2"
+montgomery-shenzhen-f3 = "ptbench.config.data.montgomery_shenzhen.fold_3"
+montgomery-shenzhen-f4 = "ptbench.config.data.montgomery_shenzhen.fold_4"
+montgomery-shenzhen-f5 = "ptbench.config.data.montgomery_shenzhen.fold_5"
+montgomery-shenzhen-f6 = "ptbench.config.data.montgomery_shenzhen.fold_6"
+montgomery-shenzhen-f7 = "ptbench.config.data.montgomery_shenzhen.fold_7"
+montgomery-shenzhen-f8 = "ptbench.config.data.montgomery_shenzhen.fold_8"
+montgomery-shenzhen-f9 = "ptbench.config.data.montgomery_shenzhen.fold_9"
 
 # montgomery-shenzhen-indian aggregated dataset
-montgomery-shenzhen-indian = "ptbench.data.montgomery_shenzhen_indian.default"
-montgomery-shenzhen-indian-f0 = "ptbench.data.montgomery_shenzhen_indian.fold_0"
-montgomery-shenzhen-indian-f1 = "ptbench.data.montgomery_shenzhen_indian.fold_1"
-montgomery-shenzhen-indian-f2 = "ptbench.data.montgomery_shenzhen_indian.fold_2"
-montgomery-shenzhen-indian-f3 = "ptbench.data.montgomery_shenzhen_indian.fold_3"
-montgomery-shenzhen-indian-f4 = "ptbench.data.montgomery_shenzhen_indian.fold_4"
-montgomery-shenzhen-indian-f5 = "ptbench.data.montgomery_shenzhen_indian.fold_5"
-montgomery-shenzhen-indian-f6 = "ptbench.data.montgomery_shenzhen_indian.fold_6"
-montgomery-shenzhen-indian-f7 = "ptbench.data.montgomery_shenzhen_indian.fold_7"
-montgomery-shenzhen-indian-f8 = "ptbench.data.montgomery_shenzhen_indian.fold_8"
-montgomery-shenzhen-indian-f9 = "ptbench.data.montgomery_shenzhen_indian.fold_9"
+montgomery-shenzhen-indian = "ptbench.config.data.montgomery_shenzhen_indian.default"
+montgomery-shenzhen-indian-f0 = "ptbench.config.data.montgomery_shenzhen_indian.fold_0"
+montgomery-shenzhen-indian-f1 = "ptbench.config.data.montgomery_shenzhen_indian.fold_1"
+montgomery-shenzhen-indian-f2 = "ptbench.config.data.montgomery_shenzhen_indian.fold_2"
+montgomery-shenzhen-indian-f3 = "ptbench.config.data.montgomery_shenzhen_indian.fold_3"
+montgomery-shenzhen-indian-f4 = "ptbench.config.data.montgomery_shenzhen_indian.fold_4"
+montgomery-shenzhen-indian-f5 = "ptbench.config.data.montgomery_shenzhen_indian.fold_5"
+montgomery-shenzhen-indian-f6 = "ptbench.config.data.montgomery_shenzhen_indian.fold_6"
+montgomery-shenzhen-indian-f7 = "ptbench.config.data.montgomery_shenzhen_indian.fold_7"
+montgomery-shenzhen-indian-f8 = "ptbench.config.data.montgomery_shenzhen_indian.fold_8"
+montgomery-shenzhen-indian-f9 = "ptbench.config.data.montgomery_shenzhen_indian.fold_9"
 
 # montgomery-shenzhen-indian-tbx11k aggregated dataset
-montgomery-shenzhen-indian-tbx11k-v1 = "ptbench.data.montgomery_shenzhen_indian_tbx11k.v1_healthy_vs_atb"
-montgomery-shenzhen-indian-tbx11k-v1-f0 = "ptbench.data.montgomery_shenzhen_indian_tbx11k.v1_fold_0"
-montgomery-shenzhen-indian-tbx11k-v1-f1 = "ptbench.data.montgomery_shenzhen_indian_tbx11k.v1_fold_1"
-montgomery-shenzhen-indian-tbx11k-v1-f2 = "ptbench.data.montgomery_shenzhen_indian_tbx11k.v1_fold_2"
-montgomery-shenzhen-indian-tbx11k-v1-f3 = "ptbench.data.montgomery_shenzhen_indian_tbx11k.v1_fold_3"
-montgomery-shenzhen-indian-tbx11k-v1-f4 = "ptbench.data.montgomery_shenzhen_indian_tbx11k.v1_fold_4"
-montgomery-shenzhen-indian-tbx11k-v1-f5 = "ptbench.data.montgomery_shenzhen_indian_tbx11k.v1_fold_5"
-montgomery-shenzhen-indian-tbx11k-v1-f6 = "ptbench.data.montgomery_shenzhen_indian_tbx11k.v1_fold_6"
-montgomery-shenzhen-indian-tbx11k-v1-f7 = "ptbench.data.montgomery_shenzhen_indian_tbx11k.v1_fold_7"
-montgomery-shenzhen-indian-tbx11k-v1-f8 = "ptbench.data.montgomery_shenzhen_indian_tbx11k.v1_fold_8"
-montgomery-shenzhen-indian-tbx11k-v1-f9 = "ptbench.data.montgomery_shenzhen_indian_tbx11k.v1_fold_9"
-montgomery-shenzhen-indian-tbx11k-v2 = "ptbench.data.montgomery_shenzhen_indian_tbx11k.v2_others_vs_atb"
-montgomery-shenzhen-indian-tbx11k-v2-f0 = "ptbench.data.montgomery_shenzhen_indian_tbx11k.v2_fold_0"
-montgomery-shenzhen-indian-tbx11k-v2-f1 = "ptbench.data.montgomery_shenzhen_indian_tbx11k.v2_fold_1"
-montgomery-shenzhen-indian-tbx11k-v2-f2 = "ptbench.data.montgomery_shenzhen_indian_tbx11k.v2_fold_2"
-montgomery-shenzhen-indian-tbx11k-v2-f3 = "ptbench.data.montgomery_shenzhen_indian_tbx11k.v2_fold_3"
-montgomery-shenzhen-indian-tbx11k-v2-f4 = "ptbench.data.montgomery_shenzhen_indian_tbx11k.v2_fold_4"
-montgomery-shenzhen-indian-tbx11k-v2-f5 = "ptbench.data.montgomery_shenzhen_indian_tbx11k.v2_fold_5"
-montgomery-shenzhen-indian-tbx11k-v2-f6 = "ptbench.data.montgomery_shenzhen_indian_tbx11k.v2_fold_6"
-montgomery-shenzhen-indian-tbx11k-v2-f7 = "ptbench.data.montgomery_shenzhen_indian_tbx11k.v2_fold_7"
-montgomery-shenzhen-indian-tbx11k-v2-f8 = "ptbench.data.montgomery_shenzhen_indian_tbx11k.v2_fold_8"
-montgomery-shenzhen-indian-tbx11k-v2-f9 = "ptbench.data.montgomery_shenzhen_indian_tbx11k.v2_fold_9"
+montgomery-shenzhen-indian-tbx11k-v1 = "ptbench.config.data.montgomery_shenzhen_indian_tbx11k.v1_healthy_vs_atb"
+montgomery-shenzhen-indian-tbx11k-v1-f0 = "ptbench.config.data.montgomery_shenzhen_indian_tbx11k.v1_fold_0"
+montgomery-shenzhen-indian-tbx11k-v1-f1 = "ptbench.config.data.montgomery_shenzhen_indian_tbx11k.v1_fold_1"
+montgomery-shenzhen-indian-tbx11k-v1-f2 = "ptbench.config.data.montgomery_shenzhen_indian_tbx11k.v1_fold_2"
+montgomery-shenzhen-indian-tbx11k-v1-f3 = "ptbench.config.data.montgomery_shenzhen_indian_tbx11k.v1_fold_3"
+montgomery-shenzhen-indian-tbx11k-v1-f4 = "ptbench.config.data.montgomery_shenzhen_indian_tbx11k.v1_fold_4"
+montgomery-shenzhen-indian-tbx11k-v1-f5 = "ptbench.config.data.montgomery_shenzhen_indian_tbx11k.v1_fold_5"
+montgomery-shenzhen-indian-tbx11k-v1-f6 = "ptbench.config.data.montgomery_shenzhen_indian_tbx11k.v1_fold_6"
+montgomery-shenzhen-indian-tbx11k-v1-f7 = "ptbench.config.data.montgomery_shenzhen_indian_tbx11k.v1_fold_7"
+montgomery-shenzhen-indian-tbx11k-v1-f8 = "ptbench.config.data.montgomery_shenzhen_indian_tbx11k.v1_fold_8"
+montgomery-shenzhen-indian-tbx11k-v1-f9 = "ptbench.config.data.montgomery_shenzhen_indian_tbx11k.v1_fold_9"
+montgomery-shenzhen-indian-tbx11k-v2 = "ptbench.config.data.montgomery_shenzhen_indian_tbx11k.v2_others_vs_atb"
+montgomery-shenzhen-indian-tbx11k-v2-f0 = "ptbench.config.data.montgomery_shenzhen_indian_tbx11k.v2_fold_0"
+montgomery-shenzhen-indian-tbx11k-v2-f1 = "ptbench.config.data.montgomery_shenzhen_indian_tbx11k.v2_fold_1"
+montgomery-shenzhen-indian-tbx11k-v2-f2 = "ptbench.config.data.montgomery_shenzhen_indian_tbx11k.v2_fold_2"
+montgomery-shenzhen-indian-tbx11k-v2-f3 = "ptbench.config.data.montgomery_shenzhen_indian_tbx11k.v2_fold_3"
+montgomery-shenzhen-indian-tbx11k-v2-f4 = "ptbench.config.data.montgomery_shenzhen_indian_tbx11k.v2_fold_4"
+montgomery-shenzhen-indian-tbx11k-v2-f5 = "ptbench.config.data.montgomery_shenzhen_indian_tbx11k.v2_fold_5"
+montgomery-shenzhen-indian-tbx11k-v2-f6 = "ptbench.config.data.montgomery_shenzhen_indian_tbx11k.v2_fold_6"
+montgomery-shenzhen-indian-tbx11k-v2-f7 = "ptbench.config.data.montgomery_shenzhen_indian_tbx11k.v2_fold_7"
+montgomery-shenzhen-indian-tbx11k-v2-f8 = "ptbench.config.data.montgomery_shenzhen_indian_tbx11k.v2_fold_8"
+montgomery-shenzhen-indian-tbx11k-v2-f9 = "ptbench.config.data.montgomery_shenzhen_indian_tbx11k.v2_fold_9"
 
 # tbpoc dataset (only cross-validation folds)
-tbpoc-f0 = "ptbench.data.tbpoc.fold_0"
-tbpoc-f1 = "ptbench.data.tbpoc.fold_1"
-tbpoc-f2 = "ptbench.data.tbpoc.fold_2"
-tbpoc-f3 = "ptbench.data.tbpoc.fold_3"
-tbpoc-f4 = "ptbench.data.tbpoc.fold_4"
-tbpoc-f5 = "ptbench.data.tbpoc.fold_5"
-tbpoc-f6 = "ptbench.data.tbpoc.fold_6"
-tbpoc-f7 = "ptbench.data.tbpoc.fold_7"
-tbpoc-f8 = "ptbench.data.tbpoc.fold_8"
-tbpoc-f9 = "ptbench.data.tbpoc.fold_9"
+tbpoc-f0 = "ptbench.config.data.tbpoc.fold_0"
+tbpoc-f1 = "ptbench.config.data.tbpoc.fold_1"
+tbpoc-f2 = "ptbench.config.data.tbpoc.fold_2"
+tbpoc-f3 = "ptbench.config.data.tbpoc.fold_3"
+tbpoc-f4 = "ptbench.config.data.tbpoc.fold_4"
+tbpoc-f5 = "ptbench.config.data.tbpoc.fold_5"
+tbpoc-f6 = "ptbench.config.data.tbpoc.fold_6"
+tbpoc-f7 = "ptbench.config.data.tbpoc.fold_7"
+tbpoc-f8 = "ptbench.config.data.tbpoc.fold_8"
+tbpoc-f9 = "ptbench.config.data.tbpoc.fold_9"
 
 # hivtb dataset (only cross-validation folds)
-hivtb-f0 = "ptbench.data.hivtb.fold_0"
-hivtb-f1 = "ptbench.data.hivtb.fold_1"
-hivtb-f2 = "ptbench.data.hivtb.fold_2"
-hivtb-f3 = "ptbench.data.hivtb.fold_3"
-hivtb-f4 = "ptbench.data.hivtb.fold_4"
-hivtb-f5 = "ptbench.data.hivtb.fold_5"
-hivtb-f6 = "ptbench.data.hivtb.fold_6"
-hivtb-f7 = "ptbench.data.hivtb.fold_7"
-hivtb-f8 = "ptbench.data.hivtb.fold_8"
-hivtb-f9 = "ptbench.data.hivtb.fold_9"
+hivtb-f0 = "ptbench.config.data.hivtb.fold_0"
+hivtb-f1 = "ptbench.config.data.hivtb.fold_1"
+hivtb-f2 = "ptbench.config.data.hivtb.fold_2"
+hivtb-f3 = "ptbench.config.data.hivtb.fold_3"
+hivtb-f4 = "ptbench.config.data.hivtb.fold_4"
+hivtb-f5 = "ptbench.config.data.hivtb.fold_5"
+hivtb-f6 = "ptbench.config.data.hivtb.fold_6"
+hivtb-f7 = "ptbench.config.data.hivtb.fold_7"
+hivtb-f8 = "ptbench.config.data.hivtb.fold_8"
+hivtb-f9 = "ptbench.config.data.hivtb.fold_9"
 
 # NIH CXR14 (relabeled), multi-class (14 labels)
-nih-cxr14 = "ptbench.data.nih_cxr14.default"
-nih-cxr14-cardiomegaly = "ptbench.data.nih_cxr14.cardiomegaly"
+nih-cxr14 = "ptbench.config.data.nih_cxr14.default"
+nih-cxr14-cardiomegaly = "ptbench.config.data.nih_cxr14.cardiomegaly"
 
 # PadChest, multi-class (varied number of labels)
-padchest-idiap = "ptbench.data.padchest.idiap"
-padchest-tb-idiap = "ptbench.data.padchest.tb_idiap"
-padchest-no-tb-idiap = "ptbench.data.padchest.no_tb_idiap"
-padchest-cardiomegaly-idiap = "ptbench.data.padchest.cardiomegaly_idiap"
+padchest-idiap = "ptbench.config.data.padchest.idiap"
+padchest-tb-idiap = "ptbench.config.data.padchest.tb_idiap"
+padchest-no-tb-idiap = "ptbench.config.data.padchest.no_tb_idiap"
+padchest-cardiomegaly-idiap = "ptbench.config.data.padchest.cardiomegaly_idiap"
 
 # NIH CXR14 / PadChest aggregated dataset
-nih-cxr14-padchest = "ptbench.data.nih_cxr14_padchest.idiap"
+nih-cxr14-padchest = "ptbench.config.data.nih_cxr14_padchest.idiap"
 
 # montgomery-shenzhen-indian-padchest aggregated dataset
-montgomery-shenzhen-indian-padchest = "ptbench.data.montgomery_shenzhen_indian_padchest.default"
+montgomery-shenzhen-indian-padchest = "ptbench.config.data.montgomery_shenzhen_indian_padchest.default"
 
 [tool.setuptools]
 zip-safe = true
diff --git a/src/ptbench/data/hivtb/__init__.py b/src/ptbench/config/__init__.py
similarity index 100%
rename from src/ptbench/data/hivtb/__init__.py
rename to src/ptbench/config/__init__.py
diff --git a/src/ptbench/data/indian/__init__.py b/src/ptbench/config/data/hivtb/__init__.py
similarity index 100%
rename from src/ptbench/data/indian/__init__.py
rename to src/ptbench/config/data/hivtb/__init__.py
diff --git a/src/ptbench/data/hivtb/datamodule.py b/src/ptbench/config/data/hivtb/datamodule.py
similarity index 85%
rename from src/ptbench/data/hivtb/datamodule.py
rename to src/ptbench/config/data/hivtb/datamodule.py
index 2c68c85d54ca9d0369d5a3472cb816bc1859bc87..653743a53d2ec8a9d942136be61e0818fff01aa0 100644
--- a/src/ptbench/data/hivtb/datamodule.py
+++ b/src/ptbench/config/data/hivtb/datamodule.py
@@ -14,13 +14,17 @@ import PIL.Image
 
 from torchvision.transforms.functional import center_crop, to_tensor
 
-from ...utils.rc import load_rc
-from ..datamodule import CachingDataModule
-from ..image_utils import remove_black_borders
-from ..split import JSONDatabaseSplit
-from ..typing import DatabaseSplit
-from ..typing import RawDataLoader as _BaseRawDataLoader
-from ..typing import Sample
+from ptbench.data.datamodule import CachingDataModule
+from ptbench.data.image_utils import remove_black_borders
+from ptbench.data.split import JSONDatabaseSplit
+from ptbench.data.typing import DatabaseSplit
+from ptbench.data.typing import RawDataLoader as _BaseRawDataLoader
+from ptbench.data.typing import Sample
+from ptbench.utils.rc import load_rc
+
+CONFIGURATION_KEY_DATADIR = "datadir." + (__name__.rsplit(".", 2)[-2])
+"""Key to search for in the configuration file for the root directory of this
+database."""
 
 
 class RawDataLoader(_BaseRawDataLoader):
@@ -32,7 +36,7 @@ class RawDataLoader(_BaseRawDataLoader):
 
     def __init__(self):
         self.datadir = load_rc().get(
-            "datadir.hivtb", os.path.realpath(os.curdir)
+            CONFIGURATION_KEY_DATADIR, os.path.realpath(os.curdir)
         )
 
     def sample(self, sample: tuple[str, int]) -> Sample:
diff --git a/src/ptbench/data/hivtb/fold-0.json b/src/ptbench/config/data/hivtb/fold-0.json
similarity index 100%
rename from src/ptbench/data/hivtb/fold-0.json
rename to src/ptbench/config/data/hivtb/fold-0.json
diff --git a/src/ptbench/data/hivtb/fold-1.json b/src/ptbench/config/data/hivtb/fold-1.json
similarity index 100%
rename from src/ptbench/data/hivtb/fold-1.json
rename to src/ptbench/config/data/hivtb/fold-1.json
diff --git a/src/ptbench/data/hivtb/fold-2.json b/src/ptbench/config/data/hivtb/fold-2.json
similarity index 100%
rename from src/ptbench/data/hivtb/fold-2.json
rename to src/ptbench/config/data/hivtb/fold-2.json
diff --git a/src/ptbench/data/hivtb/fold-3.json b/src/ptbench/config/data/hivtb/fold-3.json
similarity index 100%
rename from src/ptbench/data/hivtb/fold-3.json
rename to src/ptbench/config/data/hivtb/fold-3.json
diff --git a/src/ptbench/data/hivtb/fold-4.json b/src/ptbench/config/data/hivtb/fold-4.json
similarity index 100%
rename from src/ptbench/data/hivtb/fold-4.json
rename to src/ptbench/config/data/hivtb/fold-4.json
diff --git a/src/ptbench/data/hivtb/fold-5.json b/src/ptbench/config/data/hivtb/fold-5.json
similarity index 100%
rename from src/ptbench/data/hivtb/fold-5.json
rename to src/ptbench/config/data/hivtb/fold-5.json
diff --git a/src/ptbench/data/hivtb/fold-6.json b/src/ptbench/config/data/hivtb/fold-6.json
similarity index 100%
rename from src/ptbench/data/hivtb/fold-6.json
rename to src/ptbench/config/data/hivtb/fold-6.json
diff --git a/src/ptbench/data/hivtb/fold-7.json b/src/ptbench/config/data/hivtb/fold-7.json
similarity index 100%
rename from src/ptbench/data/hivtb/fold-7.json
rename to src/ptbench/config/data/hivtb/fold-7.json
diff --git a/src/ptbench/data/hivtb/fold-8.json b/src/ptbench/config/data/hivtb/fold-8.json
similarity index 100%
rename from src/ptbench/data/hivtb/fold-8.json
rename to src/ptbench/config/data/hivtb/fold-8.json
diff --git a/src/ptbench/data/hivtb/fold-9.json b/src/ptbench/config/data/hivtb/fold-9.json
similarity index 100%
rename from src/ptbench/data/hivtb/fold-9.json
rename to src/ptbench/config/data/hivtb/fold-9.json
diff --git a/src/ptbench/data/hivtb/fold_0.py b/src/ptbench/config/data/hivtb/fold_0.py
similarity index 65%
rename from src/ptbench/data/hivtb/fold_0.py
rename to src/ptbench/config/data/hivtb/fold_0.py
index c8a11de17b265005b9bb209c8a7ca16e82f83064..4e00590f44f585e4a68f69b56fbc43b240e95a53 100644
--- a/src/ptbench/data/hivtb/fold_0.py
+++ b/src/ptbench/config/data/hivtb/fold_0.py
@@ -5,9 +5,9 @@
 
 Database reference: [HIV-TB-2019]_
 
-See :py:class:`.hivtb.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.hivtb.datamodule.DataModule` for technical details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.hivtb.datamodule import DataModule
 
 datamodule = DataModule("fold-0.json")
diff --git a/src/ptbench/data/hivtb/fold_1.py b/src/ptbench/config/data/hivtb/fold_1.py
similarity index 65%
rename from src/ptbench/data/hivtb/fold_1.py
rename to src/ptbench/config/data/hivtb/fold_1.py
index 3b2434e0762250518fd3bfd58fc13d14617a6d7e..55333dd007e5e275c051cb34a6fc74bf2fddfbb2 100644
--- a/src/ptbench/data/hivtb/fold_1.py
+++ b/src/ptbench/config/data/hivtb/fold_1.py
@@ -5,9 +5,9 @@
 
 Database reference: [HIV-TB-2019]_
 
-See :py:class:`.hivtb.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.hivtb.datamodule.DataModule` for technical details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.hivtb.datamodule import DataModule
 
 datamodule = DataModule("fold-1.json")
diff --git a/src/ptbench/data/hivtb/fold_2.py b/src/ptbench/config/data/hivtb/fold_2.py
similarity index 65%
rename from src/ptbench/data/hivtb/fold_2.py
rename to src/ptbench/config/data/hivtb/fold_2.py
index ac95eca19a012d315d0b4c91a8afd0e8dedf69bb..5c8fd9b7af6c7a64c4995fe7ba240426585b5319 100644
--- a/src/ptbench/data/hivtb/fold_2.py
+++ b/src/ptbench/config/data/hivtb/fold_2.py
@@ -5,9 +5,9 @@
 
 Database reference: [HIV-TB-2019]_
 
-See :py:class:`.hivtb.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.hivtb.datamodule.DataModule` for technical details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.hivtb.datamodule import DataModule
 
 datamodule = DataModule("fold-2.json")
diff --git a/src/ptbench/data/hivtb/fold_3.py b/src/ptbench/config/data/hivtb/fold_3.py
similarity index 65%
rename from src/ptbench/data/hivtb/fold_3.py
rename to src/ptbench/config/data/hivtb/fold_3.py
index 1d662e2773bcb9e511ae2478bf3525ef269d3ff4..5d1b308c8afa6b9bb32bbc96272bfaa1985f7c18 100644
--- a/src/ptbench/data/hivtb/fold_3.py
+++ b/src/ptbench/config/data/hivtb/fold_3.py
@@ -5,9 +5,9 @@
 
 Database reference: [HIV-TB-2019]_
 
-See :py:class:`.hivtb.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.hivtb.datamodule.DataModule` for technical details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.hivtb.datamodule import DataModule
 
 datamodule = DataModule("fold-3.json")
diff --git a/src/ptbench/data/hivtb/fold_4.py b/src/ptbench/config/data/hivtb/fold_4.py
similarity index 65%
rename from src/ptbench/data/hivtb/fold_4.py
rename to src/ptbench/config/data/hivtb/fold_4.py
index 1f59dcf53fae47a7d44d28beae581930df6f9201..77c2073a2b325e3c72bf9800415200739cb0e69e 100644
--- a/src/ptbench/data/hivtb/fold_4.py
+++ b/src/ptbench/config/data/hivtb/fold_4.py
@@ -5,9 +5,9 @@
 
 Database reference: [HIV-TB-2019]_
 
-See :py:class:`.hivtb.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.hivtb.datamodule.DataModule` for technical details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.hivtb.datamodule import DataModule
 
 datamodule = DataModule("fold-4.json")
diff --git a/src/ptbench/data/hivtb/fold_5.py b/src/ptbench/config/data/hivtb/fold_5.py
similarity index 65%
rename from src/ptbench/data/hivtb/fold_5.py
rename to src/ptbench/config/data/hivtb/fold_5.py
index 03170e280e35c77cffcb58919b5fadc1411f93c1..e06f9dd1fb3de22d4e7d32ac33c6aa66f5707205 100644
--- a/src/ptbench/data/hivtb/fold_5.py
+++ b/src/ptbench/config/data/hivtb/fold_5.py
@@ -5,9 +5,9 @@
 
 Database reference: [HIV-TB-2019]_
 
-See :py:class:`.hivtb.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.hivtb.datamodule.DataModule` for technical details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.hivtb.datamodule import DataModule
 
 datamodule = DataModule("fold-5.json")
diff --git a/src/ptbench/data/hivtb/fold_6.py b/src/ptbench/config/data/hivtb/fold_6.py
similarity index 65%
rename from src/ptbench/data/hivtb/fold_6.py
rename to src/ptbench/config/data/hivtb/fold_6.py
index 9950b0df32b299344d9df5e1df11c615b000dea9..4b7db6de8847059e92386c84f5a0d7fe7937edc8 100644
--- a/src/ptbench/data/hivtb/fold_6.py
+++ b/src/ptbench/config/data/hivtb/fold_6.py
@@ -5,9 +5,9 @@
 
 Database reference: [HIV-TB-2019]_
 
-See :py:class:`.hivtb.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.hivtb.datamodule.DataModule` for technical details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.hivtb.datamodule import DataModule
 
 datamodule = DataModule("fold-6.json")
diff --git a/src/ptbench/data/hivtb/fold_7.py b/src/ptbench/config/data/hivtb/fold_7.py
similarity index 65%
rename from src/ptbench/data/hivtb/fold_7.py
rename to src/ptbench/config/data/hivtb/fold_7.py
index 043ef9decfaf0ebac356bdd59fbeae3e361b5e3b..3670047caa59ea9bcf9b3b9c75a06553d288503c 100644
--- a/src/ptbench/data/hivtb/fold_7.py
+++ b/src/ptbench/config/data/hivtb/fold_7.py
@@ -5,9 +5,9 @@
 
 Database reference: [HIV-TB-2019]_
 
-See :py:class:`.hivtb.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.hivtb.datamodule.DataModule` for technical details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.hivtb.datamodule import DataModule
 
 datamodule = DataModule("fold-7.json")
diff --git a/src/ptbench/data/hivtb/fold_8.py b/src/ptbench/config/data/hivtb/fold_8.py
similarity index 65%
rename from src/ptbench/data/hivtb/fold_8.py
rename to src/ptbench/config/data/hivtb/fold_8.py
index 9aa80c5174725280e2a2fda667cc5010baae70ad..c0900d155b0bd59e9afa95cfa7eb08268fd53b3a 100644
--- a/src/ptbench/data/hivtb/fold_8.py
+++ b/src/ptbench/config/data/hivtb/fold_8.py
@@ -5,9 +5,9 @@
 
 Database reference: [HIV-TB-2019]_
 
-See :py:class:`.hivtb.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.hivtb.datamodule.DataModule` for technical details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.hivtb.datamodule import DataModule
 
 datamodule = DataModule("fold-8.json")
diff --git a/src/ptbench/data/hivtb/fold_9.py b/src/ptbench/config/data/hivtb/fold_9.py
similarity index 65%
rename from src/ptbench/data/hivtb/fold_9.py
rename to src/ptbench/config/data/hivtb/fold_9.py
index 94a38a15e01a05f9917f0d14a4fe1062b516ed6c..96ceb5963cf8d1d713ae3a758f34c54b4b5825f2 100644
--- a/src/ptbench/data/hivtb/fold_9.py
+++ b/src/ptbench/config/data/hivtb/fold_9.py
@@ -5,9 +5,9 @@
 
 Database reference: [HIV-TB-2019]_
 
-See :py:class:`.hivtb.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.hivtb.datamodule.DataModule` for technical details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.hivtb.datamodule import DataModule
 
 datamodule = DataModule("fold-9.json")
diff --git a/src/ptbench/data/montgomery/__init__.py b/src/ptbench/config/data/indian/__init__.py
similarity index 100%
rename from src/ptbench/data/montgomery/__init__.py
rename to src/ptbench/config/data/indian/__init__.py
diff --git a/src/ptbench/data/indian/datamodule.py b/src/ptbench/config/data/indian/datamodule.py
similarity index 78%
rename from src/ptbench/data/indian/datamodule.py
rename to src/ptbench/config/data/indian/datamodule.py
index a17a0befefad3dd84934acc8990575fc0befbb45..1c514f47c2e5c1f90df40de9c67ccac00fbbffc5 100644
--- a/src/ptbench/data/indian/datamodule.py
+++ b/src/ptbench/config/data/indian/datamodule.py
@@ -8,10 +8,14 @@ Database reference: [INDIAN-2013]_
 
 import importlib.resources
 
-from ..datamodule import CachingDataModule
-from ..shenzhen.datamodule import RawDataLoader
-from ..split import JSONDatabaseSplit
-from ..typing import DatabaseSplit
+from ptbench.config.data.shenzhen.datamodule import RawDataLoader
+from ptbench.data.datamodule import CachingDataModule
+from ptbench.data.split import JSONDatabaseSplit
+from ptbench.data.typing import DatabaseSplit
+
+CONFIGURATION_KEY_DATADIR = "datadir." + (__name__.rsplit(".", 2)[-2])
+"""Key to search for in the configuration file for the root directory of this
+database."""
 
 
 def make_split(basename: str) -> DatabaseSplit:
@@ -60,5 +64,7 @@ class DataModule(CachingDataModule):
     def __init__(self, split_filename: str):
         super().__init__(
             database_split=make_split(split_filename),
-            raw_data_loader=RawDataLoader(config_variable="datadir.indian"),
+            raw_data_loader=RawDataLoader(
+                config_variable=CONFIGURATION_KEY_DATADIR
+            ),
         )
diff --git a/src/ptbench/data/indian/default.json b/src/ptbench/config/data/indian/default.json
similarity index 100%
rename from src/ptbench/data/indian/default.json
rename to src/ptbench/config/data/indian/default.json
diff --git a/src/ptbench/data/indian/default.py b/src/ptbench/config/data/indian/default.py
similarity index 65%
rename from src/ptbench/data/indian/default.py
rename to src/ptbench/config/data/indian/default.py
index cd5c98bf6f4fe89a43a0e9a186230f48184edcef..33bcb48d4d38e9e6f72953fe221c303a030cc6a5 100644
--- a/src/ptbench/data/indian/default.py
+++ b/src/ptbench/config/data/indian/default.py
@@ -5,9 +5,9 @@
 
 Database reference: [INDIAN-2013]_
 
-See :py:class:`.indian.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.indian.datamodule.DataModule` for technical details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.indian.datamodule import DataModule
 
 datamodule = DataModule("default.json")
diff --git a/src/ptbench/data/indian/fold-0.json b/src/ptbench/config/data/indian/fold-0.json
similarity index 100%
rename from src/ptbench/data/indian/fold-0.json
rename to src/ptbench/config/data/indian/fold-0.json
diff --git a/src/ptbench/data/indian/fold-1.json b/src/ptbench/config/data/indian/fold-1.json
similarity index 100%
rename from src/ptbench/data/indian/fold-1.json
rename to src/ptbench/config/data/indian/fold-1.json
diff --git a/src/ptbench/data/indian/fold-2.json b/src/ptbench/config/data/indian/fold-2.json
similarity index 100%
rename from src/ptbench/data/indian/fold-2.json
rename to src/ptbench/config/data/indian/fold-2.json
diff --git a/src/ptbench/data/indian/fold-3.json b/src/ptbench/config/data/indian/fold-3.json
similarity index 100%
rename from src/ptbench/data/indian/fold-3.json
rename to src/ptbench/config/data/indian/fold-3.json
diff --git a/src/ptbench/data/indian/fold-4.json b/src/ptbench/config/data/indian/fold-4.json
similarity index 100%
rename from src/ptbench/data/indian/fold-4.json
rename to src/ptbench/config/data/indian/fold-4.json
diff --git a/src/ptbench/data/indian/fold-5.json b/src/ptbench/config/data/indian/fold-5.json
similarity index 100%
rename from src/ptbench/data/indian/fold-5.json
rename to src/ptbench/config/data/indian/fold-5.json
diff --git a/src/ptbench/data/indian/fold-6.json b/src/ptbench/config/data/indian/fold-6.json
similarity index 100%
rename from src/ptbench/data/indian/fold-6.json
rename to src/ptbench/config/data/indian/fold-6.json
diff --git a/src/ptbench/data/indian/fold-7.json b/src/ptbench/config/data/indian/fold-7.json
similarity index 100%
rename from src/ptbench/data/indian/fold-7.json
rename to src/ptbench/config/data/indian/fold-7.json
diff --git a/src/ptbench/data/indian/fold-8.json b/src/ptbench/config/data/indian/fold-8.json
similarity index 100%
rename from src/ptbench/data/indian/fold-8.json
rename to src/ptbench/config/data/indian/fold-8.json
diff --git a/src/ptbench/data/indian/fold-9.json b/src/ptbench/config/data/indian/fold-9.json
similarity index 100%
rename from src/ptbench/data/indian/fold-9.json
rename to src/ptbench/config/data/indian/fold-9.json
diff --git a/src/ptbench/data/indian/fold_0.py b/src/ptbench/config/data/indian/fold_0.py
similarity index 66%
rename from src/ptbench/data/indian/fold_0.py
rename to src/ptbench/config/data/indian/fold_0.py
index e316888dfe470098fe3f4404b101c6d256376cbf..6a8e6c5be3970aac334d2dd69511eba47e6ee884 100644
--- a/src/ptbench/data/indian/fold_0.py
+++ b/src/ptbench/config/data/indian/fold_0.py
@@ -6,9 +6,9 @@ fold 0).
 
 Database reference: [INDIAN-2013]_
 
-See :py:class:`.indian.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.indian.datamodule.DataModule` for technical details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.indian.datamodule import DataModule
 
 datamodule = DataModule("fold-0.json")
diff --git a/src/ptbench/data/indian/fold_1.py b/src/ptbench/config/data/indian/fold_1.py
similarity index 66%
rename from src/ptbench/data/indian/fold_1.py
rename to src/ptbench/config/data/indian/fold_1.py
index 000a8410b9a18131a78ec08c5ab1c772ee6263ac..029b6df6bb339e51e52bc93b7c1b46ccaecbb58d 100644
--- a/src/ptbench/data/indian/fold_1.py
+++ b/src/ptbench/config/data/indian/fold_1.py
@@ -6,9 +6,9 @@ fold 1).
 
 Database reference: [INDIAN-2013]_
 
-See :py:class:`.indian.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.indian.datamodule.DataModule` for technical details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.indian.datamodule import DataModule
 
 datamodule = DataModule("fold-1.json")
diff --git a/src/ptbench/data/indian/fold_2.py b/src/ptbench/config/data/indian/fold_2.py
similarity index 66%
rename from src/ptbench/data/indian/fold_2.py
rename to src/ptbench/config/data/indian/fold_2.py
index 9f9152b3ba40d54d6feb4ececed049cd12e08705..f54f35e5ad531eb1d7531ac28fb6ab5e8019e528 100644
--- a/src/ptbench/data/indian/fold_2.py
+++ b/src/ptbench/config/data/indian/fold_2.py
@@ -6,9 +6,9 @@ fold 2).
 
 Database reference: [INDIAN-2013]_
 
-See :py:class:`.indian.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.indian.datamodule.DataModule` for technical details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.indian.datamodule import DataModule
 
 datamodule = DataModule("fold-2.json")
diff --git a/src/ptbench/data/indian/fold_3.py b/src/ptbench/config/data/indian/fold_3.py
similarity index 66%
rename from src/ptbench/data/indian/fold_3.py
rename to src/ptbench/config/data/indian/fold_3.py
index 16475b98d6c44947ae7ef12a239be10e3a726730..0c49359219da79a20531d933ad264d3c3383227f 100644
--- a/src/ptbench/data/indian/fold_3.py
+++ b/src/ptbench/config/data/indian/fold_3.py
@@ -6,9 +6,9 @@ fold 3).
 
 Database reference: [INDIAN-2013]_
 
-See :py:class:`.indian.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.indian.datamodule.DataModule` for technical details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.indian.datamodule import DataModule
 
 datamodule = DataModule("fold-3.json")
diff --git a/src/ptbench/data/indian/fold_4.py b/src/ptbench/config/data/indian/fold_4.py
similarity index 66%
rename from src/ptbench/data/indian/fold_4.py
rename to src/ptbench/config/data/indian/fold_4.py
index e2844b97da1f8bf1d11c9e09fb6f9851000a4c50..52a7b792d1d091d81b5bad508d99fdef1f4c683f 100644
--- a/src/ptbench/data/indian/fold_4.py
+++ b/src/ptbench/config/data/indian/fold_4.py
@@ -6,9 +6,9 @@ fold 4).
 
 Database reference: [INDIAN-2013]_
 
-See :py:class:`.indian.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.indian.datamodule.DataModule` for technical details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.indian.datamodule import DataModule
 
 datamodule = DataModule("fold-4.json")
diff --git a/src/ptbench/data/indian/fold_5.py b/src/ptbench/config/data/indian/fold_5.py
similarity index 66%
rename from src/ptbench/data/indian/fold_5.py
rename to src/ptbench/config/data/indian/fold_5.py
index ef5835281795dfada8d5c8159ca35b1608899531..843a1e8c8b847075c3256580268ed3331b948130 100644
--- a/src/ptbench/data/indian/fold_5.py
+++ b/src/ptbench/config/data/indian/fold_5.py
@@ -6,9 +6,9 @@ fold 5).
 
 Database reference: [INDIAN-2013]_
 
-See :py:class:`.indian.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.indian.datamodule.DataModule` for technical details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.indian.datamodule import DataModule
 
 datamodule = DataModule("fold-5.json")
diff --git a/src/ptbench/data/indian/fold_6.py b/src/ptbench/config/data/indian/fold_6.py
similarity index 66%
rename from src/ptbench/data/indian/fold_6.py
rename to src/ptbench/config/data/indian/fold_6.py
index 59c168c5e4f9e2b32525707987f40744325077ec..9970d6f6422ae9aa7950c449af8535918ff486f7 100644
--- a/src/ptbench/data/indian/fold_6.py
+++ b/src/ptbench/config/data/indian/fold_6.py
@@ -6,9 +6,9 @@ fold 6).
 
 Database reference: [INDIAN-2013]_
 
-See :py:class:`.indian.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.indian.datamodule.DataModule` for technical details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.indian.datamodule import DataModule
 
 datamodule = DataModule("fold-6.json")
diff --git a/src/ptbench/data/indian/fold_7.py b/src/ptbench/config/data/indian/fold_7.py
similarity index 66%
rename from src/ptbench/data/indian/fold_7.py
rename to src/ptbench/config/data/indian/fold_7.py
index 9eda09ad1a62330e169304a80ac356197ec2f42c..5bbef8dbba072a108caa80cc28455f28cd7fcd9d 100644
--- a/src/ptbench/data/indian/fold_7.py
+++ b/src/ptbench/config/data/indian/fold_7.py
@@ -6,9 +6,9 @@ fold 7).
 
 Database reference: [INDIAN-2013]_
 
-See :py:class:`.indian.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.indian.datamodule.DataModule` for technical details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.indian.datamodule import DataModule
 
 datamodule = DataModule("fold-7.json")
diff --git a/src/ptbench/data/indian/fold_8.py b/src/ptbench/config/data/indian/fold_8.py
similarity index 66%
rename from src/ptbench/data/indian/fold_8.py
rename to src/ptbench/config/data/indian/fold_8.py
index abc54bac7c6957c0df626a6e1f339cf2144e9081..0416153fc061e81d02c189128b4d0b9775697bec 100644
--- a/src/ptbench/data/indian/fold_8.py
+++ b/src/ptbench/config/data/indian/fold_8.py
@@ -6,9 +6,9 @@ fold 8).
 
 Database reference: [INDIAN-2013]_
 
-See :py:class:`.indian.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.indian.datamodule.DataModule` for technical details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.indian.datamodule import DataModule
 
 datamodule = DataModule("fold-8.json")
diff --git a/src/ptbench/data/indian/fold_9.py b/src/ptbench/config/data/indian/fold_9.py
similarity index 66%
rename from src/ptbench/data/indian/fold_9.py
rename to src/ptbench/config/data/indian/fold_9.py
index cb4aa6bea2754ad3ee4a94ec3d545a1885de534e..3d4df2a51a8b721d24f6be53eca1c038393ffe35 100644
--- a/src/ptbench/data/indian/fold_9.py
+++ b/src/ptbench/config/data/indian/fold_9.py
@@ -6,9 +6,9 @@ fold 9).
 
 Database reference: [INDIAN-2013]_
 
-See :py:class:`.indian.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.indian.datamodule.DataModule` for technical details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.indian.datamodule import DataModule
 
 datamodule = DataModule("fold-9.json")
diff --git a/src/ptbench/data/montgomery_shenzhen/__init__.py b/src/ptbench/config/data/montgomery/__init__.py
similarity index 100%
rename from src/ptbench/data/montgomery_shenzhen/__init__.py
rename to src/ptbench/config/data/montgomery/__init__.py
diff --git a/src/ptbench/data/montgomery/datamodule.py b/src/ptbench/config/data/montgomery/datamodule.py
similarity index 86%
rename from src/ptbench/data/montgomery/datamodule.py
rename to src/ptbench/config/data/montgomery/datamodule.py
index b5ed48dd10f3949f40917eac341037c6e3153194..84cdbc77d3b024fa07f4fe6a9bd6a0b8c132e6e1 100644
--- a/src/ptbench/data/montgomery/datamodule.py
+++ b/src/ptbench/config/data/montgomery/datamodule.py
@@ -13,13 +13,17 @@ import PIL.Image
 
 from torchvision.transforms.functional import center_crop, to_tensor
 
-from ...utils.rc import load_rc
-from ..datamodule import CachingDataModule
-from ..image_utils import remove_black_borders
-from ..split import JSONDatabaseSplit
-from ..typing import DatabaseSplit
-from ..typing import RawDataLoader as _BaseRawDataLoader
-from ..typing import Sample
+from ptbench.data.datamodule import CachingDataModule
+from ptbench.data.image_utils import remove_black_borders
+from ptbench.data.split import JSONDatabaseSplit
+from ptbench.data.typing import DatabaseSplit
+from ptbench.data.typing import RawDataLoader as _BaseRawDataLoader
+from ptbench.data.typing import Sample
+from ptbench.utils.rc import load_rc
+
+CONFIGURATION_KEY_DATADIR = "datadir." + (__name__.rsplit(".", 2)[-2])
+"""Key to search for in the configuration file for the root directory of this
+database."""
 
 
 class RawDataLoader(_BaseRawDataLoader):
@@ -31,7 +35,7 @@ class RawDataLoader(_BaseRawDataLoader):
 
     def __init__(self):
         self.datadir = load_rc().get(
-            "datadir.montgomery", os.path.realpath(os.curdir)
+            CONFIGURATION_KEY_DATADIR, os.path.realpath(os.curdir)
         )
 
     def sample(self, sample: tuple[str, int]) -> Sample:
diff --git a/src/ptbench/data/montgomery/default.json b/src/ptbench/config/data/montgomery/default.json
similarity index 100%
rename from src/ptbench/data/montgomery/default.json
rename to src/ptbench/config/data/montgomery/default.json
diff --git a/src/ptbench/data/montgomery/default.py b/src/ptbench/config/data/montgomery/default.py
similarity index 63%
rename from src/ptbench/data/montgomery/default.py
rename to src/ptbench/config/data/montgomery/default.py
index ad32e45b07345fab51f074d7811bf7e476ae4ad7..fa8902107f9e81e17f89a6ca72b13c260716db54 100644
--- a/src/ptbench/data/montgomery/default.py
+++ b/src/ptbench/config/data/montgomery/default.py
@@ -5,9 +5,10 @@
 
 Database reference: [MONTGOMERY-SHENZHEN-2014]_
 
-See :py:class:`.montgomery.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.montgomery.datamodule.DataModule` for
+technical details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.montgomery.datamodule import DataModule
 
 datamodule = DataModule("default.json")
diff --git a/src/ptbench/data/montgomery/fold-0.json b/src/ptbench/config/data/montgomery/fold-0.json
similarity index 100%
rename from src/ptbench/data/montgomery/fold-0.json
rename to src/ptbench/config/data/montgomery/fold-0.json
diff --git a/src/ptbench/data/montgomery/fold-1.json b/src/ptbench/config/data/montgomery/fold-1.json
similarity index 100%
rename from src/ptbench/data/montgomery/fold-1.json
rename to src/ptbench/config/data/montgomery/fold-1.json
diff --git a/src/ptbench/data/montgomery/fold-2.json b/src/ptbench/config/data/montgomery/fold-2.json
similarity index 100%
rename from src/ptbench/data/montgomery/fold-2.json
rename to src/ptbench/config/data/montgomery/fold-2.json
diff --git a/src/ptbench/data/montgomery/fold-3.json b/src/ptbench/config/data/montgomery/fold-3.json
similarity index 100%
rename from src/ptbench/data/montgomery/fold-3.json
rename to src/ptbench/config/data/montgomery/fold-3.json
diff --git a/src/ptbench/data/montgomery/fold-4.json b/src/ptbench/config/data/montgomery/fold-4.json
similarity index 100%
rename from src/ptbench/data/montgomery/fold-4.json
rename to src/ptbench/config/data/montgomery/fold-4.json
diff --git a/src/ptbench/data/montgomery/fold-5.json b/src/ptbench/config/data/montgomery/fold-5.json
similarity index 100%
rename from src/ptbench/data/montgomery/fold-5.json
rename to src/ptbench/config/data/montgomery/fold-5.json
diff --git a/src/ptbench/data/montgomery/fold-6.json b/src/ptbench/config/data/montgomery/fold-6.json
similarity index 100%
rename from src/ptbench/data/montgomery/fold-6.json
rename to src/ptbench/config/data/montgomery/fold-6.json
diff --git a/src/ptbench/data/montgomery/fold-7.json b/src/ptbench/config/data/montgomery/fold-7.json
similarity index 100%
rename from src/ptbench/data/montgomery/fold-7.json
rename to src/ptbench/config/data/montgomery/fold-7.json
diff --git a/src/ptbench/data/montgomery/fold-8.json b/src/ptbench/config/data/montgomery/fold-8.json
similarity index 100%
rename from src/ptbench/data/montgomery/fold-8.json
rename to src/ptbench/config/data/montgomery/fold-8.json
diff --git a/src/ptbench/data/montgomery/fold-9.json b/src/ptbench/config/data/montgomery/fold-9.json
similarity index 100%
rename from src/ptbench/data/montgomery/fold-9.json
rename to src/ptbench/config/data/montgomery/fold-9.json
diff --git a/src/ptbench/data/montgomery/fold_0.py b/src/ptbench/config/data/montgomery/fold_0.py
similarity index 65%
rename from src/ptbench/data/montgomery/fold_0.py
rename to src/ptbench/config/data/montgomery/fold_0.py
index 7f842d598843781f66daa450f4100f7068dc6d41..2f72873e6bc8dfe374acd3c0abf0b4fa14f59346 100644
--- a/src/ptbench/data/montgomery/fold_0.py
+++ b/src/ptbench/config/data/montgomery/fold_0.py
@@ -5,9 +5,10 @@
 
 Database reference: [MONTGOMERY-SHENZHEN-2014]_
 
-See :py:class:`.montgomery.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.montgomery.datamodule.DataModule` for
+technical details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.montgomery.datamodule import DataModule
 
 datamodule = DataModule("fold-0.json")
diff --git a/src/ptbench/data/montgomery/fold_1.py b/src/ptbench/config/data/montgomery/fold_1.py
similarity index 65%
rename from src/ptbench/data/montgomery/fold_1.py
rename to src/ptbench/config/data/montgomery/fold_1.py
index abdfbcf13f96f6ced741e73c27236cdd232bae9d..e4fd9fe8b27566a21e82118fc67b76cd9a5d9431 100644
--- a/src/ptbench/data/montgomery/fold_1.py
+++ b/src/ptbench/config/data/montgomery/fold_1.py
@@ -5,9 +5,10 @@
 
 Database reference: [MONTGOMERY-SHENZHEN-2014]_
 
-See :py:class:`.montgomery.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.montgomery.datamodule.DataModule` for
+technical details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.montgomery.datamodule import DataModule
 
 datamodule = DataModule("fold-1.json")
diff --git a/src/ptbench/data/montgomery/fold_2.py b/src/ptbench/config/data/montgomery/fold_2.py
similarity index 65%
rename from src/ptbench/data/montgomery/fold_2.py
rename to src/ptbench/config/data/montgomery/fold_2.py
index 8614cc00664e2569b3b1f28bd1bf43dbed37e6c7..903154be5eda564ffc05d128d73f278d7b19b98f 100644
--- a/src/ptbench/data/montgomery/fold_2.py
+++ b/src/ptbench/config/data/montgomery/fold_2.py
@@ -5,9 +5,10 @@
 
 Database reference: [MONTGOMERY-SHENZHEN-2014]_
 
-See :py:class:`.montgomery.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.montgomery.datamodule.DataModule` for
+technical details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.montgomery.datamodule import DataModule
 
 datamodule = DataModule("fold-2.json")
diff --git a/src/ptbench/data/montgomery/fold_3.py b/src/ptbench/config/data/montgomery/fold_3.py
similarity index 65%
rename from src/ptbench/data/montgomery/fold_3.py
rename to src/ptbench/config/data/montgomery/fold_3.py
index 50ac23f5dc739c16a30d3c3ffc4b31cb5547b8ba..27d9ebddf0f773c54e159dd8210251b962fc6baf 100644
--- a/src/ptbench/data/montgomery/fold_3.py
+++ b/src/ptbench/config/data/montgomery/fold_3.py
@@ -5,9 +5,10 @@
 
 Database reference: [MONTGOMERY-SHENZHEN-2014]_
 
-See :py:class:`.montgomery.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.montgomery.datamodule.DataModule` for
+technical details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.montgomery.datamodule import DataModule
 
 datamodule = DataModule("fold-3.json")
diff --git a/src/ptbench/data/montgomery/fold_4.py b/src/ptbench/config/data/montgomery/fold_4.py
similarity index 65%
rename from src/ptbench/data/montgomery/fold_4.py
rename to src/ptbench/config/data/montgomery/fold_4.py
index c83e106087c9e2e429e70a3d21da37fbf05a9a0e..e5379102d27f515d7af6e691f52c498c053627bf 100644
--- a/src/ptbench/data/montgomery/fold_4.py
+++ b/src/ptbench/config/data/montgomery/fold_4.py
@@ -5,9 +5,10 @@
 
 Database reference: [MONTGOMERY-SHENZHEN-2014]_
 
-See :py:class:`.montgomery.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.montgomery.datamodule.DataModule` for
+technical details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.montgomery.datamodule import DataModule
 
 datamodule = DataModule("fold-4.json")
diff --git a/src/ptbench/data/montgomery/fold_5.py b/src/ptbench/config/data/montgomery/fold_5.py
similarity index 65%
rename from src/ptbench/data/montgomery/fold_5.py
rename to src/ptbench/config/data/montgomery/fold_5.py
index 30b97b0352f228e99a3a5c3b3b6bfbcffad211b9..feb8ac45ac0d5214cf4f15aaa2feb3962e34e52e 100644
--- a/src/ptbench/data/montgomery/fold_5.py
+++ b/src/ptbench/config/data/montgomery/fold_5.py
@@ -5,9 +5,10 @@
 
 Database reference: [MONTGOMERY-SHENZHEN-2014]_
 
-See :py:class:`.montgomery.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.montgomery.datamodule.DataModule` for
+technical details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.montgomery.datamodule import DataModule
 
 datamodule = DataModule("fold-5.json")
diff --git a/src/ptbench/data/montgomery/fold_6.py b/src/ptbench/config/data/montgomery/fold_6.py
similarity index 65%
rename from src/ptbench/data/montgomery/fold_6.py
rename to src/ptbench/config/data/montgomery/fold_6.py
index 86e35ca5d2787ab6585c339cb489fa09f4a43bc9..e868c72687e825c59d08acd2d1aa98f99d54be48 100644
--- a/src/ptbench/data/montgomery/fold_6.py
+++ b/src/ptbench/config/data/montgomery/fold_6.py
@@ -5,9 +5,10 @@
 
 Database reference: [MONTGOMERY-SHENZHEN-2014]_
 
-See :py:class:`.montgomery.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.montgomery.datamodule.DataModule` for
+technical details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.montgomery.datamodule import DataModule
 
 datamodule = DataModule("fold-6.json")
diff --git a/src/ptbench/data/montgomery/fold_7.py b/src/ptbench/config/data/montgomery/fold_7.py
similarity index 65%
rename from src/ptbench/data/montgomery/fold_7.py
rename to src/ptbench/config/data/montgomery/fold_7.py
index 9f0bd3da0c0b6c2be05b23a7d8cde71540972339..0415dfba481bed7aa731c117a7f5ea4c6cba30d9 100644
--- a/src/ptbench/data/montgomery/fold_7.py
+++ b/src/ptbench/config/data/montgomery/fold_7.py
@@ -5,9 +5,10 @@
 
 Database reference: [MONTGOMERY-SHENZHEN-2014]_
 
-See :py:class:`.montgomery.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.montgomery.datamodule.DataModule` for
+technical details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.montgomery.datamodule import DataModule
 
 datamodule = DataModule("fold-7.json")
diff --git a/src/ptbench/data/montgomery/fold_8.py b/src/ptbench/config/data/montgomery/fold_8.py
similarity index 65%
rename from src/ptbench/data/montgomery/fold_8.py
rename to src/ptbench/config/data/montgomery/fold_8.py
index 5ea2dfc903b552fa633e981f662d23c98d23ebb9..d00595b0d90358d8459cd93acfe93688a9e7d56f 100644
--- a/src/ptbench/data/montgomery/fold_8.py
+++ b/src/ptbench/config/data/montgomery/fold_8.py
@@ -5,9 +5,10 @@
 
 Database reference: [MONTGOMERY-SHENZHEN-2014]_
 
-See :py:class:`.montgomery.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.montgomery.datamodule.DataModule` for
+technical details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.montgomery.datamodule import DataModule
 
 datamodule = DataModule("fold-8.json")
diff --git a/src/ptbench/data/montgomery/fold_9.py b/src/ptbench/config/data/montgomery/fold_9.py
similarity index 65%
rename from src/ptbench/data/montgomery/fold_9.py
rename to src/ptbench/config/data/montgomery/fold_9.py
index 41025b7327adc5cffdac4ad95e8592fae5c9d02b..c9158fd103a4038e28e98d62eabbcfd03a64b086 100644
--- a/src/ptbench/data/montgomery/fold_9.py
+++ b/src/ptbench/config/data/montgomery/fold_9.py
@@ -5,9 +5,10 @@
 
 Database reference: [MONTGOMERY-SHENZHEN-2014]_
 
-See :py:class:`.montgomery.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.montgomery.datamodule.DataModule` for
+technical details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.montgomery.datamodule import DataModule
 
 datamodule = DataModule("fold-9.json")
diff --git a/src/ptbench/data/montgomery_shenzhen_indian/__init__.py b/src/ptbench/config/data/montgomery_shenzhen/__init__.py
similarity index 100%
rename from src/ptbench/data/montgomery_shenzhen_indian/__init__.py
rename to src/ptbench/config/data/montgomery_shenzhen/__init__.py
diff --git a/src/ptbench/data/montgomery_shenzhen/datamodule.py b/src/ptbench/config/data/montgomery_shenzhen/datamodule.py
similarity index 96%
rename from src/ptbench/data/montgomery_shenzhen/datamodule.py
rename to src/ptbench/config/data/montgomery_shenzhen/datamodule.py
index e1173824eaf5f4a1f14712986abaeb304bcabf5b..0509dd5fedf79798693be0f358b6b5449d7cf753 100644
--- a/src/ptbench/data/montgomery_shenzhen/datamodule.py
+++ b/src/ptbench/config/data/montgomery_shenzhen/datamodule.py
@@ -2,7 +2,8 @@
 #
 # SPDX-License-Identifier: GPL-3.0-or-later
 
-from ..datamodule import ConcatDataModule
+from ptbench.data.datamodule import ConcatDataModule
+
 from ..montgomery.datamodule import RawDataLoader as MontgomeryLoader
 from ..montgomery.datamodule import make_split as make_montgomery_split
 from ..shenzhen.datamodule import RawDataLoader as ShenzhenLoader
diff --git a/src/ptbench/data/montgomery_shenzhen/default.py b/src/ptbench/config/data/montgomery_shenzhen/default.py
similarity index 100%
rename from src/ptbench/data/montgomery_shenzhen/default.py
rename to src/ptbench/config/data/montgomery_shenzhen/default.py
diff --git a/src/ptbench/data/montgomery_shenzhen/fold_0.py b/src/ptbench/config/data/montgomery_shenzhen/fold_0.py
similarity index 100%
rename from src/ptbench/data/montgomery_shenzhen/fold_0.py
rename to src/ptbench/config/data/montgomery_shenzhen/fold_0.py
diff --git a/src/ptbench/data/montgomery_shenzhen/fold_1.py b/src/ptbench/config/data/montgomery_shenzhen/fold_1.py
similarity index 100%
rename from src/ptbench/data/montgomery_shenzhen/fold_1.py
rename to src/ptbench/config/data/montgomery_shenzhen/fold_1.py
diff --git a/src/ptbench/data/montgomery_shenzhen/fold_2.py b/src/ptbench/config/data/montgomery_shenzhen/fold_2.py
similarity index 100%
rename from src/ptbench/data/montgomery_shenzhen/fold_2.py
rename to src/ptbench/config/data/montgomery_shenzhen/fold_2.py
diff --git a/src/ptbench/data/montgomery_shenzhen/fold_3.py b/src/ptbench/config/data/montgomery_shenzhen/fold_3.py
similarity index 100%
rename from src/ptbench/data/montgomery_shenzhen/fold_3.py
rename to src/ptbench/config/data/montgomery_shenzhen/fold_3.py
diff --git a/src/ptbench/data/montgomery_shenzhen/fold_4.py b/src/ptbench/config/data/montgomery_shenzhen/fold_4.py
similarity index 100%
rename from src/ptbench/data/montgomery_shenzhen/fold_4.py
rename to src/ptbench/config/data/montgomery_shenzhen/fold_4.py
diff --git a/src/ptbench/data/montgomery_shenzhen/fold_5.py b/src/ptbench/config/data/montgomery_shenzhen/fold_5.py
similarity index 100%
rename from src/ptbench/data/montgomery_shenzhen/fold_5.py
rename to src/ptbench/config/data/montgomery_shenzhen/fold_5.py
diff --git a/src/ptbench/data/montgomery_shenzhen/fold_6.py b/src/ptbench/config/data/montgomery_shenzhen/fold_6.py
similarity index 100%
rename from src/ptbench/data/montgomery_shenzhen/fold_6.py
rename to src/ptbench/config/data/montgomery_shenzhen/fold_6.py
diff --git a/src/ptbench/data/montgomery_shenzhen/fold_7.py b/src/ptbench/config/data/montgomery_shenzhen/fold_7.py
similarity index 100%
rename from src/ptbench/data/montgomery_shenzhen/fold_7.py
rename to src/ptbench/config/data/montgomery_shenzhen/fold_7.py
diff --git a/src/ptbench/data/montgomery_shenzhen/fold_8.py b/src/ptbench/config/data/montgomery_shenzhen/fold_8.py
similarity index 100%
rename from src/ptbench/data/montgomery_shenzhen/fold_8.py
rename to src/ptbench/config/data/montgomery_shenzhen/fold_8.py
diff --git a/src/ptbench/data/montgomery_shenzhen/fold_9.py b/src/ptbench/config/data/montgomery_shenzhen/fold_9.py
similarity index 100%
rename from src/ptbench/data/montgomery_shenzhen/fold_9.py
rename to src/ptbench/config/data/montgomery_shenzhen/fold_9.py
diff --git a/src/ptbench/data/montgomery_shenzhen_indian_padchest/__init__.py b/src/ptbench/config/data/montgomery_shenzhen_indian/__init__.py
similarity index 100%
rename from src/ptbench/data/montgomery_shenzhen_indian_padchest/__init__.py
rename to src/ptbench/config/data/montgomery_shenzhen_indian/__init__.py
diff --git a/src/ptbench/data/montgomery_shenzhen_indian/datamodule.py b/src/ptbench/config/data/montgomery_shenzhen_indian/datamodule.py
similarity index 70%
rename from src/ptbench/data/montgomery_shenzhen_indian/datamodule.py
rename to src/ptbench/config/data/montgomery_shenzhen_indian/datamodule.py
index 6df9a85033ac24cc8df42280cef986f770b8a0da..0bbb2c3d95cdbc2c586cfcdc5157d4bd7989ad72 100644
--- a/src/ptbench/data/montgomery_shenzhen_indian/datamodule.py
+++ b/src/ptbench/config/data/montgomery_shenzhen_indian/datamodule.py
@@ -4,13 +4,23 @@
 """Aggregated datamodule composed of Montgomery, Shenzhen and Indian
 datasets."""
 
-from ..datamodule import ConcatDataModule
-from ..indian.datamodule import RawDataLoader as IndianLoader
-from ..indian.datamodule import make_split as make_indian_split
-from ..montgomery.datamodule import RawDataLoader as MontgomeryLoader
-from ..montgomery.datamodule import make_split as make_montgomery_split
-from ..shenzhen.datamodule import RawDataLoader as ShenzhenLoader
-from ..shenzhen.datamodule import make_split as make_shenzhen_split
+from ptbench.config.data.indian.datamodule import RawDataLoader as IndianLoader
+from ptbench.config.data.indian.datamodule import (
+    make_split as make_indian_split,
+)
+from ptbench.config.data.montgomery.datamodule import (
+    RawDataLoader as MontgomeryLoader,
+)
+from ptbench.config.data.montgomery.datamodule import (
+    make_split as make_montgomery_split,
+)
+from ptbench.config.data.shenzhen.datamodule import (
+    RawDataLoader as ShenzhenLoader,
+)
+from ptbench.config.data.shenzhen.datamodule import (
+    make_split as make_shenzhen_split,
+)
+from ptbench.data.datamodule import ConcatDataModule
 
 
 class DataModule(ConcatDataModule):
diff --git a/src/ptbench/data/montgomery_shenzhen_indian/default.py b/src/ptbench/config/data/montgomery_shenzhen_indian/default.py
similarity index 100%
rename from src/ptbench/data/montgomery_shenzhen_indian/default.py
rename to src/ptbench/config/data/montgomery_shenzhen_indian/default.py
diff --git a/src/ptbench/data/montgomery_shenzhen_indian/fold_0.py b/src/ptbench/config/data/montgomery_shenzhen_indian/fold_0.py
similarity index 100%
rename from src/ptbench/data/montgomery_shenzhen_indian/fold_0.py
rename to src/ptbench/config/data/montgomery_shenzhen_indian/fold_0.py
diff --git a/src/ptbench/data/montgomery_shenzhen_indian/fold_1.py b/src/ptbench/config/data/montgomery_shenzhen_indian/fold_1.py
similarity index 100%
rename from src/ptbench/data/montgomery_shenzhen_indian/fold_1.py
rename to src/ptbench/config/data/montgomery_shenzhen_indian/fold_1.py
diff --git a/src/ptbench/data/montgomery_shenzhen_indian/fold_2.py b/src/ptbench/config/data/montgomery_shenzhen_indian/fold_2.py
similarity index 100%
rename from src/ptbench/data/montgomery_shenzhen_indian/fold_2.py
rename to src/ptbench/config/data/montgomery_shenzhen_indian/fold_2.py
diff --git a/src/ptbench/data/montgomery_shenzhen_indian/fold_3.py b/src/ptbench/config/data/montgomery_shenzhen_indian/fold_3.py
similarity index 100%
rename from src/ptbench/data/montgomery_shenzhen_indian/fold_3.py
rename to src/ptbench/config/data/montgomery_shenzhen_indian/fold_3.py
diff --git a/src/ptbench/data/montgomery_shenzhen_indian/fold_4.py b/src/ptbench/config/data/montgomery_shenzhen_indian/fold_4.py
similarity index 100%
rename from src/ptbench/data/montgomery_shenzhen_indian/fold_4.py
rename to src/ptbench/config/data/montgomery_shenzhen_indian/fold_4.py
diff --git a/src/ptbench/data/montgomery_shenzhen_indian/fold_5.py b/src/ptbench/config/data/montgomery_shenzhen_indian/fold_5.py
similarity index 100%
rename from src/ptbench/data/montgomery_shenzhen_indian/fold_5.py
rename to src/ptbench/config/data/montgomery_shenzhen_indian/fold_5.py
diff --git a/src/ptbench/data/montgomery_shenzhen_indian/fold_6.py b/src/ptbench/config/data/montgomery_shenzhen_indian/fold_6.py
similarity index 100%
rename from src/ptbench/data/montgomery_shenzhen_indian/fold_6.py
rename to src/ptbench/config/data/montgomery_shenzhen_indian/fold_6.py
diff --git a/src/ptbench/data/montgomery_shenzhen_indian/fold_7.py b/src/ptbench/config/data/montgomery_shenzhen_indian/fold_7.py
similarity index 100%
rename from src/ptbench/data/montgomery_shenzhen_indian/fold_7.py
rename to src/ptbench/config/data/montgomery_shenzhen_indian/fold_7.py
diff --git a/src/ptbench/data/montgomery_shenzhen_indian/fold_8.py b/src/ptbench/config/data/montgomery_shenzhen_indian/fold_8.py
similarity index 100%
rename from src/ptbench/data/montgomery_shenzhen_indian/fold_8.py
rename to src/ptbench/config/data/montgomery_shenzhen_indian/fold_8.py
diff --git a/src/ptbench/data/montgomery_shenzhen_indian/fold_9.py b/src/ptbench/config/data/montgomery_shenzhen_indian/fold_9.py
similarity index 100%
rename from src/ptbench/data/montgomery_shenzhen_indian/fold_9.py
rename to src/ptbench/config/data/montgomery_shenzhen_indian/fold_9.py
diff --git a/src/ptbench/data/montgomery_shenzhen_indian_tbx11k/__init__.py b/src/ptbench/config/data/montgomery_shenzhen_indian_padchest/__init__.py
similarity index 100%
rename from src/ptbench/data/montgomery_shenzhen_indian_tbx11k/__init__.py
rename to src/ptbench/config/data/montgomery_shenzhen_indian_padchest/__init__.py
diff --git a/src/ptbench/data/montgomery_shenzhen_indian_padchest/datamodule.py b/src/ptbench/config/data/montgomery_shenzhen_indian_padchest/datamodule.py
similarity index 70%
rename from src/ptbench/data/montgomery_shenzhen_indian_padchest/datamodule.py
rename to src/ptbench/config/data/montgomery_shenzhen_indian_padchest/datamodule.py
index b4317ac447cfb8a688c1844984b163b42e7786cc..93d0193ff42f1f82a35dea1b7487e232cdad9964 100644
--- a/src/ptbench/data/montgomery_shenzhen_indian_padchest/datamodule.py
+++ b/src/ptbench/config/data/montgomery_shenzhen_indian_padchest/datamodule.py
@@ -4,15 +4,29 @@
 """Aggregated datamodule composed of Montgomery, Shenzhen, Indian, and PadChest
 datasets."""
 
-from ..datamodule import ConcatDataModule
-from ..indian.datamodule import RawDataLoader as IndianLoader
-from ..indian.datamodule import make_split as make_indian_split
-from ..montgomery.datamodule import RawDataLoader as MontgomeryLoader
-from ..montgomery.datamodule import make_split as make_montgomery_split
-from ..padchest.datamodule import RawDataLoader as PadchestLoader
-from ..padchest.datamodule import make_split as make_padchest_split
-from ..shenzhen.datamodule import RawDataLoader as ShenzhenLoader
-from ..shenzhen.datamodule import make_split as make_shenzhen_split
+from ptbench.config.data.indian.datamodule import RawDataLoader as IndianLoader
+from ptbench.config.data.indian.datamodule import (
+    make_split as make_indian_split,
+)
+from ptbench.config.data.montgomery.datamodule import (
+    RawDataLoader as MontgomeryLoader,
+)
+from ptbench.config.data.montgomery.datamodule import (
+    make_split as make_montgomery_split,
+)
+from ptbench.config.data.padchest.datamodule import (
+    RawDataLoader as PadchestLoader,
+)
+from ptbench.config.data.padchest.datamodule import (
+    make_split as make_padchest_split,
+)
+from ptbench.config.data.shenzhen.datamodule import (
+    RawDataLoader as ShenzhenLoader,
+)
+from ptbench.config.data.shenzhen.datamodule import (
+    make_split as make_shenzhen_split,
+)
+from ptbench.data.datamodule import ConcatDataModule
 
 
 class DataModule(ConcatDataModule):
diff --git a/src/ptbench/data/montgomery_shenzhen_indian_padchest/default.py b/src/ptbench/config/data/montgomery_shenzhen_indian_padchest/default.py
similarity index 100%
rename from src/ptbench/data/montgomery_shenzhen_indian_padchest/default.py
rename to src/ptbench/config/data/montgomery_shenzhen_indian_padchest/default.py
diff --git a/src/ptbench/data/nih_cxr14/__init__.py b/src/ptbench/config/data/montgomery_shenzhen_indian_tbx11k/__init__.py
similarity index 100%
rename from src/ptbench/data/nih_cxr14/__init__.py
rename to src/ptbench/config/data/montgomery_shenzhen_indian_tbx11k/__init__.py
diff --git a/src/ptbench/data/montgomery_shenzhen_indian_tbx11k/datamodule.py b/src/ptbench/config/data/montgomery_shenzhen_indian_tbx11k/datamodule.py
similarity index 69%
rename from src/ptbench/data/montgomery_shenzhen_indian_tbx11k/datamodule.py
rename to src/ptbench/config/data/montgomery_shenzhen_indian_tbx11k/datamodule.py
index 6f7ee8bcec746e2ca9455fa0d3c09378e74252d3..976155748535df1b4ada98fb837dd3b37c428e47 100644
--- a/src/ptbench/data/montgomery_shenzhen_indian_tbx11k/datamodule.py
+++ b/src/ptbench/config/data/montgomery_shenzhen_indian_tbx11k/datamodule.py
@@ -4,15 +4,27 @@
 """Aggregated datamodule composed of Montgomery, Shenzhen, Indian, and TBX11k
 datasets."""
 
-from ..datamodule import ConcatDataModule
-from ..indian.datamodule import RawDataLoader as IndianLoader
-from ..indian.datamodule import make_split as make_indian_split
-from ..montgomery.datamodule import RawDataLoader as MontgomeryLoader
-from ..montgomery.datamodule import make_split as make_montgomery_split
-from ..shenzhen.datamodule import RawDataLoader as ShenzhenLoader
-from ..shenzhen.datamodule import make_split as make_shenzhen_split
-from ..tbx11k.datamodule import RawDataLoader as TBX11kLoader
-from ..tbx11k.datamodule import make_split as make_tbx11k_split
+from ptbench.config.data.indian.datamodule import RawDataLoader as IndianLoader
+from ptbench.config.data.indian.datamodule import (
+    make_split as make_indian_split,
+)
+from ptbench.config.data.montgomery.datamodule import (
+    RawDataLoader as MontgomeryLoader,
+)
+from ptbench.config.data.montgomery.datamodule import (
+    make_split as make_montgomery_split,
+)
+from ptbench.config.data.shenzhen.datamodule import (
+    RawDataLoader as ShenzhenLoader,
+)
+from ptbench.config.data.shenzhen.datamodule import (
+    make_split as make_shenzhen_split,
+)
+from ptbench.config.data.tbx11k.datamodule import RawDataLoader as TBX11kLoader
+from ptbench.config.data.tbx11k.datamodule import (
+    make_split as make_tbx11k_split,
+)
+from ptbench.data.datamodule import ConcatDataModule
 
 
 class DataModule(ConcatDataModule):
diff --git a/src/ptbench/data/montgomery_shenzhen_indian_tbx11k/v1_fold_0.py b/src/ptbench/config/data/montgomery_shenzhen_indian_tbx11k/v1_fold_0.py
similarity index 100%
rename from src/ptbench/data/montgomery_shenzhen_indian_tbx11k/v1_fold_0.py
rename to src/ptbench/config/data/montgomery_shenzhen_indian_tbx11k/v1_fold_0.py
diff --git a/src/ptbench/data/montgomery_shenzhen_indian_tbx11k/v1_fold_1.py b/src/ptbench/config/data/montgomery_shenzhen_indian_tbx11k/v1_fold_1.py
similarity index 100%
rename from src/ptbench/data/montgomery_shenzhen_indian_tbx11k/v1_fold_1.py
rename to src/ptbench/config/data/montgomery_shenzhen_indian_tbx11k/v1_fold_1.py
diff --git a/src/ptbench/data/montgomery_shenzhen_indian_tbx11k/v1_fold_2.py b/src/ptbench/config/data/montgomery_shenzhen_indian_tbx11k/v1_fold_2.py
similarity index 100%
rename from src/ptbench/data/montgomery_shenzhen_indian_tbx11k/v1_fold_2.py
rename to src/ptbench/config/data/montgomery_shenzhen_indian_tbx11k/v1_fold_2.py
diff --git a/src/ptbench/data/montgomery_shenzhen_indian_tbx11k/v1_fold_3.py b/src/ptbench/config/data/montgomery_shenzhen_indian_tbx11k/v1_fold_3.py
similarity index 100%
rename from src/ptbench/data/montgomery_shenzhen_indian_tbx11k/v1_fold_3.py
rename to src/ptbench/config/data/montgomery_shenzhen_indian_tbx11k/v1_fold_3.py
diff --git a/src/ptbench/data/montgomery_shenzhen_indian_tbx11k/v1_fold_4.py b/src/ptbench/config/data/montgomery_shenzhen_indian_tbx11k/v1_fold_4.py
similarity index 100%
rename from src/ptbench/data/montgomery_shenzhen_indian_tbx11k/v1_fold_4.py
rename to src/ptbench/config/data/montgomery_shenzhen_indian_tbx11k/v1_fold_4.py
diff --git a/src/ptbench/data/montgomery_shenzhen_indian_tbx11k/v1_fold_5.py b/src/ptbench/config/data/montgomery_shenzhen_indian_tbx11k/v1_fold_5.py
similarity index 100%
rename from src/ptbench/data/montgomery_shenzhen_indian_tbx11k/v1_fold_5.py
rename to src/ptbench/config/data/montgomery_shenzhen_indian_tbx11k/v1_fold_5.py
diff --git a/src/ptbench/data/montgomery_shenzhen_indian_tbx11k/v1_fold_6.py b/src/ptbench/config/data/montgomery_shenzhen_indian_tbx11k/v1_fold_6.py
similarity index 100%
rename from src/ptbench/data/montgomery_shenzhen_indian_tbx11k/v1_fold_6.py
rename to src/ptbench/config/data/montgomery_shenzhen_indian_tbx11k/v1_fold_6.py
diff --git a/src/ptbench/data/montgomery_shenzhen_indian_tbx11k/v1_fold_7.py b/src/ptbench/config/data/montgomery_shenzhen_indian_tbx11k/v1_fold_7.py
similarity index 100%
rename from src/ptbench/data/montgomery_shenzhen_indian_tbx11k/v1_fold_7.py
rename to src/ptbench/config/data/montgomery_shenzhen_indian_tbx11k/v1_fold_7.py
diff --git a/src/ptbench/data/montgomery_shenzhen_indian_tbx11k/v1_fold_8.py b/src/ptbench/config/data/montgomery_shenzhen_indian_tbx11k/v1_fold_8.py
similarity index 100%
rename from src/ptbench/data/montgomery_shenzhen_indian_tbx11k/v1_fold_8.py
rename to src/ptbench/config/data/montgomery_shenzhen_indian_tbx11k/v1_fold_8.py
diff --git a/src/ptbench/data/montgomery_shenzhen_indian_tbx11k/v1_fold_9.py b/src/ptbench/config/data/montgomery_shenzhen_indian_tbx11k/v1_fold_9.py
similarity index 100%
rename from src/ptbench/data/montgomery_shenzhen_indian_tbx11k/v1_fold_9.py
rename to src/ptbench/config/data/montgomery_shenzhen_indian_tbx11k/v1_fold_9.py
diff --git a/src/ptbench/data/montgomery_shenzhen_indian_tbx11k/v1_healthy_vs_atb.py b/src/ptbench/config/data/montgomery_shenzhen_indian_tbx11k/v1_healthy_vs_atb.py
similarity index 100%
rename from src/ptbench/data/montgomery_shenzhen_indian_tbx11k/v1_healthy_vs_atb.py
rename to src/ptbench/config/data/montgomery_shenzhen_indian_tbx11k/v1_healthy_vs_atb.py
diff --git a/src/ptbench/data/montgomery_shenzhen_indian_tbx11k/v2_fold_0.py b/src/ptbench/config/data/montgomery_shenzhen_indian_tbx11k/v2_fold_0.py
similarity index 100%
rename from src/ptbench/data/montgomery_shenzhen_indian_tbx11k/v2_fold_0.py
rename to src/ptbench/config/data/montgomery_shenzhen_indian_tbx11k/v2_fold_0.py
diff --git a/src/ptbench/data/montgomery_shenzhen_indian_tbx11k/v2_fold_1.py b/src/ptbench/config/data/montgomery_shenzhen_indian_tbx11k/v2_fold_1.py
similarity index 100%
rename from src/ptbench/data/montgomery_shenzhen_indian_tbx11k/v2_fold_1.py
rename to src/ptbench/config/data/montgomery_shenzhen_indian_tbx11k/v2_fold_1.py
diff --git a/src/ptbench/data/montgomery_shenzhen_indian_tbx11k/v2_fold_2.py b/src/ptbench/config/data/montgomery_shenzhen_indian_tbx11k/v2_fold_2.py
similarity index 100%
rename from src/ptbench/data/montgomery_shenzhen_indian_tbx11k/v2_fold_2.py
rename to src/ptbench/config/data/montgomery_shenzhen_indian_tbx11k/v2_fold_2.py
diff --git a/src/ptbench/data/montgomery_shenzhen_indian_tbx11k/v2_fold_3.py b/src/ptbench/config/data/montgomery_shenzhen_indian_tbx11k/v2_fold_3.py
similarity index 100%
rename from src/ptbench/data/montgomery_shenzhen_indian_tbx11k/v2_fold_3.py
rename to src/ptbench/config/data/montgomery_shenzhen_indian_tbx11k/v2_fold_3.py
diff --git a/src/ptbench/data/montgomery_shenzhen_indian_tbx11k/v2_fold_4.py b/src/ptbench/config/data/montgomery_shenzhen_indian_tbx11k/v2_fold_4.py
similarity index 100%
rename from src/ptbench/data/montgomery_shenzhen_indian_tbx11k/v2_fold_4.py
rename to src/ptbench/config/data/montgomery_shenzhen_indian_tbx11k/v2_fold_4.py
diff --git a/src/ptbench/data/montgomery_shenzhen_indian_tbx11k/v2_fold_5.py b/src/ptbench/config/data/montgomery_shenzhen_indian_tbx11k/v2_fold_5.py
similarity index 100%
rename from src/ptbench/data/montgomery_shenzhen_indian_tbx11k/v2_fold_5.py
rename to src/ptbench/config/data/montgomery_shenzhen_indian_tbx11k/v2_fold_5.py
diff --git a/src/ptbench/data/montgomery_shenzhen_indian_tbx11k/v2_fold_6.py b/src/ptbench/config/data/montgomery_shenzhen_indian_tbx11k/v2_fold_6.py
similarity index 100%
rename from src/ptbench/data/montgomery_shenzhen_indian_tbx11k/v2_fold_6.py
rename to src/ptbench/config/data/montgomery_shenzhen_indian_tbx11k/v2_fold_6.py
diff --git a/src/ptbench/data/montgomery_shenzhen_indian_tbx11k/v2_fold_7.py b/src/ptbench/config/data/montgomery_shenzhen_indian_tbx11k/v2_fold_7.py
similarity index 100%
rename from src/ptbench/data/montgomery_shenzhen_indian_tbx11k/v2_fold_7.py
rename to src/ptbench/config/data/montgomery_shenzhen_indian_tbx11k/v2_fold_7.py
diff --git a/src/ptbench/data/montgomery_shenzhen_indian_tbx11k/v2_fold_8.py b/src/ptbench/config/data/montgomery_shenzhen_indian_tbx11k/v2_fold_8.py
similarity index 100%
rename from src/ptbench/data/montgomery_shenzhen_indian_tbx11k/v2_fold_8.py
rename to src/ptbench/config/data/montgomery_shenzhen_indian_tbx11k/v2_fold_8.py
diff --git a/src/ptbench/data/montgomery_shenzhen_indian_tbx11k/v2_fold_9.py b/src/ptbench/config/data/montgomery_shenzhen_indian_tbx11k/v2_fold_9.py
similarity index 100%
rename from src/ptbench/data/montgomery_shenzhen_indian_tbx11k/v2_fold_9.py
rename to src/ptbench/config/data/montgomery_shenzhen_indian_tbx11k/v2_fold_9.py
diff --git a/src/ptbench/data/montgomery_shenzhen_indian_tbx11k/v2_others_vs_atb.py b/src/ptbench/config/data/montgomery_shenzhen_indian_tbx11k/v2_others_vs_atb.py
similarity index 100%
rename from src/ptbench/data/montgomery_shenzhen_indian_tbx11k/v2_others_vs_atb.py
rename to src/ptbench/config/data/montgomery_shenzhen_indian_tbx11k/v2_others_vs_atb.py
diff --git a/src/ptbench/data/nih_cxr14_padchest/__init__.py b/src/ptbench/config/data/nih_cxr14/__init__.py
similarity index 100%
rename from src/ptbench/data/nih_cxr14_padchest/__init__.py
rename to src/ptbench/config/data/nih_cxr14/__init__.py
diff --git a/src/ptbench/data/nih_cxr14/cardiomegaly.json b/src/ptbench/config/data/nih_cxr14/cardiomegaly.json
similarity index 100%
rename from src/ptbench/data/nih_cxr14/cardiomegaly.json
rename to src/ptbench/config/data/nih_cxr14/cardiomegaly.json
diff --git a/src/ptbench/data/nih_cxr14/cardiomegaly.py b/src/ptbench/config/data/nih_cxr14/cardiomegaly.py
similarity index 71%
rename from src/ptbench/data/nih_cxr14/cardiomegaly.py
rename to src/ptbench/config/data/nih_cxr14/cardiomegaly.py
index 7b104faa36115e5ed1cc045c865f6d92cdaf8822..77248a472796b70ed7987a8d90aa610261f15ffc 100644
--- a/src/ptbench/data/nih_cxr14/cardiomegaly.py
+++ b/src/ptbench/config/data/nih_cxr14/cardiomegaly.py
@@ -8,9 +8,10 @@ Database reference: [NIH-CXR14-2017]_
 
 This split contains cardiomegaly cases from the NIH CXR14 database.
 
-See :py:class:`.nih_cxr14.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.nih_cxr14.datamodule.DataModule` for
+technical details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.nih_cxr14.datamodule import DataModule
 
 datamodule = DataModule("cardiomegaly.json")
diff --git a/src/ptbench/data/nih_cxr14/datamodule.py b/src/ptbench/config/data/nih_cxr14/datamodule.py
similarity index 82%
rename from src/ptbench/data/nih_cxr14/datamodule.py
rename to src/ptbench/config/data/nih_cxr14/datamodule.py
index 996c9feb7176a7a766940574a4b928a625a76447..9875985f106fa4db9b90e82c0e6021c516f3e388 100644
--- a/src/ptbench/data/nih_cxr14/datamodule.py
+++ b/src/ptbench/config/data/nih_cxr14/datamodule.py
@@ -13,12 +13,27 @@ import PIL.Image
 
 from torchvision.transforms.functional import to_tensor
 
-from ...utils.rc import load_rc
-from ..datamodule import CachingDataModule
-from ..split import JSONDatabaseSplit
-from ..typing import DatabaseSplit
-from ..typing import RawDataLoader as _BaseRawDataLoader
-from ..typing import Sample
+from ptbench.data.datamodule import CachingDataModule
+from ptbench.data.split import JSONDatabaseSplit
+from ptbench.data.typing import DatabaseSplit
+from ptbench.data.typing import RawDataLoader as _BaseRawDataLoader
+from ptbench.data.typing import Sample
+from ptbench.utils.rc import load_rc
+
+CONFIGURATION_KEY_DATADIR = "datadir." + (__name__.rsplit(".", 2)[-2])
+"""Key to search for in the configuration file for the root directory of this
+database."""
+
+CONFIGURATION_KEY_IDIAP_FILESTRUCTURE = (
+    __name__.rsplit(".", 2)[-2]
+) + ".idiap_folder_structure"
+"""Key to search for in the configuration file indicating if the loader should
+use standard or idiap-based file organisation structure.
+
+It causes the internal loader to search for files in a slightly
+different folder structure, that was adapted to Idiap's requirements
+(number of files per folder to be less than 10k).
+"""
 
 
 class RawDataLoader(_BaseRawDataLoader):
@@ -40,9 +55,11 @@ class RawDataLoader(_BaseRawDataLoader):
 
     def __init__(self):
         rc = load_rc()
-        self.datadir = rc.get("datadir.nih_cxr14", os.path.realpath(os.curdir))
+        self.datadir = rc.get(
+            CONFIGURATION_KEY_DATADIR, os.path.realpath(os.curdir)
+        )
         self.idiap_file_organisation = rc.get(
-            "nih_cxr14.idiap_folder_structure", False
+            CONFIGURATION_KEY_IDIAP_FILESTRUCTURE, False
         )
 
     def sample(self, sample: tuple[str, list[int]]) -> Sample:
diff --git a/src/ptbench/data/nih_cxr14/default.json.bz2 b/src/ptbench/config/data/nih_cxr14/default.json.bz2
similarity index 100%
rename from src/ptbench/data/nih_cxr14/default.json.bz2
rename to src/ptbench/config/data/nih_cxr14/default.json.bz2
diff --git a/src/ptbench/data/nih_cxr14/default.py b/src/ptbench/config/data/nih_cxr14/default.py
similarity index 67%
rename from src/ptbench/data/nih_cxr14/default.py
rename to src/ptbench/config/data/nih_cxr14/default.py
index c7bc3e2e7d7c6b0ab2ec83b7375d812481233b06..00ac5afdc1afbf953eb528865db4e0a8dba1faee 100644
--- a/src/ptbench/data/nih_cxr14/default.py
+++ b/src/ptbench/config/data/nih_cxr14/default.py
@@ -7,9 +7,10 @@
 * Validation samples: 6350
 * Test samples: 4054
 
-See :py:class:`.nih_cxr14.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.nih_cxr14.datamodule.DataModule` for
+technical details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.nih_cxr14.datamodule import DataModule
 
 datamodule = DataModule("default.json.bz2")
diff --git a/src/ptbench/data/padchest/__init__.py b/src/ptbench/config/data/nih_cxr14_padchest/__init__.py
similarity index 100%
rename from src/ptbench/data/padchest/__init__.py
rename to src/ptbench/config/data/nih_cxr14_padchest/__init__.py
diff --git a/src/ptbench/data/nih_cxr14_padchest/datamodule.py b/src/ptbench/config/data/nih_cxr14_padchest/datamodule.py
similarity index 73%
rename from src/ptbench/data/nih_cxr14_padchest/datamodule.py
rename to src/ptbench/config/data/nih_cxr14_padchest/datamodule.py
index f1ce1f914a1469345821e5ec4e4f5426bd356207..cd2d8fb237541481c6fe8a6f65d33d5ff1b98836 100644
--- a/src/ptbench/data/nih_cxr14_padchest/datamodule.py
+++ b/src/ptbench/config/data/nih_cxr14_padchest/datamodule.py
@@ -2,11 +2,19 @@
 #
 # SPDX-License-Identifier: GPL-3.0-or-later
 
-from ..datamodule import ConcatDataModule
-from ..nih_cxr14.datamodule import RawDataLoader as CXR14Loader
-from ..nih_cxr14.datamodule import make_split as make_cxr14_split
-from ..padchest.datamodule import RawDataLoader as PadchestLoader
-from ..padchest.datamodule import make_split as make_padchest_split
+from ptbench.config.data.nih_cxr14.datamodule import (
+    RawDataLoader as CXR14Loader,
+)
+from ptbench.config.data.nih_cxr14.datamodule import (
+    make_split as make_cxr14_split,
+)
+from ptbench.config.data.padchest.datamodule import (
+    RawDataLoader as PadchestLoader,
+)
+from ptbench.config.data.padchest.datamodule import (
+    make_split as make_padchest_split,
+)
+from ptbench.data.datamodule import ConcatDataModule
 
 
 class DataModule(ConcatDataModule):
diff --git a/src/ptbench/data/nih_cxr14_padchest/idiap.py b/src/ptbench/config/data/nih_cxr14_padchest/idiap.py
similarity index 100%
rename from src/ptbench/data/nih_cxr14_padchest/idiap.py
rename to src/ptbench/config/data/nih_cxr14_padchest/idiap.py
diff --git a/src/ptbench/data/shenzhen/__init__.py b/src/ptbench/config/data/padchest/__init__.py
similarity index 100%
rename from src/ptbench/data/shenzhen/__init__.py
rename to src/ptbench/config/data/padchest/__init__.py
diff --git a/src/ptbench/data/padchest/cardiomegaly-idiap.json b/src/ptbench/config/data/padchest/cardiomegaly-idiap.json
similarity index 100%
rename from src/ptbench/data/padchest/cardiomegaly-idiap.json
rename to src/ptbench/config/data/padchest/cardiomegaly-idiap.json
diff --git a/src/ptbench/data/padchest/cardiomegaly_idiap.py b/src/ptbench/config/data/padchest/cardiomegaly_idiap.py
similarity index 72%
rename from src/ptbench/data/padchest/cardiomegaly_idiap.py
rename to src/ptbench/config/data/padchest/cardiomegaly_idiap.py
index bd832fdd7b4592cbeab67e617a5c110861d7794e..a22cdc08bbc6ea398c0606d1072d317c8e3e87a5 100644
--- a/src/ptbench/data/padchest/cardiomegaly_idiap.py
+++ b/src/ptbench/config/data/padchest/cardiomegaly_idiap.py
@@ -8,9 +8,11 @@ Database reference: [PADCHEST-2019]_
 This split contains the first 40 images with cardiomegaly, with parameters:
 Label = "Normal", MethodLabel = "Physician", Projection = "PA"
 
-Read documentation of :py:class:`DataModule` for technical details.
+Read documentation of
+:py:class:`ptbench.config.data.padchest.datamodule.DataModule` for technical
+details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.padchest.datamodule import DataModule
 
 datamodule = DataModule("cardiomegaly-idiap.json")
diff --git a/src/ptbench/data/padchest/datamodule.py b/src/ptbench/config/data/padchest/datamodule.py
similarity index 94%
rename from src/ptbench/data/padchest/datamodule.py
rename to src/ptbench/config/data/padchest/datamodule.py
index 1fc49485ba368c3941ec7aa27a673b71871188b7..0122a429b33215312473228ba9db21b9fc235caf 100644
--- a/src/ptbench/data/padchest/datamodule.py
+++ b/src/ptbench/config/data/padchest/datamodule.py
@@ -14,13 +14,17 @@ import PIL.Image
 
 from torchvision.transforms.functional import center_crop, to_tensor
 
-from ...utils.rc import load_rc
-from ..datamodule import CachingDataModule
-from ..image_utils import remove_black_borders
-from ..split import JSONDatabaseSplit
-from ..typing import DatabaseSplit
-from ..typing import RawDataLoader as _BaseRawDataLoader
-from ..typing import Sample
+from ptbench.data.datamodule import CachingDataModule
+from ptbench.data.image_utils import remove_black_borders
+from ptbench.data.split import JSONDatabaseSplit
+from ptbench.data.typing import DatabaseSplit
+from ptbench.data.typing import RawDataLoader as _BaseRawDataLoader
+from ptbench.data.typing import Sample
+from ptbench.utils.rc import load_rc
+
+CONFIGURATION_KEY_DATADIR = "datadir." + (__name__.rsplit(".", 2)[-2])
+"""Key to search for in the configuration file for the root directory of this
+database."""
 
 
 class RawDataLoader(_BaseRawDataLoader):
@@ -32,7 +36,9 @@ class RawDataLoader(_BaseRawDataLoader):
 
     def __init__(self):
         rc = load_rc()
-        self.datadir = rc.get("datadir.padchest", os.path.realpath(os.curdir))
+        self.datadir = rc.get(
+            CONFIGURATION_KEY_DATADIR, os.path.realpath(os.curdir)
+        )
 
     def sample(self, sample: tuple[str, int | list[int]]) -> Sample:
         """Loads a single image sample from the disk.
diff --git a/src/ptbench/data/padchest/idiap.json.bz2 b/src/ptbench/config/data/padchest/idiap.json.bz2
similarity index 100%
rename from src/ptbench/data/padchest/idiap.json.bz2
rename to src/ptbench/config/data/padchest/idiap.json.bz2
diff --git a/src/ptbench/data/padchest/idiap.py b/src/ptbench/config/data/padchest/idiap.py
similarity index 67%
rename from src/ptbench/data/padchest/idiap.py
rename to src/ptbench/config/data/padchest/idiap.py
index bf1f935641faff87898b9e486cdd39b5248fe699..be0f9b2f9b5b2947f60cbc4a4b5e31da75e26d15 100644
--- a/src/ptbench/data/padchest/idiap.py
+++ b/src/ptbench/config/data/padchest/idiap.py
@@ -6,14 +6,15 @@
 Database reference: [PADCHEST-2019]_
 
 This split contains all images in the database.  Read documentation of
-:py:class:`.padchest.datamodule.DataModule` for technical details.
+:py:class:`ptbench.config.data.padchest.datamodule.DataModule` for technical
+details.
 
 * Split reference: ours
   * Training samples: 96'269
-  * Validation samples: ?
-  * Test samples: ?
+  * Validation samples: 0
+  * Test samples: 0
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.padchest.datamodule import DataModule
 
 datamodule = DataModule("idiap.json.bz2")
diff --git a/src/ptbench/data/padchest/no-tb-idiap.json.bz2 b/src/ptbench/config/data/padchest/no-tb-idiap.json.bz2
similarity index 100%
rename from src/ptbench/data/padchest/no-tb-idiap.json.bz2
rename to src/ptbench/config/data/padchest/no-tb-idiap.json.bz2
diff --git a/src/ptbench/data/padchest/no_tb_idiap.py b/src/ptbench/config/data/padchest/no_tb_idiap.py
similarity index 81%
rename from src/ptbench/data/padchest/no_tb_idiap.py
rename to src/ptbench/config/data/padchest/no_tb_idiap.py
index ca787520874bd9380fff6c8caa1f34943f269305..8c2c5fc7a48502b140ee3a0c870c6cb832b72273 100644
--- a/src/ptbench/data/padchest/no_tb_idiap.py
+++ b/src/ptbench/config/data/padchest/no_tb_idiap.py
@@ -28,10 +28,11 @@ Database reference: [PADCHEST-2019]_
   * fibrosis
   * edema and consolidation
 
-Read documentation of :py:class:`.padchest.datamodule.DataModule` for technical
+Read documentation of
+:py:class:`ptbench.config.data.padchest.datamodule.DataModule` for technical
 details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.padchest.datamodule import DataModule
 
 datamodule = DataModule("no-tb-idiap.json.bz2")
diff --git a/src/ptbench/data/padchest/tb-idiap.json b/src/ptbench/config/data/padchest/tb-idiap.json
similarity index 100%
rename from src/ptbench/data/padchest/tb-idiap.json
rename to src/ptbench/config/data/padchest/tb-idiap.json
diff --git a/src/ptbench/data/padchest/tb_idiap.py b/src/ptbench/config/data/padchest/tb_idiap.py
similarity index 77%
rename from src/ptbench/data/padchest/tb_idiap.py
rename to src/ptbench/config/data/padchest/tb_idiap.py
index d77e5afd0e2a92b0b516af8e69713b6ecaba599a..c6c4da93caadc0720279bddf74f4e44df3722e51 100644
--- a/src/ptbench/data/padchest/tb_idiap.py
+++ b/src/ptbench/config/data/padchest/tb_idiap.py
@@ -10,10 +10,11 @@ the following parameters: Label = "Normal", MethodLabel = "Physician",
 Projection = "PA" and TB cases.  Labelling matches those for active TB (binary)
 classification datasets.
 
-Read documentation of :py:class:`.padchest.datamodule.DataModule` for technical
+Read documentation of
+:py:class:`ptbench.config.data.padchest.datamodule.DataModule` for technical
 details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.padchest.datamodule import DataModule
 
 datamodule = DataModule("tb-idiap.json")
diff --git a/src/ptbench/data/tbpoc/__init__.py b/src/ptbench/config/data/shenzhen/__init__.py
similarity index 100%
rename from src/ptbench/data/tbpoc/__init__.py
rename to src/ptbench/config/data/shenzhen/__init__.py
diff --git a/src/ptbench/data/shenzhen/datamodule.py b/src/ptbench/config/data/shenzhen/datamodule.py
similarity index 84%
rename from src/ptbench/data/shenzhen/datamodule.py
rename to src/ptbench/config/data/shenzhen/datamodule.py
index af5a40745f9dce870701712c397624a4df823521..70c63893fd5e5133e01fc608b708c36822426332 100644
--- a/src/ptbench/data/shenzhen/datamodule.py
+++ b/src/ptbench/config/data/shenzhen/datamodule.py
@@ -13,13 +13,17 @@ import PIL.Image
 
 from torchvision.transforms.functional import center_crop, to_tensor
 
-from ...utils.rc import load_rc
-from ..datamodule import CachingDataModule
-from ..image_utils import remove_black_borders
-from ..split import JSONDatabaseSplit
-from ..typing import DatabaseSplit
-from ..typing import RawDataLoader as _BaseRawDataLoader
-from ..typing import Sample
+from ptbench.data.datamodule import CachingDataModule
+from ptbench.data.image_utils import remove_black_borders
+from ptbench.data.split import JSONDatabaseSplit
+from ptbench.data.typing import DatabaseSplit
+from ptbench.data.typing import RawDataLoader as _BaseRawDataLoader
+from ptbench.data.typing import Sample
+from ptbench.utils.rc import load_rc
+
+CONFIGURATION_KEY_DATADIR = "datadir." + (__name__.rsplit(".", 2)[-2])
+"""Key to search for in the configuration file for the root directory of this
+database."""
 
 
 class RawDataLoader(_BaseRawDataLoader):
@@ -29,7 +33,9 @@ class RawDataLoader(_BaseRawDataLoader):
     """This variable contains the base directory where the database raw data is
     stored."""
 
-    def __init__(self, config_variable: str = "datadir.shenzhen"):
+    # config_variable: required so this loader can be used for the Indian
+    # database as well.
+    def __init__(self, config_variable: str = CONFIGURATION_KEY_DATADIR):
         self.datadir = load_rc().get(
             config_variable, os.path.realpath(os.curdir)
         )
diff --git a/src/ptbench/data/shenzhen/default.json b/src/ptbench/config/data/shenzhen/default.json
similarity index 100%
rename from src/ptbench/data/shenzhen/default.json
rename to src/ptbench/config/data/shenzhen/default.json
diff --git a/src/ptbench/data/shenzhen/default.py b/src/ptbench/config/data/shenzhen/default.py
similarity index 75%
rename from src/ptbench/data/shenzhen/default.py
rename to src/ptbench/config/data/shenzhen/default.py
index b8cf71724bac9b67656bc8d266011ecfceb8eb32..fd0dbaf1dc04074fc9c091564c15078181614fc9 100644
--- a/src/ptbench/data/shenzhen/default.py
+++ b/src/ptbench/config/data/shenzhen/default.py
@@ -9,9 +9,10 @@ Database reference: [MONTGOMERY-SHENZHEN-2014]_
 * Validation samples: 16% of TB and healthy CXR (including labels)
 * Test samples: 20% of TB and healthy CXR (including labels)
 
-See :py:class:`.shenzhen.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.shenzhen.datamodule.DataModule` for
+technical details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.shenzhen.datamodule import DataModule
 
 datamodule = DataModule("default.json")
diff --git a/src/ptbench/data/shenzhen/fold-0.json b/src/ptbench/config/data/shenzhen/fold-0.json
similarity index 100%
rename from src/ptbench/data/shenzhen/fold-0.json
rename to src/ptbench/config/data/shenzhen/fold-0.json
diff --git a/src/ptbench/data/shenzhen/fold-1.json b/src/ptbench/config/data/shenzhen/fold-1.json
similarity index 100%
rename from src/ptbench/data/shenzhen/fold-1.json
rename to src/ptbench/config/data/shenzhen/fold-1.json
diff --git a/src/ptbench/data/shenzhen/fold-2.json b/src/ptbench/config/data/shenzhen/fold-2.json
similarity index 100%
rename from src/ptbench/data/shenzhen/fold-2.json
rename to src/ptbench/config/data/shenzhen/fold-2.json
diff --git a/src/ptbench/data/shenzhen/fold-3.json b/src/ptbench/config/data/shenzhen/fold-3.json
similarity index 100%
rename from src/ptbench/data/shenzhen/fold-3.json
rename to src/ptbench/config/data/shenzhen/fold-3.json
diff --git a/src/ptbench/data/shenzhen/fold-4.json b/src/ptbench/config/data/shenzhen/fold-4.json
similarity index 100%
rename from src/ptbench/data/shenzhen/fold-4.json
rename to src/ptbench/config/data/shenzhen/fold-4.json
diff --git a/src/ptbench/data/shenzhen/fold-5.json b/src/ptbench/config/data/shenzhen/fold-5.json
similarity index 100%
rename from src/ptbench/data/shenzhen/fold-5.json
rename to src/ptbench/config/data/shenzhen/fold-5.json
diff --git a/src/ptbench/data/shenzhen/fold-6.json b/src/ptbench/config/data/shenzhen/fold-6.json
similarity index 100%
rename from src/ptbench/data/shenzhen/fold-6.json
rename to src/ptbench/config/data/shenzhen/fold-6.json
diff --git a/src/ptbench/data/shenzhen/fold-7.json b/src/ptbench/config/data/shenzhen/fold-7.json
similarity index 100%
rename from src/ptbench/data/shenzhen/fold-7.json
rename to src/ptbench/config/data/shenzhen/fold-7.json
diff --git a/src/ptbench/data/shenzhen/fold-8.json b/src/ptbench/config/data/shenzhen/fold-8.json
similarity index 100%
rename from src/ptbench/data/shenzhen/fold-8.json
rename to src/ptbench/config/data/shenzhen/fold-8.json
diff --git a/src/ptbench/data/shenzhen/fold-9.json b/src/ptbench/config/data/shenzhen/fold-9.json
similarity index 100%
rename from src/ptbench/data/shenzhen/fold-9.json
rename to src/ptbench/config/data/shenzhen/fold-9.json
diff --git a/src/ptbench/data/shenzhen/fold_0.py b/src/ptbench/config/data/shenzhen/fold_0.py
similarity index 66%
rename from src/ptbench/data/shenzhen/fold_0.py
rename to src/ptbench/config/data/shenzhen/fold_0.py
index df1359ae33f1331e6bbae4c48069ef232f34d824..890250dba8e7c9780fb9873a0203e5fd65f11de0 100644
--- a/src/ptbench/data/shenzhen/fold_0.py
+++ b/src/ptbench/config/data/shenzhen/fold_0.py
@@ -5,9 +5,10 @@
 
 Database reference: [MONTGOMERY-SHENZHEN-2014]_
 
-See :py:class:`.shenzhen.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.shenzhen.datamodule.DataModule` for
+technical details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.shenzhen.datamodule import DataModule
 
 datamodule = DataModule("fold-0.json")
diff --git a/src/ptbench/data/shenzhen/fold_1.py b/src/ptbench/config/data/shenzhen/fold_1.py
similarity index 66%
rename from src/ptbench/data/shenzhen/fold_1.py
rename to src/ptbench/config/data/shenzhen/fold_1.py
index 03be3fa6555ef9b8844d2814dab8e4ac4d293e23..ff95e0d052b7beab85e1c6196b79d9e86dba5e16 100644
--- a/src/ptbench/data/shenzhen/fold_1.py
+++ b/src/ptbench/config/data/shenzhen/fold_1.py
@@ -5,9 +5,10 @@
 
 Database reference: [MONTGOMERY-SHENZHEN-2014]_
 
-See :py:class:`.shenzhen.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.shenzhen.datamodule.DataModule` for
+technical details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.shenzhen.datamodule import DataModule
 
 datamodule = DataModule("fold-1.json")
diff --git a/src/ptbench/data/shenzhen/fold_2.py b/src/ptbench/config/data/shenzhen/fold_2.py
similarity index 66%
rename from src/ptbench/data/shenzhen/fold_2.py
rename to src/ptbench/config/data/shenzhen/fold_2.py
index f4bd72d89bc66ca4cca47ec851f8f202bcd25278..db16495c2b3b205ffabf4c920d3a198967d2fb34 100644
--- a/src/ptbench/data/shenzhen/fold_2.py
+++ b/src/ptbench/config/data/shenzhen/fold_2.py
@@ -5,9 +5,10 @@
 
 Database reference: [MONTGOMERY-SHENZHEN-2014]_
 
-See :py:class:`.shenzhen.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.shenzhen.datamodule.DataModule` for
+technical details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.shenzhen.datamodule import DataModule
 
 datamodule = DataModule("fold-2.json")
diff --git a/src/ptbench/data/shenzhen/fold_3.py b/src/ptbench/config/data/shenzhen/fold_3.py
similarity index 66%
rename from src/ptbench/data/shenzhen/fold_3.py
rename to src/ptbench/config/data/shenzhen/fold_3.py
index b41c78861b56d5d010a3400c2d281c96135b81c3..d0321c8696c168ad83d5910641699233ce7425a9 100644
--- a/src/ptbench/data/shenzhen/fold_3.py
+++ b/src/ptbench/config/data/shenzhen/fold_3.py
@@ -5,9 +5,10 @@
 
 Database reference: [MONTGOMERY-SHENZHEN-2014]_
 
-See :py:class:`.shenzhen.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.shenzhen.datamodule.DataModule` for
+technical details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.shenzhen.datamodule import DataModule
 
 datamodule = DataModule("fold-3.json")
diff --git a/src/ptbench/data/shenzhen/fold_4.py b/src/ptbench/config/data/shenzhen/fold_4.py
similarity index 66%
rename from src/ptbench/data/shenzhen/fold_4.py
rename to src/ptbench/config/data/shenzhen/fold_4.py
index f9105989f0b812a19fbaf8db9d9283053081938e..f6760358546c2daa9712bc2c618c9dd1b118b557 100644
--- a/src/ptbench/data/shenzhen/fold_4.py
+++ b/src/ptbench/config/data/shenzhen/fold_4.py
@@ -5,9 +5,10 @@
 
 Database reference: [MONTGOMERY-SHENZHEN-2014]_
 
-See :py:class:`.shenzhen.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.shenzhen.datamodule.DataModule` for
+technical details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.shenzhen.datamodule import DataModule
 
 datamodule = DataModule("fold-4.json")
diff --git a/src/ptbench/data/shenzhen/fold_5.py b/src/ptbench/config/data/shenzhen/fold_5.py
similarity index 66%
rename from src/ptbench/data/shenzhen/fold_5.py
rename to src/ptbench/config/data/shenzhen/fold_5.py
index 7882e8990bd4512967128374a82b8763c8701a40..6d77a8409a5813d6451f4346b7217c120bbee992 100644
--- a/src/ptbench/data/shenzhen/fold_5.py
+++ b/src/ptbench/config/data/shenzhen/fold_5.py
@@ -5,9 +5,10 @@
 
 Database reference: [MONTGOMERY-SHENZHEN-2014]_
 
-See :py:class:`.shenzhen.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.shenzhen.datamodule.DataModule` for
+technical details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.shenzhen.datamodule import DataModule
 
 datamodule = DataModule("fold-5.json")
diff --git a/src/ptbench/data/shenzhen/fold_6.py b/src/ptbench/config/data/shenzhen/fold_6.py
similarity index 66%
rename from src/ptbench/data/shenzhen/fold_6.py
rename to src/ptbench/config/data/shenzhen/fold_6.py
index 4d11aca0a0c46753d4acc4c6e252309a6af24ab8..3ecd646ebb15ed34a2863a924497fa391e2dd881 100644
--- a/src/ptbench/data/shenzhen/fold_6.py
+++ b/src/ptbench/config/data/shenzhen/fold_6.py
@@ -5,9 +5,10 @@
 
 Database reference: [MONTGOMERY-SHENZHEN-2014]_
 
-See :py:class:`.shenzhen.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.shenzhen.datamodule.DataModule` for
+technical details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.shenzhen.datamodule import DataModule
 
 datamodule = DataModule("fold-6.json")
diff --git a/src/ptbench/data/shenzhen/fold_7.py b/src/ptbench/config/data/shenzhen/fold_7.py
similarity index 66%
rename from src/ptbench/data/shenzhen/fold_7.py
rename to src/ptbench/config/data/shenzhen/fold_7.py
index 8a7943459ea9b3a103bd25f031cd44e8ae66fb78..61ba5d27a1062f3f971282b659e9801712b139c4 100644
--- a/src/ptbench/data/shenzhen/fold_7.py
+++ b/src/ptbench/config/data/shenzhen/fold_7.py
@@ -5,9 +5,10 @@
 
 Database reference: [MONTGOMERY-SHENZHEN-2014]_
 
-See :py:class:`.shenzhen.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.shenzhen.datamodule.DataModule` for
+technical details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.shenzhen.datamodule import DataModule
 
 datamodule = DataModule("fold-7.json")
diff --git a/src/ptbench/data/shenzhen/fold_8.py b/src/ptbench/config/data/shenzhen/fold_8.py
similarity index 66%
rename from src/ptbench/data/shenzhen/fold_8.py
rename to src/ptbench/config/data/shenzhen/fold_8.py
index 9abe5fa47349ce40dfe9fb8bfac85ca022ab8c60..a03121d5653ebcdf719eccb7d89ddd3a8d54b4f9 100644
--- a/src/ptbench/data/shenzhen/fold_8.py
+++ b/src/ptbench/config/data/shenzhen/fold_8.py
@@ -5,9 +5,10 @@
 
 Database reference: [MONTGOMERY-SHENZHEN-2014]_
 
-See :py:class:`.shenzhen.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.shenzhen.datamodule.DataModule` for
+technical details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.shenzhen.datamodule import DataModule
 
 datamodule = DataModule("fold-8.json")
diff --git a/src/ptbench/data/shenzhen/fold_9.py b/src/ptbench/config/data/shenzhen/fold_9.py
similarity index 66%
rename from src/ptbench/data/shenzhen/fold_9.py
rename to src/ptbench/config/data/shenzhen/fold_9.py
index 06fab9743af4037b1a9415c35ef648dd60951cd4..168031c80166bfc76de482231851248846009388 100644
--- a/src/ptbench/data/shenzhen/fold_9.py
+++ b/src/ptbench/config/data/shenzhen/fold_9.py
@@ -5,9 +5,10 @@
 
 Database reference: [MONTGOMERY-SHENZHEN-2014]_
 
-See :py:class:`.shenzhen.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.shenzhen.datamodule.DataModule` for
+technical details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.shenzhen.datamodule import DataModule
 
 datamodule = DataModule("fold-9.json")
diff --git a/src/ptbench/data/tbx11k/__init__.py b/src/ptbench/config/data/tbpoc/__init__.py
similarity index 100%
rename from src/ptbench/data/tbx11k/__init__.py
rename to src/ptbench/config/data/tbpoc/__init__.py
diff --git a/src/ptbench/data/tbpoc/datamodule.py b/src/ptbench/config/data/tbpoc/datamodule.py
similarity index 84%
rename from src/ptbench/data/tbpoc/datamodule.py
rename to src/ptbench/config/data/tbpoc/datamodule.py
index f564e2326cf4d0ae50eaa0d2e673384dff076584..42a3a10f31db87e8f37f7721c06de4751ae17d61 100644
--- a/src/ptbench/data/tbpoc/datamodule.py
+++ b/src/ptbench/config/data/tbpoc/datamodule.py
@@ -9,13 +9,17 @@ import PIL.Image
 
 from torchvision.transforms.functional import center_crop, to_tensor
 
-from ...utils.rc import load_rc
-from ..datamodule import CachingDataModule
-from ..image_utils import remove_black_borders
-from ..split import JSONDatabaseSplit
-from ..typing import DatabaseSplit
-from ..typing import RawDataLoader as _BaseRawDataLoader
-from ..typing import Sample
+from ptbench.data.datamodule import CachingDataModule
+from ptbench.data.image_utils import remove_black_borders
+from ptbench.data.split import JSONDatabaseSplit
+from ptbench.data.typing import DatabaseSplit
+from ptbench.data.typing import RawDataLoader as _BaseRawDataLoader
+from ptbench.data.typing import Sample
+from ptbench.utils.rc import load_rc
+
+CONFIGURATION_KEY_DATADIR = "datadir." + (__name__.rsplit(".", 2)[-2])
+"""Key to search for in the configuration file for the root directory of this
+database."""
 
 
 class RawDataLoader(_BaseRawDataLoader):
@@ -25,9 +29,9 @@ class RawDataLoader(_BaseRawDataLoader):
     """This variable contains the base directory where the database raw data is
     stored."""
 
-    def __init__(self, config_variable: str = "datadir.tbpoc"):
+    def __init__(self):
         self.datadir = load_rc().get(
-            config_variable, os.path.realpath(os.curdir)
+            CONFIGURATION_KEY_DATADIR, os.path.realpath(os.curdir)
         )
 
     def sample(self, sample: tuple[str, int]) -> Sample:
diff --git a/src/ptbench/data/tbpoc/fold-0.json b/src/ptbench/config/data/tbpoc/fold-0.json
similarity index 100%
rename from src/ptbench/data/tbpoc/fold-0.json
rename to src/ptbench/config/data/tbpoc/fold-0.json
diff --git a/src/ptbench/data/tbpoc/fold-1.json b/src/ptbench/config/data/tbpoc/fold-1.json
similarity index 100%
rename from src/ptbench/data/tbpoc/fold-1.json
rename to src/ptbench/config/data/tbpoc/fold-1.json
diff --git a/src/ptbench/data/tbpoc/fold-2.json b/src/ptbench/config/data/tbpoc/fold-2.json
similarity index 100%
rename from src/ptbench/data/tbpoc/fold-2.json
rename to src/ptbench/config/data/tbpoc/fold-2.json
diff --git a/src/ptbench/data/tbpoc/fold-3.json b/src/ptbench/config/data/tbpoc/fold-3.json
similarity index 100%
rename from src/ptbench/data/tbpoc/fold-3.json
rename to src/ptbench/config/data/tbpoc/fold-3.json
diff --git a/src/ptbench/data/tbpoc/fold-4.json b/src/ptbench/config/data/tbpoc/fold-4.json
similarity index 100%
rename from src/ptbench/data/tbpoc/fold-4.json
rename to src/ptbench/config/data/tbpoc/fold-4.json
diff --git a/src/ptbench/data/tbpoc/fold-5.json b/src/ptbench/config/data/tbpoc/fold-5.json
similarity index 100%
rename from src/ptbench/data/tbpoc/fold-5.json
rename to src/ptbench/config/data/tbpoc/fold-5.json
diff --git a/src/ptbench/data/tbpoc/fold-6.json b/src/ptbench/config/data/tbpoc/fold-6.json
similarity index 100%
rename from src/ptbench/data/tbpoc/fold-6.json
rename to src/ptbench/config/data/tbpoc/fold-6.json
diff --git a/src/ptbench/data/tbpoc/fold-7.json b/src/ptbench/config/data/tbpoc/fold-7.json
similarity index 100%
rename from src/ptbench/data/tbpoc/fold-7.json
rename to src/ptbench/config/data/tbpoc/fold-7.json
diff --git a/src/ptbench/data/tbpoc/fold-8.json b/src/ptbench/config/data/tbpoc/fold-8.json
similarity index 100%
rename from src/ptbench/data/tbpoc/fold-8.json
rename to src/ptbench/config/data/tbpoc/fold-8.json
diff --git a/src/ptbench/data/tbpoc/fold-9.json b/src/ptbench/config/data/tbpoc/fold-9.json
similarity index 100%
rename from src/ptbench/data/tbpoc/fold-9.json
rename to src/ptbench/config/data/tbpoc/fold-9.json
diff --git a/src/ptbench/data/tbpoc/fold_0.py b/src/ptbench/config/data/tbpoc/fold_0.py
similarity index 65%
rename from src/ptbench/data/tbpoc/fold_0.py
rename to src/ptbench/config/data/tbpoc/fold_0.py
index 5c4525047d486bf8891aa85f0fe68591067d1f79..e3a0d24221d1ba3b95d3d2015adf1e0dca53d194 100644
--- a/src/ptbench/data/tbpoc/fold_0.py
+++ b/src/ptbench/config/data/tbpoc/fold_0.py
@@ -5,9 +5,10 @@
 
 Database reference: [TB-POC-2018]_
 
-See :py:class:`.tbpoc.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.tbpoc.datamodule.DataModule` for technical
+details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.tbpoc.datamodule import DataModule
 
 datamodule = DataModule("fold-0.json")
diff --git a/src/ptbench/data/tbpoc/fold_1.py b/src/ptbench/config/data/tbpoc/fold_1.py
similarity index 65%
rename from src/ptbench/data/tbpoc/fold_1.py
rename to src/ptbench/config/data/tbpoc/fold_1.py
index a2fe60830287470a2d3c39ec716fb0119aded6ad..b6a04095a2f5e76d6ff37a5622f1b1bdad37500a 100644
--- a/src/ptbench/data/tbpoc/fold_1.py
+++ b/src/ptbench/config/data/tbpoc/fold_1.py
@@ -5,9 +5,10 @@
 
 Database reference: [TB-POC-2018]_
 
-See :py:class:`.tbpoc.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.tbpoc.datamodule.DataModule` for technical
+details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.tbpoc.datamodule import DataModule
 
 datamodule = DataModule("fold-1.json")
diff --git a/src/ptbench/data/tbpoc/fold_2.py b/src/ptbench/config/data/tbpoc/fold_2.py
similarity index 65%
rename from src/ptbench/data/tbpoc/fold_2.py
rename to src/ptbench/config/data/tbpoc/fold_2.py
index f0aa508cd2d75f06fe82e99a2476559d5595828b..c821f0cc0eb1d4a4085cf1b93c36cd8b751262e9 100644
--- a/src/ptbench/data/tbpoc/fold_2.py
+++ b/src/ptbench/config/data/tbpoc/fold_2.py
@@ -5,9 +5,10 @@
 
 Database reference: [TB-POC-2018]_
 
-See :py:class:`.tbpoc.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.tbpoc.datamodule.DataModule` for technical
+details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.tbpoc.datamodule import DataModule
 
 datamodule = DataModule("fold-2.json")
diff --git a/src/ptbench/data/tbpoc/fold_3.py b/src/ptbench/config/data/tbpoc/fold_3.py
similarity index 65%
rename from src/ptbench/data/tbpoc/fold_3.py
rename to src/ptbench/config/data/tbpoc/fold_3.py
index b13213c74d5244dd73e4aa618764ac36fc33ed1a..c5c9fa7daf28e5a2e84ab85a62be5fc7dd380af2 100644
--- a/src/ptbench/data/tbpoc/fold_3.py
+++ b/src/ptbench/config/data/tbpoc/fold_3.py
@@ -5,9 +5,10 @@
 
 Database reference: [TB-POC-2018]_
 
-See :py:class:`.tbpoc.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.tbpoc.datamodule.DataModule` for technical
+details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.tbpoc.datamodule import DataModule
 
 datamodule = DataModule("fold-3.json")
diff --git a/src/ptbench/data/tbpoc/fold_4.py b/src/ptbench/config/data/tbpoc/fold_4.py
similarity index 65%
rename from src/ptbench/data/tbpoc/fold_4.py
rename to src/ptbench/config/data/tbpoc/fold_4.py
index fe153fc697bda231c73bd533f710d63a84cc15af..9b3b74d9c41f307286cb5ad017f6ec1677906b1f 100644
--- a/src/ptbench/data/tbpoc/fold_4.py
+++ b/src/ptbench/config/data/tbpoc/fold_4.py
@@ -5,9 +5,10 @@
 
 Database reference: [TB-POC-2018]_
 
-See :py:class:`.tbpoc.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.tbpoc.datamodule.DataModule` for technical
+details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.tbpoc.datamodule import DataModule
 
 datamodule = DataModule("fold-4.json")
diff --git a/src/ptbench/data/tbpoc/fold_5.py b/src/ptbench/config/data/tbpoc/fold_5.py
similarity index 65%
rename from src/ptbench/data/tbpoc/fold_5.py
rename to src/ptbench/config/data/tbpoc/fold_5.py
index 7759ccc7b8cad4e1f2d54d7e11987700d985df34..7a9947dcd432cba2c1c29dcc2e611b2f173afe94 100644
--- a/src/ptbench/data/tbpoc/fold_5.py
+++ b/src/ptbench/config/data/tbpoc/fold_5.py
@@ -5,9 +5,10 @@
 
 Database reference: [TB-POC-2018]_
 
-See :py:class:`.tbpoc.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.tbpoc.datamodule.DataModule` for technical
+details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.tbpoc.datamodule import DataModule
 
 datamodule = DataModule("fold-5.json")
diff --git a/src/ptbench/data/tbpoc/fold_6.py b/src/ptbench/config/data/tbpoc/fold_6.py
similarity index 65%
rename from src/ptbench/data/tbpoc/fold_6.py
rename to src/ptbench/config/data/tbpoc/fold_6.py
index 35be05a4e2d0f0eaa86dc789f2da1cfb18a5c2e8..0e6a7349494077d834e18099bccf65dce83dffd2 100644
--- a/src/ptbench/data/tbpoc/fold_6.py
+++ b/src/ptbench/config/data/tbpoc/fold_6.py
@@ -5,9 +5,10 @@
 
 Database reference: [TB-POC-2018]_
 
-See :py:class:`.tbpoc.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.tbpoc.datamodule.DataModule` for technical
+details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.tbpoc.datamodule import DataModule
 
 datamodule = DataModule("fold-6.json")
diff --git a/src/ptbench/data/tbpoc/fold_7.py b/src/ptbench/config/data/tbpoc/fold_7.py
similarity index 65%
rename from src/ptbench/data/tbpoc/fold_7.py
rename to src/ptbench/config/data/tbpoc/fold_7.py
index da5bec1e26bc911a964d06c196e35462ab6b5962..bb257c8efaa7a4f65ea59766716546434291a48f 100644
--- a/src/ptbench/data/tbpoc/fold_7.py
+++ b/src/ptbench/config/data/tbpoc/fold_7.py
@@ -5,9 +5,10 @@
 
 Database reference: [TB-POC-2018]_
 
-See :py:class:`.tbpoc.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.tbpoc.datamodule.DataModule` for technical
+details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.tbpoc.datamodule import DataModule
 
 datamodule = DataModule("fold-7.json")
diff --git a/src/ptbench/data/tbpoc/fold_8.py b/src/ptbench/config/data/tbpoc/fold_8.py
similarity index 65%
rename from src/ptbench/data/tbpoc/fold_8.py
rename to src/ptbench/config/data/tbpoc/fold_8.py
index 65339cc04b4cfe7616c88f0a3c15189b781d1ac7..790f13c954d7f27d9616c9e07db87a0ae9065f20 100644
--- a/src/ptbench/data/tbpoc/fold_8.py
+++ b/src/ptbench/config/data/tbpoc/fold_8.py
@@ -5,9 +5,10 @@
 
 Database reference: [TB-POC-2018]_
 
-See :py:class:`.tbpoc.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.tbpoc.datamodule.DataModule` for technical
+details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.tbpoc.datamodule import DataModule
 
 datamodule = DataModule("fold-8.json")
diff --git a/src/ptbench/data/tbpoc/fold_9.py b/src/ptbench/config/data/tbpoc/fold_9.py
similarity index 65%
rename from src/ptbench/data/tbpoc/fold_9.py
rename to src/ptbench/config/data/tbpoc/fold_9.py
index dd42e068947eeaafea5ff9600598d85b91a899cc..a53852a6aeb7a593f6b04a95c031dc6f66525988 100644
--- a/src/ptbench/data/tbpoc/fold_9.py
+++ b/src/ptbench/config/data/tbpoc/fold_9.py
@@ -5,9 +5,10 @@
 
 Database reference: [TB-POC-2018]_
 
-See :py:class:`.tbpoc.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.tbpoc.datamodule.DataModule` for technical
+details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.tbpoc.datamodule import DataModule
 
 datamodule = DataModule("fold-9.json")
diff --git a/src/ptbench/models/config/__init__.py b/src/ptbench/config/data/tbx11k/__init__.py
similarity index 100%
rename from src/ptbench/models/config/__init__.py
rename to src/ptbench/config/data/tbx11k/__init__.py
diff --git a/src/ptbench/data/tbx11k/datamodule.py b/src/ptbench/config/data/tbx11k/datamodule.py
similarity index 93%
rename from src/ptbench/data/tbx11k/datamodule.py
rename to src/ptbench/config/data/tbx11k/datamodule.py
index 45cab752ea18a132b59b3f93cc03e1b46a1f1021..a5959e820b18b9a04d53f15b88e6001b8fdaa7b3 100644
--- a/src/ptbench/data/tbx11k/datamodule.py
+++ b/src/ptbench/config/data/tbx11k/datamodule.py
@@ -10,12 +10,17 @@ import PIL.Image
 
 from torchvision.transforms.functional import to_tensor
 
-from ...utils.rc import load_rc
-from ..datamodule import CachingDataModule
-from ..split import JSONDatabaseSplit
-from ..typing import DatabaseSplit
-from ..typing import RawDataLoader as _BaseRawDataLoader
-from ..typing import Sample
+from ptbench.data.datamodule import CachingDataModule
+from ptbench.data.split import JSONDatabaseSplit
+from ptbench.data.typing import DatabaseSplit
+from ptbench.data.typing import RawDataLoader as _BaseRawDataLoader
+from ptbench.data.typing import Sample
+from ptbench.utils.rc import load_rc
+
+CONFIGURATION_KEY_DATADIR = "datadir." + (__name__.rsplit(".", 2)[-2])
+"""Key to search for in the configuration file for the root directory of this
+database."""
+
 
 BoundingBoxAnnotation: typing.TypeAlias = tuple[int, int, int, int, int]
 """Location of TB radiological findings (latent or active)
@@ -55,7 +60,7 @@ class RawDataLoader(_BaseRawDataLoader):
 
     def __init__(self):
         self.datadir = load_rc().get(
-            "datadir.tbx11k", os.path.realpath(os.curdir)
+            CONFIGURATION_KEY_DATADIR, os.path.realpath(os.curdir)
         )
 
     def sample(self, sample: DatabaseSample) -> Sample:
diff --git a/src/ptbench/data/tbx11k/make_splits_from_database.py b/src/ptbench/config/data/tbx11k/make_splits_from_database.py
similarity index 100%
rename from src/ptbench/data/tbx11k/make_splits_from_database.py
rename to src/ptbench/config/data/tbx11k/make_splits_from_database.py
diff --git a/src/ptbench/data/tbx11k/v1-fold-0.json b/src/ptbench/config/data/tbx11k/v1-fold-0.json
similarity index 100%
rename from src/ptbench/data/tbx11k/v1-fold-0.json
rename to src/ptbench/config/data/tbx11k/v1-fold-0.json
diff --git a/src/ptbench/data/tbx11k/v1-fold-1.json b/src/ptbench/config/data/tbx11k/v1-fold-1.json
similarity index 100%
rename from src/ptbench/data/tbx11k/v1-fold-1.json
rename to src/ptbench/config/data/tbx11k/v1-fold-1.json
diff --git a/src/ptbench/data/tbx11k/v1-fold-2.json b/src/ptbench/config/data/tbx11k/v1-fold-2.json
similarity index 100%
rename from src/ptbench/data/tbx11k/v1-fold-2.json
rename to src/ptbench/config/data/tbx11k/v1-fold-2.json
diff --git a/src/ptbench/data/tbx11k/v1-fold-3.json b/src/ptbench/config/data/tbx11k/v1-fold-3.json
similarity index 100%
rename from src/ptbench/data/tbx11k/v1-fold-3.json
rename to src/ptbench/config/data/tbx11k/v1-fold-3.json
diff --git a/src/ptbench/data/tbx11k/v1-fold-4.json b/src/ptbench/config/data/tbx11k/v1-fold-4.json
similarity index 100%
rename from src/ptbench/data/tbx11k/v1-fold-4.json
rename to src/ptbench/config/data/tbx11k/v1-fold-4.json
diff --git a/src/ptbench/data/tbx11k/v1-fold-5.json b/src/ptbench/config/data/tbx11k/v1-fold-5.json
similarity index 100%
rename from src/ptbench/data/tbx11k/v1-fold-5.json
rename to src/ptbench/config/data/tbx11k/v1-fold-5.json
diff --git a/src/ptbench/data/tbx11k/v1-fold-6.json b/src/ptbench/config/data/tbx11k/v1-fold-6.json
similarity index 100%
rename from src/ptbench/data/tbx11k/v1-fold-6.json
rename to src/ptbench/config/data/tbx11k/v1-fold-6.json
diff --git a/src/ptbench/data/tbx11k/v1-fold-7.json b/src/ptbench/config/data/tbx11k/v1-fold-7.json
similarity index 100%
rename from src/ptbench/data/tbx11k/v1-fold-7.json
rename to src/ptbench/config/data/tbx11k/v1-fold-7.json
diff --git a/src/ptbench/data/tbx11k/v1-fold-8.json b/src/ptbench/config/data/tbx11k/v1-fold-8.json
similarity index 100%
rename from src/ptbench/data/tbx11k/v1-fold-8.json
rename to src/ptbench/config/data/tbx11k/v1-fold-8.json
diff --git a/src/ptbench/data/tbx11k/v1-fold-9.json b/src/ptbench/config/data/tbx11k/v1-fold-9.json
similarity index 100%
rename from src/ptbench/data/tbx11k/v1-fold-9.json
rename to src/ptbench/config/data/tbx11k/v1-fold-9.json
diff --git a/src/ptbench/data/tbx11k/v1-healthy-vs-atb.json b/src/ptbench/config/data/tbx11k/v1-healthy-vs-atb.json
similarity index 100%
rename from src/ptbench/data/tbx11k/v1-healthy-vs-atb.json
rename to src/ptbench/config/data/tbx11k/v1-healthy-vs-atb.json
diff --git a/src/ptbench/data/tbx11k/v1_fold_0.py b/src/ptbench/config/data/tbx11k/v1_fold_0.py
similarity index 67%
rename from src/ptbench/data/tbx11k/v1_fold_0.py
rename to src/ptbench/config/data/tbx11k/v1_fold_0.py
index ecf1e295ac32e61a0db1e127a75799649eab7661..9ba42d5231c0ce47de84d360e0bf753d3a0b3fde 100644
--- a/src/ptbench/data/tbx11k/v1_fold_0.py
+++ b/src/ptbench/config/data/tbx11k/v1_fold_0.py
@@ -6,9 +6,10 @@ cases).
 
 Database reference: [TBX11K-2020]_
 
-See :py:class:`.tbx11k.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.tbx11k.datamodule.DataModule` for technical
+details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.tbx11k.datamodule import DataModule
 
 datamodule = DataModule("v1-fold-0.json")
diff --git a/src/ptbench/data/tbx11k/v1_fold_1.py b/src/ptbench/config/data/tbx11k/v1_fold_1.py
similarity index 67%
rename from src/ptbench/data/tbx11k/v1_fold_1.py
rename to src/ptbench/config/data/tbx11k/v1_fold_1.py
index b74f9ac95589605d597384a71587a63ed236cd49..ca3fe10400d20e2a384d1e0f505a962df3ec9ed4 100644
--- a/src/ptbench/data/tbx11k/v1_fold_1.py
+++ b/src/ptbench/config/data/tbx11k/v1_fold_1.py
@@ -6,9 +6,10 @@ cases).
 
 Database reference: [TBX11K-2020]_
 
-See :py:class:`.tbx11k.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.tbx11k.datamodule.DataModule` for technical
+details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.tbx11k.datamodule import DataModule
 
 datamodule = DataModule("v1-fold-1.json")
diff --git a/src/ptbench/data/tbx11k/v1_fold_2.py b/src/ptbench/config/data/tbx11k/v1_fold_2.py
similarity index 67%
rename from src/ptbench/data/tbx11k/v1_fold_2.py
rename to src/ptbench/config/data/tbx11k/v1_fold_2.py
index c52f415ab991e363dc63fe8e038d4c0bb6fa125a..c3ec4fe440a6a191427696bae6ef573bfb223619 100644
--- a/src/ptbench/data/tbx11k/v1_fold_2.py
+++ b/src/ptbench/config/data/tbx11k/v1_fold_2.py
@@ -6,9 +6,10 @@ cases).
 
 Database reference: [TBX11K-2020]_
 
-See :py:class:`.tbx11k.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.tbx11k.datamodule.DataModule` for technical
+details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.tbx11k.datamodule import DataModule
 
 datamodule = DataModule("v1-fold-2.json")
diff --git a/src/ptbench/data/tbx11k/v1_fold_3.py b/src/ptbench/config/data/tbx11k/v1_fold_3.py
similarity index 67%
rename from src/ptbench/data/tbx11k/v1_fold_3.py
rename to src/ptbench/config/data/tbx11k/v1_fold_3.py
index 327948485e668138f2adf30b4c3972f421028fec..09fb16b27f600517e82c3dfee197d324b23b0080 100644
--- a/src/ptbench/data/tbx11k/v1_fold_3.py
+++ b/src/ptbench/config/data/tbx11k/v1_fold_3.py
@@ -6,9 +6,10 @@ cases).
 
 Database reference: [TBX11K-2020]_
 
-See :py:class:`.tbx11k.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.tbx11k.datamodule.DataModule` for technical
+details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.tbx11k.datamodule import DataModule
 
 datamodule = DataModule("v1-fold-3.json")
diff --git a/src/ptbench/data/tbx11k/v1_fold_4.py b/src/ptbench/config/data/tbx11k/v1_fold_4.py
similarity index 67%
rename from src/ptbench/data/tbx11k/v1_fold_4.py
rename to src/ptbench/config/data/tbx11k/v1_fold_4.py
index 1c1492322485c0d12481398f78e3f58863a26d25..8f96d1e540a4de75922f5c891979bbd3407b8374 100644
--- a/src/ptbench/data/tbx11k/v1_fold_4.py
+++ b/src/ptbench/config/data/tbx11k/v1_fold_4.py
@@ -6,9 +6,10 @@ cases).
 
 Database reference: [TBX11K-2020]_
 
-See :py:class:`.tbx11k.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.tbx11k.datamodule.DataModule` for technical
+details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.tbx11k.datamodule import DataModule
 
 datamodule = DataModule("v1-fold-4.json")
diff --git a/src/ptbench/data/tbx11k/v1_fold_5.py b/src/ptbench/config/data/tbx11k/v1_fold_5.py
similarity index 67%
rename from src/ptbench/data/tbx11k/v1_fold_5.py
rename to src/ptbench/config/data/tbx11k/v1_fold_5.py
index 2a74b2194a87e0570f8d1ad0bff55c29fec77c35..8ced06d43f229d85f5decb9d05b030dfc1f63a1e 100644
--- a/src/ptbench/data/tbx11k/v1_fold_5.py
+++ b/src/ptbench/config/data/tbx11k/v1_fold_5.py
@@ -6,9 +6,10 @@ cases).
 
 Database reference: [TBX11K-2020]_
 
-See :py:class:`.tbx11k.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.tbx11k.datamodule.DataModule` for technical
+details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.tbx11k.datamodule import DataModule
 
 datamodule = DataModule("v1-fold-5.json")
diff --git a/src/ptbench/data/tbx11k/v1_fold_6.py b/src/ptbench/config/data/tbx11k/v1_fold_6.py
similarity index 67%
rename from src/ptbench/data/tbx11k/v1_fold_6.py
rename to src/ptbench/config/data/tbx11k/v1_fold_6.py
index 67562a35bd299b21ebe688db205057d12a669bec..28e9f16a7523b45285d9d57f4c90bf61c5a98b96 100644
--- a/src/ptbench/data/tbx11k/v1_fold_6.py
+++ b/src/ptbench/config/data/tbx11k/v1_fold_6.py
@@ -6,9 +6,10 @@ cases).
 
 Database reference: [TBX11K-2020]_
 
-See :py:class:`.tbx11k.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.tbx11k.datamodule.DataModule` for technical
+details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.tbx11k.datamodule import DataModule
 
 datamodule = DataModule("v1-fold-6.json")
diff --git a/src/ptbench/data/tbx11k/v1_fold_7.py b/src/ptbench/config/data/tbx11k/v1_fold_7.py
similarity index 67%
rename from src/ptbench/data/tbx11k/v1_fold_7.py
rename to src/ptbench/config/data/tbx11k/v1_fold_7.py
index 3d80b71e3819efc253c14a6b74e3e78e6c4c510d..09886b940800e5f6eb7a33e442f068b08c834822 100644
--- a/src/ptbench/data/tbx11k/v1_fold_7.py
+++ b/src/ptbench/config/data/tbx11k/v1_fold_7.py
@@ -6,9 +6,10 @@ cases).
 
 Database reference: [TBX11K-2020]_
 
-See :py:class:`.tbx11k.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.tbx11k.datamodule.DataModule` for technical
+details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.tbx11k.datamodule import DataModule
 
 datamodule = DataModule("v1-fold-7.json")
diff --git a/src/ptbench/data/tbx11k/v1_fold_8.py b/src/ptbench/config/data/tbx11k/v1_fold_8.py
similarity index 67%
rename from src/ptbench/data/tbx11k/v1_fold_8.py
rename to src/ptbench/config/data/tbx11k/v1_fold_8.py
index f8e45fe19f82da0c162ab717bfa343cb2860b1ce..5fd2dd23acbc6c3c30e397c650a7da262c1317da 100644
--- a/src/ptbench/data/tbx11k/v1_fold_8.py
+++ b/src/ptbench/config/data/tbx11k/v1_fold_8.py
@@ -6,9 +6,10 @@ cases).
 
 Database reference: [TBX11K-2020]_
 
-See :py:class:`.tbx11k.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.tbx11k.datamodule.DataModule` for technical
+details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.tbx11k.datamodule import DataModule
 
 datamodule = DataModule("v1-fold-8.json")
diff --git a/src/ptbench/data/tbx11k/v1_fold_9.py b/src/ptbench/config/data/tbx11k/v1_fold_9.py
similarity index 67%
rename from src/ptbench/data/tbx11k/v1_fold_9.py
rename to src/ptbench/config/data/tbx11k/v1_fold_9.py
index 0d3943548e8088c3e92aa5d16acf5774e786bce3..440f724f694569cd76dbfa2b2ecba9c51723c322 100644
--- a/src/ptbench/data/tbx11k/v1_fold_9.py
+++ b/src/ptbench/config/data/tbx11k/v1_fold_9.py
@@ -6,9 +6,10 @@ cases).
 
 Database reference: [TBX11K-2020]_
 
-See :py:class:`.tbx11k.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.tbx11k.datamodule.DataModule` for technical
+details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.tbx11k.datamodule import DataModule
 
 datamodule = DataModule("v1-fold-9.json")
diff --git a/src/ptbench/data/tbx11k/v1_healthy_vs_atb.py b/src/ptbench/config/data/tbx11k/v1_healthy_vs_atb.py
similarity index 81%
rename from src/ptbench/data/tbx11k/v1_healthy_vs_atb.py
rename to src/ptbench/config/data/tbx11k/v1_healthy_vs_atb.py
index 0845f03b6213f4d2b01f79744c4e15a28ca78b09..785b6bfbcfe63089a2492658a632f16791c1c40f 100644
--- a/src/ptbench/data/tbx11k/v1_healthy_vs_atb.py
+++ b/src/ptbench/config/data/tbx11k/v1_healthy_vs_atb.py
@@ -27,9 +27,10 @@ Split v1 contains healthy subjects against active TB cases (total samples =
   - Active TB only: 157
   - Total: 957
 
-See :py:class:`.tbx11k.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.tbx11k.datamodule.DataModule` for technical
+details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.tbx11k.datamodule import DataModule
 
 datamodule = DataModule("v1-healthy-vs-atb.json")
diff --git a/src/ptbench/data/tbx11k/v2-fold-0.json b/src/ptbench/config/data/tbx11k/v2-fold-0.json
similarity index 100%
rename from src/ptbench/data/tbx11k/v2-fold-0.json
rename to src/ptbench/config/data/tbx11k/v2-fold-0.json
diff --git a/src/ptbench/data/tbx11k/v2-fold-1.json b/src/ptbench/config/data/tbx11k/v2-fold-1.json
similarity index 100%
rename from src/ptbench/data/tbx11k/v2-fold-1.json
rename to src/ptbench/config/data/tbx11k/v2-fold-1.json
diff --git a/src/ptbench/data/tbx11k/v2-fold-2.json b/src/ptbench/config/data/tbx11k/v2-fold-2.json
similarity index 100%
rename from src/ptbench/data/tbx11k/v2-fold-2.json
rename to src/ptbench/config/data/tbx11k/v2-fold-2.json
diff --git a/src/ptbench/data/tbx11k/v2-fold-3.json b/src/ptbench/config/data/tbx11k/v2-fold-3.json
similarity index 100%
rename from src/ptbench/data/tbx11k/v2-fold-3.json
rename to src/ptbench/config/data/tbx11k/v2-fold-3.json
diff --git a/src/ptbench/data/tbx11k/v2-fold-4.json b/src/ptbench/config/data/tbx11k/v2-fold-4.json
similarity index 100%
rename from src/ptbench/data/tbx11k/v2-fold-4.json
rename to src/ptbench/config/data/tbx11k/v2-fold-4.json
diff --git a/src/ptbench/data/tbx11k/v2-fold-5.json b/src/ptbench/config/data/tbx11k/v2-fold-5.json
similarity index 100%
rename from src/ptbench/data/tbx11k/v2-fold-5.json
rename to src/ptbench/config/data/tbx11k/v2-fold-5.json
diff --git a/src/ptbench/data/tbx11k/v2-fold-6.json b/src/ptbench/config/data/tbx11k/v2-fold-6.json
similarity index 100%
rename from src/ptbench/data/tbx11k/v2-fold-6.json
rename to src/ptbench/config/data/tbx11k/v2-fold-6.json
diff --git a/src/ptbench/data/tbx11k/v2-fold-7.json b/src/ptbench/config/data/tbx11k/v2-fold-7.json
similarity index 100%
rename from src/ptbench/data/tbx11k/v2-fold-7.json
rename to src/ptbench/config/data/tbx11k/v2-fold-7.json
diff --git a/src/ptbench/data/tbx11k/v2-fold-8.json b/src/ptbench/config/data/tbx11k/v2-fold-8.json
similarity index 100%
rename from src/ptbench/data/tbx11k/v2-fold-8.json
rename to src/ptbench/config/data/tbx11k/v2-fold-8.json
diff --git a/src/ptbench/data/tbx11k/v2-fold-9.json b/src/ptbench/config/data/tbx11k/v2-fold-9.json
similarity index 100%
rename from src/ptbench/data/tbx11k/v2-fold-9.json
rename to src/ptbench/config/data/tbx11k/v2-fold-9.json
diff --git a/src/ptbench/data/tbx11k/v2-others-vs-atb.json b/src/ptbench/config/data/tbx11k/v2-others-vs-atb.json
similarity index 100%
rename from src/ptbench/data/tbx11k/v2-others-vs-atb.json
rename to src/ptbench/config/data/tbx11k/v2-others-vs-atb.json
diff --git a/src/ptbench/data/tbx11k/v2_fold_0.py b/src/ptbench/config/data/tbx11k/v2_fold_0.py
similarity index 68%
rename from src/ptbench/data/tbx11k/v2_fold_0.py
rename to src/ptbench/config/data/tbx11k/v2_fold_0.py
index 8ccb73edb8863ccf973a9bb4d2e7a06c8802d694..c713c4799c01dbb92e388d0e3eb49fcf635d0bdc 100644
--- a/src/ptbench/data/tbx11k/v2_fold_0.py
+++ b/src/ptbench/config/data/tbx11k/v2_fold_0.py
@@ -6,9 +6,10 @@ TB vs. active TB cases).
 
 Database reference: [TBX11K-2020]_
 
-See :py:class:`.tbx11k.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.tbx11k.datamodule.DataModule` for technical
+details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.tbx11k.datamodule import DataModule
 
 datamodule = DataModule("v2-fold-0.json")
diff --git a/src/ptbench/data/tbx11k/v2_fold_1.py b/src/ptbench/config/data/tbx11k/v2_fold_1.py
similarity index 68%
rename from src/ptbench/data/tbx11k/v2_fold_1.py
rename to src/ptbench/config/data/tbx11k/v2_fold_1.py
index 9e1c3acaa7fff7f9a6c79ae9d376b23e1ad0a72d..10b3b183366f572f1445eaa54bd213f4317189f6 100644
--- a/src/ptbench/data/tbx11k/v2_fold_1.py
+++ b/src/ptbench/config/data/tbx11k/v2_fold_1.py
@@ -6,9 +6,10 @@ TB vs. active TB cases).
 
 Database reference: [TBX11K-2020]_
 
-See :py:class:`.tbx11k.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.tbx11k.datamodule.DataModule` for technical
+details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.tbx11k.datamodule import DataModule
 
 datamodule = DataModule("v2-fold-1.json")
diff --git a/src/ptbench/data/tbx11k/v2_fold_2.py b/src/ptbench/config/data/tbx11k/v2_fold_2.py
similarity index 68%
rename from src/ptbench/data/tbx11k/v2_fold_2.py
rename to src/ptbench/config/data/tbx11k/v2_fold_2.py
index 24a00ece5a48e3a4b4cc0d782f2d634a3fbc9892..f7fd10a680dd849dccd9bc5d9c76475d57190eff 100644
--- a/src/ptbench/data/tbx11k/v2_fold_2.py
+++ b/src/ptbench/config/data/tbx11k/v2_fold_2.py
@@ -6,9 +6,10 @@ TB vs. active TB cases).
 
 Database reference: [TBX11K-2020]_
 
-See :py:class:`.tbx11k.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.tbx11k.datamodule.DataModule` for technical
+details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.tbx11k.datamodule import DataModule
 
 datamodule = DataModule("v2-fold-2.json")
diff --git a/src/ptbench/data/tbx11k/v2_fold_3.py b/src/ptbench/config/data/tbx11k/v2_fold_3.py
similarity index 68%
rename from src/ptbench/data/tbx11k/v2_fold_3.py
rename to src/ptbench/config/data/tbx11k/v2_fold_3.py
index 9da2630d877af73283060965808bf78ae5e49114..b744251d208e72b1dd60e0b14faf9eecdcf9c7de 100644
--- a/src/ptbench/data/tbx11k/v2_fold_3.py
+++ b/src/ptbench/config/data/tbx11k/v2_fold_3.py
@@ -6,9 +6,10 @@ TB vs. active TB cases).
 
 Database reference: [TBX11K-2020]_
 
-See :py:class:`.tbx11k.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.tbx11k.datamodule.DataModule` for technical
+details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.tbx11k.datamodule import DataModule
 
 datamodule = DataModule("v2-fold-3.json")
diff --git a/src/ptbench/data/tbx11k/v2_fold_4.py b/src/ptbench/config/data/tbx11k/v2_fold_4.py
similarity index 68%
rename from src/ptbench/data/tbx11k/v2_fold_4.py
rename to src/ptbench/config/data/tbx11k/v2_fold_4.py
index 0555b567c6590aa9e8f492a627eaaab3ecf3b88f..17215495e6f94c2fe9013e7d9363bb1f807f51d8 100644
--- a/src/ptbench/data/tbx11k/v2_fold_4.py
+++ b/src/ptbench/config/data/tbx11k/v2_fold_4.py
@@ -6,9 +6,10 @@ TB vs. active TB cases).
 
 Database reference: [TBX11K-2020]_
 
-See :py:class:`.tbx11k.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.tbx11k.datamodule.DataModule` for technical
+details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.tbx11k.datamodule import DataModule
 
 datamodule = DataModule("v2-fold-4.json")
diff --git a/src/ptbench/data/tbx11k/v2_fold_5.py b/src/ptbench/config/data/tbx11k/v2_fold_5.py
similarity index 68%
rename from src/ptbench/data/tbx11k/v2_fold_5.py
rename to src/ptbench/config/data/tbx11k/v2_fold_5.py
index 1fddcc2fe1299e73f6abc15156a3acca03b8ad71..41a5ba43aeadc4e38dc5fb77aa837f4d5874fabc 100644
--- a/src/ptbench/data/tbx11k/v2_fold_5.py
+++ b/src/ptbench/config/data/tbx11k/v2_fold_5.py
@@ -6,9 +6,10 @@ TB vs. active TB cases).
 
 Database reference: [TBX11K-2020]_
 
-See :py:class:`.tbx11k.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.tbx11k.datamodule.DataModule` for technical
+details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.tbx11k.datamodule import DataModule
 
 datamodule = DataModule("v2-fold-5.json")
diff --git a/src/ptbench/data/tbx11k/v2_fold_6.py b/src/ptbench/config/data/tbx11k/v2_fold_6.py
similarity index 68%
rename from src/ptbench/data/tbx11k/v2_fold_6.py
rename to src/ptbench/config/data/tbx11k/v2_fold_6.py
index d9085af141544d1027c58b48384f5cdff55a525b..0f82163ddba31cc4bf756891ffbe7339cefb77f7 100644
--- a/src/ptbench/data/tbx11k/v2_fold_6.py
+++ b/src/ptbench/config/data/tbx11k/v2_fold_6.py
@@ -6,9 +6,10 @@ TB vs. active TB cases).
 
 Database reference: [TBX11K-2020]_
 
-See :py:class:`.tbx11k.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.tbx11k.datamodule.DataModule` for technical
+details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.tbx11k.datamodule import DataModule
 
 datamodule = DataModule("v2-fold-6.json")
diff --git a/src/ptbench/data/tbx11k/v2_fold_7.py b/src/ptbench/config/data/tbx11k/v2_fold_7.py
similarity index 68%
rename from src/ptbench/data/tbx11k/v2_fold_7.py
rename to src/ptbench/config/data/tbx11k/v2_fold_7.py
index b324e129e500e0881709e1f60490289b8372c04c..6f3d958bdf32435e7ca7ec21b2b7652eb0c3c5e3 100644
--- a/src/ptbench/data/tbx11k/v2_fold_7.py
+++ b/src/ptbench/config/data/tbx11k/v2_fold_7.py
@@ -6,9 +6,10 @@ TB vs. active TB cases).
 
 Database reference: [TBX11K-2020]_
 
-See :py:class:`.tbx11k.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.tbx11k.datamodule.DataModule` for technical
+details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.tbx11k.datamodule import DataModule
 
 datamodule = DataModule("v2-fold-7.json")
diff --git a/src/ptbench/data/tbx11k/v2_fold_8.py b/src/ptbench/config/data/tbx11k/v2_fold_8.py
similarity index 68%
rename from src/ptbench/data/tbx11k/v2_fold_8.py
rename to src/ptbench/config/data/tbx11k/v2_fold_8.py
index 31ed229a195bcbbb759354f5a8c4bbbb2f23b0df..3b10a65298d41e83aa0c0228ab88e50e563daf07 100644
--- a/src/ptbench/data/tbx11k/v2_fold_8.py
+++ b/src/ptbench/config/data/tbx11k/v2_fold_8.py
@@ -6,9 +6,10 @@ TB vs. active TB cases).
 
 Database reference: [TBX11K-2020]_
 
-See :py:class:`.tbx11k.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.tbx11k.datamodule.DataModule` for technical
+details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.tbx11k.datamodule import DataModule
 
 datamodule = DataModule("v2-fold-8.json")
diff --git a/src/ptbench/data/tbx11k/v2_fold_9.py b/src/ptbench/config/data/tbx11k/v2_fold_9.py
similarity index 68%
rename from src/ptbench/data/tbx11k/v2_fold_9.py
rename to src/ptbench/config/data/tbx11k/v2_fold_9.py
index 74db9a28df0db04c72bd59b745309d757dc6163d..8692230521407db7e0deb204d274d023221503b0 100644
--- a/src/ptbench/data/tbx11k/v2_fold_9.py
+++ b/src/ptbench/config/data/tbx11k/v2_fold_9.py
@@ -6,9 +6,10 @@ TB vs. active TB cases).
 
 Database reference: [TBX11K-2020]_
 
-See :py:class:`.tbx11k.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.tbx11k.datamodule.DataModule` for technical
+details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.tbx11k.datamodule import DataModule
 
 datamodule = DataModule("v2-fold-9.json")
diff --git a/src/ptbench/data/tbx11k/v2_others_vs_atb.py b/src/ptbench/config/data/tbx11k/v2_others_vs_atb.py
similarity index 83%
rename from src/ptbench/data/tbx11k/v2_others_vs_atb.py
rename to src/ptbench/config/data/tbx11k/v2_others_vs_atb.py
index b5f78019c2e97346af95eaf38eed745a6ac3d583..a5e8c480995360bbb04b3da486047cb852b4dd37 100644
--- a/src/ptbench/data/tbx11k/v2_others_vs_atb.py
+++ b/src/ptbench/config/data/tbx11k/v2_others_vs_atb.py
@@ -27,9 +27,10 @@ active TB cases (total samples = 8369):
   - Active TB only: 157
   - Total: 1793
 
-See :py:class:`.tbx11k.datamodule.DataModule` for technical details.
+See :py:class:`ptbench.config.data.tbx11k.datamodule.DataModule` for technical
+details.
 """
 
-from .datamodule import DataModule
+from ptbench.config.data.tbx11k.datamodule import DataModule
 
 datamodule = DataModule("v2-others-vs-atb.json")
diff --git a/src/ptbench/config/models/__init__.py b/src/ptbench/config/models/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/src/ptbench/models/config/alexnet.py b/src/ptbench/config/models/alexnet.py
similarity index 90%
rename from src/ptbench/models/config/alexnet.py
rename to src/ptbench/config/models/alexnet.py
index 9adcfec8dfb437ec2fc7b211da1e477ddc3b4fd1..fce6ba645f002038705c83e7674f5faebfad133f 100644
--- a/src/ptbench/models/config/alexnet.py
+++ b/src/ptbench/config/models/alexnet.py
@@ -4,7 +4,7 @@
 """AlexNet_, to be trained from scratch.
 
 This configuration contains a version of AlexNet_ (c.f. `TorchVision's
-page <alexnet_pytorch_>`), modified for a variable number of outputs
+page <alexnet-pytorch_>`_), modified for a variable number of outputs
 (defaults to 1).
 """
 
diff --git a/src/ptbench/models/config/alexnet_pretrained.py b/src/ptbench/config/models/alexnet_pretrained.py
similarity index 100%
rename from src/ptbench/models/config/alexnet_pretrained.py
rename to src/ptbench/config/models/alexnet_pretrained.py
diff --git a/src/ptbench/models/config/densenet.py b/src/ptbench/config/models/densenet.py
similarity index 100%
rename from src/ptbench/models/config/densenet.py
rename to src/ptbench/config/models/densenet.py
diff --git a/src/ptbench/models/config/densenet_pretrained.py b/src/ptbench/config/models/densenet_pretrained.py
similarity index 100%
rename from src/ptbench/models/config/densenet_pretrained.py
rename to src/ptbench/config/models/densenet_pretrained.py
diff --git a/src/ptbench/models/config/densenet_rs.py b/src/ptbench/config/models/densenet_rs.py
similarity index 100%
rename from src/ptbench/models/config/densenet_rs.py
rename to src/ptbench/config/models/densenet_rs.py
diff --git a/src/ptbench/models/config/logistic_regression.py b/src/ptbench/config/models/logistic_regression.py
similarity index 100%
rename from src/ptbench/models/config/logistic_regression.py
rename to src/ptbench/config/models/logistic_regression.py
diff --git a/src/ptbench/models/config/mlp.py b/src/ptbench/config/models/mlp.py
similarity index 100%
rename from src/ptbench/models/config/mlp.py
rename to src/ptbench/config/models/mlp.py
diff --git a/src/ptbench/models/config/pasa.py b/src/ptbench/config/models/pasa.py
similarity index 100%
rename from src/ptbench/models/config/pasa.py
rename to src/ptbench/config/models/pasa.py
diff --git a/tests/test_cli.py b/tests/test_cli.py
index 888794b4d1fe5cae20f01f524de726d090224e41..04fa19e41dc8119cb8db75930fe4ade72bc2abd2 100644
--- a/tests/test_cli.py
+++ b/tests/test_cli.py
@@ -62,8 +62,8 @@ def test_config_list():
     runner = CliRunner()
     result = runner.invoke(list)
     _assert_exit_0(result)
-    assert "module: ptbench.data" in result.output
-    assert "module: ptbench.models.config" in result.output
+    assert "module: ptbench.config.data" in result.output
+    assert "module: ptbench.config.models" in result.output
 
 
 @pytest.mark.skip(reason="Test need to be updated")
@@ -72,8 +72,8 @@ def test_config_list_v():
 
     result = CliRunner().invoke(list, ["--verbose"])
     _assert_exit_0(result)
-    assert "module: ptbench.data" in result.output
-    assert "module: ptbench.models.config" in result.output
+    assert "module: ptbench.config.data" in result.output
+    assert "module: ptbench.config.models" in result.output
 
 
 def test_config_describe_help():
diff --git a/tests/test_hivtb.py b/tests/test_hivtb.py
index eb6513f0046d70a7846e310a7e47a837c7222d8e..1311981205cb44aa11d157f4f3b0fde1a4f3629a 100644
--- a/tests/test_hivtb.py
+++ b/tests/test_hivtb.py
@@ -33,7 +33,7 @@ def id_function(val):
 def test_protocol_consistency(
     database_checkers, split: str, lenghts: dict[str, int]
 ):
-    from ptbench.data.hivtb.datamodule import make_split
+    from ptbench.config.data.hivtb.datamodule import make_split
 
     database_checkers.check_split(
         make_split(f"{split}.json"),
@@ -69,7 +69,7 @@ def test_protocol_consistency(
 )
 def test_loading(database_checkers, name: str, dataset: str):
     datamodule = importlib.import_module(
-        f".{name}", "ptbench.data.hivtb"
+        f".{name}", "ptbench.config.data.hivtb"
     ).datamodule
 
     datamodule.model_transforms = []  # should be done before setup()
diff --git a/tests/test_indian.py b/tests/test_indian.py
index de428b161aa775b8dc69678b65fcb87c7da2d50f..e86b56f6e3b847cc4751435e8947264ae571e868 100644
--- a/tests/test_indian.py
+++ b/tests/test_indian.py
@@ -37,7 +37,7 @@ def id_function(val):
 def test_protocol_consistency(
     database_checkers, split: str, lenghts: dict[str, int]
 ):
-    from ptbench.data.indian.datamodule import make_split
+    from ptbench.config.data.indian.datamodule import make_split
 
     database_checkers.check_split(
         make_split(f"{split}.json"),
@@ -74,7 +74,7 @@ def test_protocol_consistency(
 )
 def test_loading(database_checkers, name: str, dataset: str):
     datamodule = importlib.import_module(
-        f".{name}", "ptbench.data.indian"
+        f".{name}", "ptbench.config.data.indian"
     ).datamodule
 
     datamodule.model_transforms = []  # should be done before setup()
diff --git a/tests/test_montgomery.py b/tests/test_montgomery.py
index 973350aa1d8f166f4fbd943d81cffe4de7a25fe9..1e8227d33e68f8f112e910af9a9a5ec7fbb273bd 100644
--- a/tests/test_montgomery.py
+++ b/tests/test_montgomery.py
@@ -34,7 +34,7 @@ def id_function(val):
 def test_protocol_consistency(
     database_checkers, split: str, lenghts: dict[str, int]
 ):
-    from ptbench.data.montgomery.datamodule import make_split
+    from ptbench.config.data.montgomery.datamodule import make_split
 
     database_checkers.check_split(
         make_split(f"{split}.json"),
@@ -71,7 +71,7 @@ def test_protocol_consistency(
 )
 def test_loading(database_checkers, name: str, dataset: str):
     datamodule = importlib.import_module(
-        f".{name}", "ptbench.data.montgomery"
+        f".{name}", "ptbench.config.data.montgomery"
     ).datamodule
 
     datamodule.model_transforms = []  # should be done before setup()
diff --git a/tests/test_montgomery_shenzhen.py b/tests/test_montgomery_shenzhen.py
index 4618e25f420b7bc812fc17ceed97197e1420696f..9af425a57873314e85861e62195dc7c13b4b94a1 100644
--- a/tests/test_montgomery_shenzhen.py
+++ b/tests/test_montgomery_shenzhen.py
@@ -26,23 +26,23 @@ import pytest
 )
 def test_split_consistency(name: str):
     montgomery = importlib.import_module(
-        f".{name}", "ptbench.data.montgomery"
+        f".{name}", "ptbench.config.data.montgomery"
     ).datamodule
 
     shenzhen = importlib.import_module(
-        f".{name}", "ptbench.data.shenzhen"
+        f".{name}", "ptbench.config.data.shenzhen"
     ).datamodule
 
     combined = importlib.import_module(
-        f".{name}", "ptbench.data.montgomery_shenzhen"
+        f".{name}", "ptbench.config.data.montgomery_shenzhen"
     ).datamodule
 
     MontgomeryLoader = importlib.import_module(
-        ".datamodule", "ptbench.data.montgomery"
+        ".datamodule", "ptbench.config.data.montgomery"
     ).RawDataLoader
 
     ShenzhenLoader = importlib.import_module(
-        ".datamodule", "ptbench.data.shenzhen"
+        ".datamodule", "ptbench.config.data.shenzhen"
     ).RawDataLoader
 
     for split in ("train", "validation", "test"):
diff --git a/tests/test_montgomery_shenzhen_indian.py b/tests/test_montgomery_shenzhen_indian.py
index 7ff4985bd816fea4c29fd65405788493a50db367..b3c7f5f511ad82e2c279d4dbd5a0cb585f6fa4d8 100644
--- a/tests/test_montgomery_shenzhen_indian.py
+++ b/tests/test_montgomery_shenzhen_indian.py
@@ -26,31 +26,31 @@ import pytest
 )
 def test_split_consistency(name: str):
     montgomery = importlib.import_module(
-        f".{name}", "ptbench.data.montgomery"
+        f".{name}", "ptbench.config.data.montgomery"
     ).datamodule
 
     shenzhen = importlib.import_module(
-        f".{name}", "ptbench.data.shenzhen"
+        f".{name}", "ptbench.config.data.shenzhen"
     ).datamodule
 
     indian = importlib.import_module(
-        f".{name}", "ptbench.data.indian"
+        f".{name}", "ptbench.config.data.indian"
     ).datamodule
 
     combined = importlib.import_module(
-        f".{name}", "ptbench.data.montgomery_shenzhen_indian"
+        f".{name}", "ptbench.config.data.montgomery_shenzhen_indian"
     ).datamodule
 
     MontgomeryLoader = importlib.import_module(
-        ".datamodule", "ptbench.data.montgomery"
+        ".datamodule", "ptbench.config.data.montgomery"
     ).RawDataLoader
 
     ShenzhenLoader = importlib.import_module(
-        ".datamodule", "ptbench.data.shenzhen"
+        ".datamodule", "ptbench.config.data.shenzhen"
     ).RawDataLoader
 
     IndianLoader = importlib.import_module(
-        ".datamodule", "ptbench.data.indian"
+        ".datamodule", "ptbench.config.data.indian"
     ).RawDataLoader
 
     for split in ("train", "validation", "test"):
diff --git a/tests/test_montgomery_shenzhen_indian_padchest.py b/tests/test_montgomery_shenzhen_indian_padchest.py
index bb1f7be4bfc0cc2779eccca0f16a72c338691043..95b59bf14344502ae57240af195a3a898df7a5ec 100644
--- a/tests/test_montgomery_shenzhen_indian_padchest.py
+++ b/tests/test_montgomery_shenzhen_indian_padchest.py
@@ -16,39 +16,39 @@ import pytest
 )
 def test_split_consistency(name: str, padchest_name: str):
     montgomery = importlib.import_module(
-        f".{name}", "ptbench.data.montgomery"
+        f".{name}", "ptbench.config.data.montgomery"
     ).datamodule
 
     shenzhen = importlib.import_module(
-        f".{name}", "ptbench.data.shenzhen"
+        f".{name}", "ptbench.config.data.shenzhen"
     ).datamodule
 
     indian = importlib.import_module(
-        f".{name}", "ptbench.data.indian"
+        f".{name}", "ptbench.config.data.indian"
     ).datamodule
 
     padchest = importlib.import_module(
-        f".{padchest_name}", "ptbench.data.padchest"
+        f".{padchest_name}", "ptbench.config.data.padchest"
     ).datamodule
 
     combined = importlib.import_module(
-        f".{name}", "ptbench.data.montgomery_shenzhen_indian_padchest"
+        f".{name}", "ptbench.config.data.montgomery_shenzhen_indian_padchest"
     ).datamodule
 
     MontgomeryLoader = importlib.import_module(
-        ".datamodule", "ptbench.data.montgomery"
+        ".datamodule", "ptbench.config.data.montgomery"
     ).RawDataLoader
 
     ShenzhenLoader = importlib.import_module(
-        ".datamodule", "ptbench.data.shenzhen"
+        ".datamodule", "ptbench.config.data.shenzhen"
     ).RawDataLoader
 
     IndianLoader = importlib.import_module(
-        ".datamodule", "ptbench.data.indian"
+        ".datamodule", "ptbench.config.data.indian"
     ).RawDataLoader
 
     PadChestLoader = importlib.import_module(
-        ".datamodule", "ptbench.data.padchest"
+        ".datamodule", "ptbench.config.data.padchest"
     ).RawDataLoader
 
     for split in ("train", "validation", "test"):
diff --git a/tests/test_montgomery_shenzhen_indian_tbx11k.py b/tests/test_montgomery_shenzhen_indian_tbx11k.py
index 6abde7b91e5936bdcb3b38d060792b153b325812..71956b49d95808112de052e68bea8859c33742a1 100644
--- a/tests/test_montgomery_shenzhen_indian_tbx11k.py
+++ b/tests/test_montgomery_shenzhen_indian_tbx11k.py
@@ -37,39 +37,40 @@ import pytest
 )
 def test_split_consistency(name: str, tbx11k_name: str):
     montgomery = importlib.import_module(
-        f".{name}", "ptbench.data.montgomery"
+        f".{name}", "ptbench.config.data.montgomery"
     ).datamodule
 
     shenzhen = importlib.import_module(
-        f".{name}", "ptbench.data.shenzhen"
+        f".{name}", "ptbench.config.data.shenzhen"
     ).datamodule
 
     indian = importlib.import_module(
-        f".{name}", "ptbench.data.indian"
+        f".{name}", "ptbench.config.data.indian"
     ).datamodule
 
     tbx11k = importlib.import_module(
-        f".{tbx11k_name}", "ptbench.data.tbx11k"
+        f".{tbx11k_name}", "ptbench.config.data.tbx11k"
     ).datamodule
 
     combined = importlib.import_module(
-        f".{tbx11k_name}", "ptbench.data.montgomery_shenzhen_indian_tbx11k"
+        f".{tbx11k_name}",
+        "ptbench.config.data.montgomery_shenzhen_indian_tbx11k",
     ).datamodule
 
     MontgomeryLoader = importlib.import_module(
-        ".datamodule", "ptbench.data.montgomery"
+        ".datamodule", "ptbench.config.data.montgomery"
     ).RawDataLoader
 
     ShenzhenLoader = importlib.import_module(
-        ".datamodule", "ptbench.data.shenzhen"
+        ".datamodule", "ptbench.config.data.shenzhen"
     ).RawDataLoader
 
     IndianLoader = importlib.import_module(
-        ".datamodule", "ptbench.data.indian"
+        ".datamodule", "ptbench.config.data.indian"
     ).RawDataLoader
 
     TBX11kLoader = importlib.import_module(
-        ".datamodule", "ptbench.data.tbx11k"
+        ".datamodule", "ptbench.config.data.tbx11k"
     ).RawDataLoader
 
     for split in ("train", "validation", "test"):
diff --git a/tests/test_nih_cxr14.py b/tests/test_nih_cxr14.py
index 0870c99abf98a361d5dfa5048a166c2773563e91..83f4521284cfae963f1f2f5a5e286015d1f15d63 100644
--- a/tests/test_nih_cxr14.py
+++ b/tests/test_nih_cxr14.py
@@ -25,7 +25,7 @@ def id_function(val):
 def test_protocol_consistency(
     database_checkers, split: str, lenghts: dict[str, int]
 ):
-    from ptbench.data.nih_cxr14.datamodule import make_split
+    from ptbench.config.data.nih_cxr14.datamodule import make_split
 
     database_checkers.check_split(
         make_split(split),
@@ -52,7 +52,7 @@ def test_protocol_consistency(
 )
 def test_loading(database_checkers, name: str, dataset: str):
     datamodule = importlib.import_module(
-        f".{name}", "ptbench.data.nih_cxr14"
+        f".{name}", "ptbench.config.data.nih_cxr14"
     ).datamodule
 
     datamodule.model_transforms = []  # should be done before setup()
diff --git a/tests/test_nih_cxr14_padchest.py b/tests/test_nih_cxr14_padchest.py
index 4a9379e3b0ebb75d092f821b670baa9dfa9caa38..5c5bb5efccec30de0369cd24822d86de44e37978 100644
--- a/tests/test_nih_cxr14_padchest.py
+++ b/tests/test_nih_cxr14_padchest.py
@@ -16,23 +16,23 @@ import pytest
 )
 def test_split_consistency(name: str, padchest_name: str, combined_name: str):
     nih_cxr14 = importlib.import_module(
-        f".{name}", "ptbench.data.nih_cxr14"
+        f".{name}", "ptbench.config.data.nih_cxr14"
     ).datamodule
 
     padchest = importlib.import_module(
-        f".{padchest_name}", "ptbench.data.padchest"
+        f".{padchest_name}", "ptbench.config.data.padchest"
     ).datamodule
 
     combined = importlib.import_module(
-        f".{combined_name}", "ptbench.data.nih_cxr14_padchest"
+        f".{combined_name}", "ptbench.config.data.nih_cxr14_padchest"
     ).datamodule
 
     CXR14Loader = importlib.import_module(
-        ".datamodule", "ptbench.data.nih_cxr14"
+        ".datamodule", "ptbench.config.data.nih_cxr14"
     ).RawDataLoader
 
     PadChestLoader = importlib.import_module(
-        ".datamodule", "ptbench.data.padchest"
+        ".datamodule", "ptbench.config.data.padchest"
     ).RawDataLoader
 
     for split in ("train", "validation", "test"):
diff --git a/tests/test_padchest.py b/tests/test_padchest.py
index 4dd91623b9b9b557ec22b598ea2ae5f49af162c2..54b42b6d3ac29bf582929d0180de84a56f6bd962 100644
--- a/tests/test_padchest.py
+++ b/tests/test_padchest.py
@@ -30,7 +30,7 @@ def id_function(val):
 def test_protocol_consistency(
     database_checkers, split: str, lenghts: dict[str, int]
 ):
-    from ptbench.data.padchest.datamodule import make_split
+    from ptbench.config.data.padchest.datamodule import make_split
 
     database_checkers.check_split(
         make_split(split),
@@ -56,7 +56,7 @@ def test_protocol_consistency(
 )
 def test_loading(database_checkers, name: str, dataset: str):
     datamodule = importlib.import_module(
-        f".{name}", "ptbench.data.padchest"
+        f".{name}", "ptbench.config.data.padchest"
     ).datamodule
 
     datamodule.model_transforms = []  # should be done before setup()
diff --git a/tests/test_shenzhen.py b/tests/test_shenzhen.py
index 12532cdee7e799cbe9cf39173e86bc02952f7f0b..b45ce0dbbdd26f7d55ec77d90e6c6a489dfa32c2 100644
--- a/tests/test_shenzhen.py
+++ b/tests/test_shenzhen.py
@@ -34,7 +34,7 @@ def id_function(val):
 def test_protocol_consistency(
     database_checkers, split: str, lenghts: dict[str, int]
 ):
-    from ptbench.data.shenzhen.datamodule import make_split
+    from ptbench.config.data.shenzhen.datamodule import make_split
 
     database_checkers.check_split(
         make_split(f"{split}.json"),
@@ -71,7 +71,7 @@ def test_protocol_consistency(
 )
 def test_loading(database_checkers, name: str, dataset: str):
     datamodule = importlib.import_module(
-        f".{name}", "ptbench.data.shenzhen"
+        f".{name}", "ptbench.config.data.shenzhen"
     ).datamodule
 
     datamodule.model_transforms = []  # should be done before setup()
diff --git a/tests/test_summary.py b/tests/test_summary.py
index de8c55c586ddd9c8fef224833a62c8df3aafd85d..0f3a76899833185642387c2fc0aded238441b1b3 100644
--- a/tests/test_summary.py
+++ b/tests/test_summary.py
@@ -4,7 +4,7 @@
 
 import unittest
 
-import ptbench.models.config.pasa as pasa_config
+import ptbench.config.models.pasa as pasa_config
 
 from ptbench.utils.summary import summary
 
diff --git a/tests/test_tbpoc.py b/tests/test_tbpoc.py
index 7125efb195a058f36c785268c110c765f0890d65..cf3327d4afbea2aeb5b73deca4d5c27cd9305967 100644
--- a/tests/test_tbpoc.py
+++ b/tests/test_tbpoc.py
@@ -33,7 +33,7 @@ def id_function(val):
 def test_protocol_consistency(
     database_checkers, split: str, lenghts: dict[str, int]
 ):
-    from ptbench.data.tbpoc.datamodule import make_split
+    from ptbench.config.data.tbpoc.datamodule import make_split
 
     database_checkers.check_split(
         make_split(f"{split}.json"),
@@ -72,7 +72,7 @@ def test_protocol_consistency(
 )
 def test_loading(database_checkers, name: str, dataset: str):
     datamodule = importlib.import_module(
-        f".{name}", "ptbench.data.tbpoc"
+        f".{name}", "ptbench.config.data.tbpoc"
     ).datamodule
 
     datamodule.model_transforms = []  # should be done before setup()
diff --git a/tests/test_tbx11k.py b/tests/test_tbx11k.py
index 39c54174b6b8a21ca95cfd24adae217c569be78a..0c44a85a3e31d36f5764cd46acb6e0a987b9854f 100644
--- a/tests/test_tbx11k.py
+++ b/tests/test_tbx11k.py
@@ -137,7 +137,7 @@ def test_protocol_consistency(
     lenghts: dict[str, int],
     prefixes: typing.Sequence[str],
 ):
-    from ptbench.data.tbx11k.datamodule import make_split
+    from ptbench.config.data.tbx11k.datamodule import make_split
 
     database_checkers.check_split(
         make_split(f"{split}.json"),
@@ -187,7 +187,7 @@ def test_loading(
     database_checkers, name: str, dataset: str, prefixes: typing.Sequence[str]
 ):
     datamodule = importlib.import_module(
-        f".{name}", "ptbench.data.tbx11k"
+        f".{name}", "ptbench.config.data.tbx11k"
     ).datamodule
 
     datamodule.model_transforms = []  # should be done before setup()