diff --git a/src/toolbox_scs/detectors/__init__.py b/src/toolbox_scs/detectors/__init__.py
index 5a0df3e02c758f629dc13779b33776665db4119c..831e750f646a10d9fb34ad7c50569a341e7cd42a 100644
--- a/src/toolbox_scs/detectors/__init__.py
+++ b/src/toolbox_scs/detectors/__init__.py
@@ -3,7 +3,7 @@ from .xgm import (
 from .tim import (
     load_TIM,)
 from .dssc_data import (
-    save_to_file, load_from_file)
+    save_to_file, load_from_file, get_data_formatted)
 from .dssc_misc import (
     load_dssc_info, create_dssc_bins, load_geom, quickmask_DSSC_ASIC, 
     calc_xgm_frame_indices, get_xgm_formatted, load_mask)
@@ -27,6 +27,7 @@ __all__ = (
     "bin_data",
     "save_to_file",
     "load_from_file",
+    "get_data_formatted",
     "load_geom",
     "quickmask_DSSC_ASIC",
     "load_mask",
diff --git a/src/toolbox_scs/detectors/dssc.py b/src/toolbox_scs/detectors/dssc.py
index 65db10625a9386dd2fee86cdad304c14f0347414..145f0924b3d454d66af879c4179261dd143f0097 100644
--- a/src/toolbox_scs/detectors/dssc.py
+++ b/src/toolbox_scs/detectors/dssc.py
@@ -21,22 +21,17 @@ import numpy as np
 import xarray as xr
 
 from ..load import load_run, get_array
-from .dssc_data import save_to_file
+from ..util.exceptions import ToolBoxValueError, ToolBoxFileError
+from .dssc_data import save_to_file, search_files, get_data_formatted
 from .dssc_misc import (
-        load_dssc_info, get_xgm_formatted)
+        load_dssc_info, get_xgm_formatted, load_geom)
 from .dssc_processing import (
-        bin_data, bin_data_multipr)
+        bin_data, bin_data_multipr, create_empty_dataset)
 
 __all__ = ["DSSCBinner", "DSSCFormatter", "DSSCAnalyzer"]
 log = logging.getLogger(__name__)
 
 
-def _setup_dir():
-    for f in ['processed_runs']:
-        if not os.path.isdir(f):
-            os.mkdir(f)
-
-
 class DSSCBinner:
     def __init__(self, proposal_nr, run_nr,
                  binners = {},
@@ -81,14 +76,13 @@ class DSSCBinner:
         2.) detailed -> docs
         """
 
-        _setup_dir()
         # ---------------------------------------------------------------------
         # object (run) properties
         # ---------------------------------------------------------------------
         self.proposal = proposal_nr
         self.runnr = run_nr
         self.info = load_dssc_info(proposal_nr, run_nr)
-        self.run = load_run(proposal_nr, run_nr, include='*DA*')
+        self.run = load_run(proposal_nr, run_nr)
         self.xgmthreshold = xgm_threshold
         self.binners = binners
 
@@ -119,6 +113,36 @@ class DSSCBinner:
     def __del__(self):
         pass
 
+
+    def add_binner(self, name, binner):
+        """
+        Add additional binner to internal dictionary
+
+        Parameters
+        ----------
+        ToDo ...
+
+        Raises
+        ------
+        ToDo....
+        """
+        if name in ['trainId','pulse','x','y']:
+            self.binners[name] = binner
+        else:
+            msg = "Invalid binner name"
+            log.info(msg+", no binner created")
+            raise ToolBoxValueError(msg, name)
+
+
+    def get_info(self):
+        if any(self.binners):
+            empty = create_empty_dataset(self.info, self.binners)
+            return(empty.dims)
+        else:
+            log.info("no binner defined yet.")
+            pass
+
+
     def get_xgm_binned(self):
         """
         Bin the xgm data according to the binners of the dssc data. The result
@@ -202,25 +226,46 @@ class DSSCBinner:
 
 
 class DSSCFormatter:
-    def __init__(self):
+    def __init__(self, filepath):
         """
-        The DSSC formatter class brings data, produced by the DSSC binner class
-        into a standardized format, such that the following analysis software
-        is unaffected by changes of the underlying data reduction.
-        """
-        pass
+        Class that will handle formatting and detector geometry related
+        aspects.
 
-    def merge_modules_xarray(self, filelist):
-        pass
+        Parameters
+        ----------
+        path_to_processed: str
+            location of processed files.
 
