diff --git a/pyrelacs/config/config_loader.py b/pyrelacs/config/config_loader.py
index d197e10..b1a226d 100644
--- a/pyrelacs/config/config_loader.py
+++ b/pyrelacs/config/config_loader.py
@@ -2,86 +2,105 @@ from typing import TypedDict, Union
 from dataclasses import dataclass
 import pathlib
 
+
+import dacite
 import yaml
+from dacite import from_dict
 from IPython import embed
 
 from pyrelacs.util.logging import config_logging
 
 log = config_logging()
 
-class ValueUnit(TypedDict):
-    value: Union[int, float]
+
+@dataclass
+class ValueUnit:
+    value: int
     unit: str
 
+
 @dataclass
 class Settings:
-    Repros: list[str]
-    Path: str
+    repros: list[str]
+    path: str
 
 
 @dataclass
 class Metadata:
-    Identifier: str
+    SetupName: str
     Maintainer: str
     Creator: str
-    Location: str
+    SetupLocation: str
     Lab: str
     Institute: str
     University: str
     Address: str
 
+
 @dataclass
 class Input:
-    inputsamplerate    : ValueUnit
+    inputsamplerate: int
+    inputsamplerateunit: str
     # BufferSize
-    inputtracecapacity : ValueUnit
-    inputunipolar      : bool
-    inputtraceid       : list[str]
-    inputtracescale    : list[int]
-    inputtraceunit     : list[str]
-    inputtracedevice   : list[str]
-    inputtracechannel  : list[int]
+    inputtracecapacity: int
+    inputtracecapacityunit: str
+    inputunipolar: bool
+    inputtraceid: list[str]
+    inputtracescale: list[int]
+    inputtraceunit: list[str]
+    inputtracedevice: list[str]
+    inputtracechannel: list[int]
     inputtracereference: list[str]
-    inputtracemaxvalue : list[int]
-    inputtracecenter   : list[bool]
+    inputtracemaxvalue: list[int]
+    inputtracecenter: list[bool]
+
 
 @dataclass
 class Output:
-        outputtraceid      : list[str]
-        outputtracedevice  : list[str]
-        outputtracechannel : list[int]
-        outputtracescale   : list[int]
-        outputtraceunit    : list[str]
-        outputtracemaxrate : list[ValueUnit]
-        outputtracemodality: list[str]
+    outputtraceid: list[str]
+    outputtracedevice: list[str]
+    outputtracechannel: list[int]
+    outputtracescale: list[int]
+    outputtraceunit: list[str]
+    outputtracemaxrate: list[int]
+    outputtracemaxrateunit: list[str]
+    outputtracemodality: list[str]
+
 
 @dataclass
 class Data:
     input: Input
     output: Output
 
+
 @dataclass
-class SimData:
-      input:
-        inputsamplerate    : 20kHz
-        inputtracecapacity : 600s
-      output:
-        outputtraceid      : [ Sinus ]
-        outputtracedevice  : [ ao-0 ]
-        outputtracechannel : [ 0 ]
-        outputtracescale   : [ 1 ]
-        outputtraceunit    : [ V ] 
-        outputtracemaxrate : [ 40kHz ]
-        outputtracemodality: [ electric ]
+class Sinus:
+    inputsamplerate: int
+    inputsamplerateunit: str
+    # BufferSize
+    inputtracecapacity: int
+    inputtracecapacityunit: str
+    outputtraceid: list[str]
+    outputtracedevice: list[str]
+    outputtracechannel: list[int]
+    outputtracescale: list[int]
+    outputtraceunit: list[str]
+    outputtracemaxrate: list[int]
+    outputtracemaxrateunit: list[str]
+    outputtracemodality: list[str]
+
 
 @dataclass
 class PyRelacs:
     data: Data
-    simdata: SimData
+    sinus: Sinus
+
 
 @dataclass
 class Config:
-    # Path: str
+    settings: Settings
+    metadata: Metadata
+    pyrelacs: PyRelacs
 
     @classmethod
     def load_config(cls):
@@ -94,3 +113,14 @@ class Config:
                 return yaml.full_load(config_file)
             except yaml.YAMLError as e:
                 raise yaml.YAMLError(f"Error parsing YAML file: {e}")
+
+
+if __name__ == "__main__":
+    pyrelacs_config_path = pathlib.Path(__file__).parent.parent / "config.yaml"
+    log.debug(pyrelacs_config_path)
+    if not pyrelacs_config_path.is_file():
+        log.error("Config File was not found")
+    with open(pyrelacs_config_path, "r") as config_file:
+        data = yaml.full_load(config_file)
+        embed()
+        exit()