diff --git a/notebooks/pnCCD/Characterize_pnCCD_Dark_NBC.ipynb b/notebooks/pnCCD/Characterize_pnCCD_Dark_NBC.ipynb
index 759a6a3c5eef2ff199736eff43b9c27451312328..4e9ae9715e8640678ab9f0719b46d9f426391f2d 100644
--- a/notebooks/pnCCD/Characterize_pnCCD_Dark_NBC.ipynb
+++ b/notebooks/pnCCD/Characterize_pnCCD_Dark_NBC.ipynb
@@ -35,9 +35,8 @@
     "karabo_id = \"SQS_NQS_PNCCD1MP\" # karabo prefix of PNCCD devices\n",
     "receiver_id = \"PNCCD_FMT-0\" # inset for receiver devices\n",
     "path_template = 'RAW-R{:04d}-{}-S{{:05d}}.h5'  # the template to use to access data\n",
-    "instrument_source_template = '{}/CAL/{}:output' # path in the HDF5 file the data is at\n",
-    "ctrl_source_template = '{}/CTRL/TCTRL'\n",
-    "mld_source_template = \"{}/MDL/{}\"\n",
+    "instrument_source_template = '{}/CAL/{}:output'  # data source path in h5file. Template filled with karabo_id and receiver_id\n",
+    "ctrl_source_template = '{}/CTRL/TCTRL'  # Control h5 source template. Filled with karabo_id\n",
     "\n",
     "# Database access parameters.\n",
     "use_dir_creation_date = True  # use dir creation date as data production reference date\n",
@@ -195,10 +194,9 @@
     "\n",
     "# extract control data\n",
     "if karabo_da_control:\n",
-    "    mdl_src = mld_source_template.format(karabo_id, \"{}\")\n",
     "    ctrl_src = ctrl_source_template.format(karabo_id)\n",
     "\n",
-    "    ctrl_data = pnccdlib.PnccdCtrl(run_dc, ctrl_src, mdl_src)\n",
+    "    ctrl_data = pnccdlib.PnccdCtrl(run_dc, ctrl_src, karabo_id)\n",
     "    \n",
     "    if bias_voltage == 0:\n",
     "        bias_voltage = ctrl_data.get_bias_voltage()\n",
diff --git a/notebooks/pnCCD/Correct_pnCCD_NBC.ipynb b/notebooks/pnCCD/Correct_pnCCD_NBC.ipynb
index 0215548d2180477d9bf1fceac16ae1a8d44c97e4..28edae959cecd442bc6a2d3c26c78e40797f6ae8 100644
--- a/notebooks/pnCCD/Correct_pnCCD_NBC.ipynb
+++ b/notebooks/pnCCD/Correct_pnCCD_NBC.ipynb
@@ -27,11 +27,9 @@
     "karabo_da_control = \"PNCCD02\" # file inset for control data\n",
     "karabo_id = \"SQS_NQS_PNCCD1MP\" # karabo prefix of PNCCD devices\n",
     "receiver_id = \"PNCCD_FMT-0\" # inset for receiver devices\n",
-    "path_template = 'RAW-R{:04d}-{}-S{:05d}.h5' # the template to use to access data\n",
-    "path_template_seqs = \"{}/r{:04d}/*PNCCD01-S*.h5\"\n",
-    "instrument_source_template = '{}/CAL/{}:output' # path to data in the HDF5 file \n",
+    "path_template = 'RAW-R{:04d}-{}-S{:05d}.h5'  # the template to use to access data\n",
+    "instrument_source_template = '{}/CAL/{}:output'  # path to data in the HDF5 file \n",
     "control_source_template = '{}/CTRL/TCTRL'  # control source template\n",
-    "mdl_source_template = \"{}/MDL/{}\"  # middlelayer source template\n",
     "\n",
     "overwrite = True  # keep this as True to not overwrite the output \n",
     "\n",
@@ -40,7 +38,7 @@
     "commonModeAxis = 0 # axis along which common mode will be calculated, 0 = row, and 1 = column \n",
     "split_evt_primary_threshold = 4. # primary threshold for split event classification in terms of n sigma noise\n",
     "split_evt_secondary_threshold = 3. # secondary threshold for split event classification in terms of n sigma noise\n",