-    def add_xgm_data():
-        pass
+        Returns
+        -------
+        ToDo ...
 
-    def data_from_filelist():
-        pass
+        Raises
+        ------
+        ToDo....
 
-    def get_data_formatted():
-        pass
+        Example
+        -------
+        """
+        self._filenames = []
+        if os.path.exists(filepath):
+            try:
+                self.filenames = search_files(filepath)
+            except ToolBoxFileError as err:
+                log.info("path did not contain any files")
+        else:
+            log.info("path did not exist")
+        self.data = None
+        
+        self.geom = load_geom()
+
+    def combine_files(self, filenames=[]):
+        if any(filenames) is True:
+            self.filenames = filenames
+        if self.filenames is not None:
+            self.data = get_data_formatted(self.filenames)
+        else:
+            log.info("No matching data found.")
 
 
 class DSSCAnalyzer:
@@ -228,6 +273,21 @@ class DSSCAnalyzer:
         """
         Placeholder for future class handling image operation/manipulation 
         (the actual data evaluation).
+
+        Parameters
+        ----------
+        ToDo ...
+
+        Returns
+        -------
+        ToDo ...
+
+        Raises
+        ------
+        ToDo....
+
+        Example
+        -------
         """
         # self.distance = distance
         # self.pxpitchh = 236
diff --git a/src/toolbox_scs/detectors/dssc_data.py b/src/toolbox_scs/detectors/dssc_data.py
index e6c9995bd5ed5d49c8c38f48eceb402ad73865c1..a1084bd33fe03cfe3ca7c7cc63debcc677871b4e 100644
--- a/src/toolbox_scs/detectors/dssc_data.py
+++ b/src/toolbox_scs/detectors/dssc_data.py
@@ -55,4 +55,74 @@ def load_from_file(fname):
     data engine that is malfunctioning due to related software installed in the
     exfel_anaconda3 environment. May be dropped at some point.
     """
-    return xr.open_dataset(fname, 'data', engine='h5netcdf')
+    f_exists = os.path.isfile(fname)
+    if f_exists:
+        return xr.open_dataset(fname, 'data', engine='h5netcdf')
+    else:
+        msg = "File does not exists."
+        raise ToolBoxFileError(msg, fname)
+
+
+def _data_from_list(filenames):
+    """
+    ToDo
+
+    Parameters
+    ----------
+
+    Returns
+    -------
+    """
+    data = []
+    for name in filenames:
+        f_exists = os.path.isfile(name)
+        if f_exists:
+            data.append(load_from_file(name))
+        else:
+            msg = "File does not exists."
+            raise ToolBoxFileError(msg, name)
+    return data
+
+
+def get_data_formatted(filenames=[], data_list=[]):
+    """
+    ToDo
+
+    Parameters
+    ----------
+
+    Returns
+    -------
+    """
+    if any(filenames) is True:
+        data = _data_from_list(filenames)
+    elif any(data_list) is True:
+        data = data_list
+ 
+    if type(data[0]).__module__ == 'xarray.core.dataset':
+        data = xr.concat(data, dim='module')
+    elif type(data[0]).__module__ == 'pandas.core.frame':
+        pass
+    elif type(data[0]).__module__ == 'dask.dataframe.core':
+        pass
+
+    data = data.sortby("module")
+    return data.transpose('trainId','pulse','module','x','y')
+
+
+def search_files(run_folder):
+    """
+    ToDo
+
+    Parameters
+    ----------
+
+    Returns
+    -------
+    """
+    try:
+        filenames = os.listdir(run_folder)
+        return [run_folder+name for name in filenames if ".h5" in name]
+    except:
+        msg = "No files in folder"
+        raise ToolBoxFileError(msg, run_folder)
diff --git a/src/toolbox_scs/util/exceptions.py b/src/toolbox_scs/util/exceptions.py
index 9b8049a2414cd12168c32bafcbebaa465adf8290..52aa3c55cf567aee1a22ddf30e433a0cc9052915 100644
--- a/src/toolbox_scs/util/exceptions.py
+++ b/src/toolbox_scs/util/exceptions.py
@@ -20,7 +20,7 @@ class ToolBoxTypeError(ToolBoxError):
 class ToolBoxValueError(ToolBoxError):
     def __init__(self, msg = "", val = None):
         self.value = val
-        self.message = msg + " unknown value: " + val
+        self.message = msg + " unknown value: " + str(val)
 
 
 class ToolBoxFileError(ToolBoxError):