diff --git a/input_profile_processor/input_profile_processor.py b/input_profile_processor/input_profile_processor.py
index 58137e835a75cbbecea82ca0e8aae754612f14c5..66ad5b8b0b482ae500d061711f457357aba9cf1d 100644
--- a/input_profile_processor/input_profile_processor.py
+++ b/input_profile_processor/input_profile_processor.py
@@ -32,18 +32,18 @@ from Tooling.modifier import Modifier
 def process_input_profiles(input_profile_dict, t_start, t_horizon, t_step):
     input_profiles = {}
     for input_profile_name, input_profile_config in input_profile_dict.items():
-        if input_profile_config[1] == 'generate':
-            profile = generate_profile(input_profile_config[0], input_profile_config[2:], input_profiles, t_start, t_horizon, t_step)
-        elif input_profile_config[1] == 'modify':
-            profile = modify_profile(input_profile_config[0], input_profile_config[2:], input_profiles, t_start, t_horizon, t_step)
-        else:
-            profile = pd.read_csv(input_profile_config[1], index_col = 0)
+        if 'file' in input_profile_config:
+            profile = pd.read_csv(input_profile_config['file'], index_col = 0)
             try:
                 profile.index = pd.to_datetime(profile.index, format = '%d-%m-%Y %H:%M:%S')
             except ValueError:
                 profile.index = pd.to_datetime(profile.index, format = '%Y-%m-%d %H:%M:%S')
             profile = profile.resample(str(t_step) + 'H').mean().interpolate('linear')
-        input_profiles[input_profile_name] = (input_profile_config[0], profile)
+        elif 'generate' in input_profile_config:
+            profile = generate_profile(input_profile_config['type'], input_profile_config['generate'], input_profiles, t_start, t_horizon, t_step)
+        elif 'modify' in input_profile_config:
+            profile = modify_profile(input_profile_config['type'], input_profile_config['modify'], input_profiles, t_start, t_horizon, t_step)
+        input_profiles[input_profile_name] = (input_profile_config['type'], profile)
 
     for input_profile_name, (input_profile_type, input_profile) in input_profiles.items():
         input_profile = input_profile[t_start:t_start + pd.Timedelta(hours = t_horizon * t_step - t_step)]
@@ -69,7 +69,7 @@ def generate_profile(profile_type, parameters, input_profiles, t_start, t_horizo
     if profile_type == 'elec_demand':
         profiles = []
         for year in years:
-            profile = ElectricalDemand(year).get_profile(parameters[0], 'h0', True)  # True: with smoothing function for household profiles, False: no smoothing function for household profiles
+            profile = ElectricalDemand(year).get_profile(parameters['yearly_demand'], 'h0', True)  # True: with smoothing function for household profiles, False: no smoothing function for household profiles
             profile = profile.resample(str(t_step) + 'H').mean().interpolate('linear')
             profiles.append(profile)
         timeseries = pd.concat(profiles)
@@ -85,10 +85,10 @@ def generate_profile(profile_type, parameters, input_profiles, t_start, t_horizo
             # same problem for hot water demand.
             profile = ThermalDemand(demand_df.index,
                                     shlp_type='EFH',
-                                    temperature=input_profiles[parameters[1]][1],
+                                    temperature=input_profiles[parameters['temperature']][1],
                                     building_class=1,
                                     wind_class=1,
-                                    annual_heat_demand=parameters[0] / t_step,
+                                    annual_heat_demand=parameters['yearly_demand'] / t_step,
                                     name='HeatDemand_EFH',
                                     ww_incl=0).get_bdew_profile()
             profiles.append(profile)
@@ -102,10 +102,10 @@ def generate_profile(profile_type, parameters, input_profiles, t_start, t_horizo
                                                          freq=str(t_step) + 'H'))
             profile = ThermalDemand(demand_df.index,
                                     shlp_type='EFH',
-                                    temperature=input_profiles[parameters[1]][1],
+                                    temperature=input_profiles[parameters['temperature']][1],
                                     building_class=1,
                                     wind_class=1,
-                                    annual_heat_demand=parameters[0] / t_step,
+                                    annual_heat_demand=parameters['yearly_demand'] / t_step,
                                     name='DomesticHotWaterDemand_EFH',
                                     ww_incl=1).get_bdew_profile()
             profiles.append(profile)