-    "saturated_threshold = 32000. # full well capacity in ADU\n",
+    "saturated_threshold = 32000.  # full well capacity in ADU\n",
     "chunk_size_idim = 1  # H5 chunking size of output data\n",
     "# ONLY FOR TESTING\n",
     "limit_images = 0  # this parameter is used for limiting number of images to correct from a sequence file. ONLY FOR TESTING.\n",
@@ -128,7 +126,7 @@
     ")\n",
     "from cal_tools.step_timing import StepTimer\n",
     "from cal_tools import h5_copy_except\n",
-    "from iCalibrationDB import Conditions, ConstantMetaData, Constants, Detectors, Versions\n",
+    "from iCalibrationDB import Conditions, ConstantMetaData, Constants\n",
     "from iCalibrationDB.detectors import DetectorTypes\n",
     "\n",
     "profiler = xprof.Profiler()\n",
@@ -192,10 +190,9 @@
     "# extract control data\n",
     "if karabo_da_control:\n",
     "    step_timer.start()\n",
-    "    mdl_src = mdl_source_template.format(karabo_id, \"{}\")\n",
     "    ctrl_src = control_source_template.format(karabo_id)\n",
     "    run_dc = RunDirectory(Path(in_folder) / f\"r{run:04d}\")\n",
-    "    ctrl_data = pnccdlib.PnccdCtrl(run_dc, ctrl_src, mdl_src)\n",
+    "    ctrl_data = pnccdlib.PnccdCtrl(run_dc, ctrl_src, karabo_id)\n",
     "\n",
     "    if bias_voltage == 0.:\n",
     "        bias_voltage = ctrl_data.get_bias_voltage()\n",
@@ -539,63 +536,50 @@
    "source": [
     "#***************** Histogram Calculators ******************#\n",
     "# Will contain uncorrected data:\n",
-    "histCalRaw = xcal.HistogramCalculator(\n",
-    "    sensorSize, \n",
-    "    bins=bins, \n",
-    "    range=bin_range,\n",
-    "    nCells=memoryCells,\n",
-    "    blockSize=blockSize,\n",
-    "    parallel=run_parallel,\n",
-    ")\n",
+    "histCalRaw = xcal.HistogramCalculator(sensorSize, \n",
+    "                                      bins=bins, \n",
+    "                                      range=bin_range,\n",
+    "                                      nCells=memoryCells, \n",
+    "                                      parallel=run_parallel,\n",
+    "                                      blockSize=blockSize)\n",
     "# Will contain offset corrected data:\n",
-    "histCalOffsetCor = xcal.HistogramCalculator(\n",
-    "    sensorSize, \n",
-    "    bins=bins, \n",
-    "    range=bin_range,\n",
-    "    nCells=memoryCells, \n",
-    "    blockSize=blockSize,\n",
-    "    parallel=run_parallel,\n",
-    ")\n",
+    "histCalOffsetCor = xcal.HistogramCalculator(sensorSize, \n",
+    "                                            bins=bins, \n",
+    "                                            range=bin_range,\n",
+    "                                            nCells=memoryCells, \n",
+    "                                            parallel=run_parallel,\n",
+    "                                            blockSize=blockSize)\n",
     "if corr_bools.get('common_mode'):\n",
     "    # Will contain common mode corrected data:\n",
-    "    histCalCommonModeCor = xcal.HistogramCalculator(\n",
-    "        sensorSize,\n",
-    "        bins=bins,\n",
-    "        range=bin_range,\n",
-    "        nCells=memoryCells,\n",
-    "        blockSize=blockSize,\n",
-    "        parallel=run_parallel,\n",
-    "    )\n",
-    "    \n",
+    "    histCalCommonModeCor = xcal.HistogramCalculator(sensorSize,\n",
+    "                                                    bins=bins,\n",
+    "                                                    range=bin_range,\n",
+    "                                                    nCells=memoryCells, \n",
+    "                                                    parallel=run_parallel,\n",
+    "                                                    blockSize=blockSize)\n",
     "if corr_bools.get('pattern_class'):\n",
     "    # Will contain split events pattern data:\n",
-    "    histCalPcorr = xcal.HistogramCalculator(\n",
-    "        sensorSize,\n",
-    "        bins=bins,\n",
-    "        range=bin_range,\n",
-    "        nCells=memoryCells, \n",
-    "        blockSize=blockSize,\n",
-    "        parallel=run_parallel,\n",
-    "    )\n",
+    "    histCalPcorr = xcal.HistogramCalculator(sensorSize,\n",
+    "                                            bins=bins,\n",
+    "                                            range=bin_range,\n",
+    "                                            nCells=memoryCells, \n",
+    "                                            parallel=run_parallel,\n",
+    "                                            blockSize=blockSize)\n",
     "    # Will contain singles events data:\n",
-    "    histCalPcorrS = xcal.HistogramCalculator(\n",
-    "        sensorSize,\n",
-    "        bins=bins,\n",
-    "        range=bin_range,\n",
-    "        nCells=memoryCells,\n",
-    "        blockSize=blockSize,\n",
-    "        parallel=run_parallel,\n",
-    "    )\n",
+    "    histCalPcorrS = xcal.HistogramCalculator(sensorSize,\n",
+    "                                             bins=bins,\n",
+    "                                             range=bin_range,\n",
+    "                                             nCells=memoryCells, \n",
+    "                                             parallel=run_parallel,\n",
+    "                                             blockSize=blockSize)\n",
     "if corr_bools.get('relgain'):\n",
     "    # Will contain gain corrected data:\n",
-    "    histCalGainCor = xcal.HistogramCalculator(\n",
-    "        sensorSize,\n",
-    "        bins=bins,\n",
-    "        range=bin_range,\n",
-    "        nCells=memoryCells,\n",
-    "        blockSize=blockSize,\n",
-    "        parallel=run_parallel,\n",
-    "    )"
+    "    histCalGainCor = xcal.HistogramCalculator(sensorSize,\n",
+    "                                              bins=bins,\n",
+    "                                              range=bin_range,\n",
+    "                                              nCells=memoryCells, \n",
+    "                                              parallel=run_parallel,\n",
+    "                                              blockSize=blockSize)"
    ]
   },
   {
diff --git a/src/cal_tools/pnccdlib.py b/src/cal_tools/pnccdlib.py
index 81284fb173153293fa58340b2c5b1576d9391c6e..a3c46f36dcd7561f525021bbf3ad4d66605f1140 100644
--- a/src/cal_tools/pnccdlib.py
+++ b/src/cal_tools/pnccdlib.py
@@ -14,37 +14,31 @@ class PnccdCtrl():
         self,
         run_dc: "extra_data.DataCollection",  # noqa
         ctrl_src: str,
-        mdl_src: str
+        karabo_id: str
     ):
         """ Extract control data from given control paths.
         :param run_dc: run Extra-data data collection.
         :param ctrl_src: control source available in run_dc.
-        :param mdl_src: middlelayer source available in run_dc.
+        :param karabo_id: Detector identifier name.
         """
         self.run_dc = run_dc
         self.ctrl_src = ctrl_src
-        self.mdl_src = mdl_src
+        self.karabo_id = karabo_id
 
     def get_bias_voltage(self):
         return(
             abs(self.run_dc[
-                self.mdl_src.format("DAQ_MPOD"),
-                "u0voltage.value"
-            ][0].ndarray()[0])
+                f"{self.karabo_id}/MDL/DAQ_MPOD", "u0voltage.value"][0].ndarray()[0])  # noqa
         )
 
     def get_gain(self):
         return(
-            abs(self.run_dc[
-                self.mdl_src.format("DAQ_GAIN"),
-                "pNCCDGain.value"
-            ][0].ndarray()[0])
+            self.run_dc[
+                f"{self.karabo_id}/MDL/DAQ_GAIN", "pNCCDGain.value"][0].ndarray()[0]  # noqa
         )
 
     def get_fix_temperature_top(self):
-        return(self.run_dc[
-            self.ctrl_src, "inputA.krdg.value"][0].ndarray()[0])
+        return self.run_dc.get_run_value(self.ctrl_src, "inputA.krdg.value")
 
     def get_fix_temperature_bot(self):
-        return(self.run_dc[
-            self.ctrl_src, "inputB.krdg.value"][0].ndarray()[0])
+        return self.run_dc.get_run_value(self.ctrl_src, "inputB.krdg.value")