diff --git a/tank_design/src/tube_and_wing/empirical/tank_design_tu_berlin/general/call_functions/_00_readenergycarrierandtankconfiguration.py b/tank_design/src/tube_and_wing/empirical/tank_design_tu_berlin/general/call_functions/_00_readenergycarrierandtankconfiguration.py
index b4c787bc0980caeb1909d164cdd1b04c0dd9a64e..792cd19a046cb6e8169fc4aff537c936e867f6b3 100644
--- a/tank_design/src/tube_and_wing/empirical/tank_design_tu_berlin/general/call_functions/_00_readenergycarrierandtankconfiguration.py
+++ b/tank_design/src/tube_and_wing/empirical/tank_design_tu_berlin/general/call_functions/_00_readenergycarrierandtankconfiguration.py
@@ -135,6 +135,7 @@ def read_energy_carrier_and_tank_configuration(paths_and_names, dict_ac_data, di
                                             energy_carrier_lookup[tank['energy_carrier_id']]['energy_carrier']),
             'tank_location': tank['tank_location'],
             'tank_position': tank['tank_position'],
+            'designator': tank['tank_location'] + '_' + tank['tank_position'],
             'energy_share': tank['energy_share'],
             'energy_required': tank['energy_required'],
             'volume_available': 0.0,
diff --git a/tank_design/src/tube_and_wing/empirical/tank_design_tu_berlin/general/call_functions/_01_checktankconfiguration.py b/tank_design/src/tube_and_wing/empirical/tank_design_tu_berlin/general/call_functions/_01_checktankconfiguration.py
index 44617f75b84057a8816596712ade89703a39d3b7..a03f589c6f715402e4a53c5603b5de31144f2089 100644
--- a/tank_design/src/tube_and_wing/empirical/tank_design_tu_berlin/general/call_functions/_01_checktankconfiguration.py
+++ b/tank_design/src/tube_and_wing/empirical/tank_design_tu_berlin/general/call_functions/_01_checktankconfiguration.py
@@ -20,26 +20,47 @@ def check_tank_configuration(paths_and_names, dict_ac_data, dict_tank_design, ru
     # Extract values from 'dict_ac_data' and 'dict_tank_design'.
     energy_carrier = dict_ac_data['energy_carrier']
     tank_entity_list = [key for key in dict_tank_design if key.startswith('tank_') and key[5:].isdigit()]
+    wing_mounting = dict_ac_data['wing_mounting']
     number_of_tanks = 0
 
     """Kerosene."""
     if energy_carrier == 'kerosene':
-        # Define tank combination dict based on energy carrier.
-        combinations = {
-            # Standard integral wing tanks.
-            'wing': 
-                {'inner_left': False,
-                'outer_left': False,
-                'inner_right': False,
-                'outer_right': False,
-                'center': False},
-            # Trim tank.
-            'horizontal_stabilizer':
-                {'total': False},
-            # Additional center tank.
-            'fuselage':
-                {'center': False}
-        }
+        # Define tank combination dict based on energy carrier and wing mounting.
+        if wing_mounting == 'low':
+            combinations = {
+                # Standard integral wing tanks.
+                'wing': 
+                    {'inner_left': False,
+                    'outer_left': False,
+                    'inner_right': False,
+                    'outer_right': False,
+                    'center': False},
+                # Trim tank.
+                'horizontal_stabilizer':
+                    {'total': False},
+                # Additional center tank.
+                'fuselage':
+                    {'center': False}
+            }
+        elif wing_mounting == 'high':
+            combinations = {
+                # Standard integral wing tanks.
+                'wing': 
+                    {'inner_left': False,
+                    'inner_right': False,
+                    'center': False},
+                # Trim tank.
+                'horizontal_stabilizer':
+                    {'total': False},
+                # Additional center tank.
+                'fuselage':
+                    {'center': False}
+            }
+        else:
+            # If wing mounting is not high or low, wing definition is invalid. Abort program.
+            runtime_output.critical('Error: Wing mounting not "high" or "low". Invalid wing definition. '
+                                    + 'Program aborted.')
+            sys.exit('Exit information: Invalid wing definition in aircraft exchange file.')
 
         # Iterate over tank entities of 'tank_entity_list'.
         for tank_entity in tank_entity_list:
@@ -84,22 +105,34 @@ def check_tank_configuration(paths_and_names, dict_ac_data, dict_tank_design, ru
 
         # Define number of tanks and set tank configuration name for valid tank configurations.
         if valid_wing_tanks and not (trim_tank or additional_center_tank):
-            number_of_tanks = 5
+            if wing_mounting == 'low':
+                number_of_tanks = 5
+            elif wing_mounting == 'high':
+                number_of_tanks = 3
             tank_configuration = 'wing_all_tanks'
             # Print.
             runtime_output.print('Valid tank configuration found in acXML: ' + tank_configuration)
         elif valid_wing_with_trim_tank and not additional_center_tank:
-            number_of_tanks = 6
+            if wing_mounting == 'low':
+                number_of_tanks = 6
+            elif wing_mounting == 'high':
+                number_of_tanks = 4
             tank_configuration = 'wing_with_trim_tank'
             # Print.
             runtime_output.print('Valid tank configuration found in acXML: ' + tank_configuration)
         elif valid_wing_with_additional_center_tank and not trim_tank:
-            number_of_tanks = 6
+            if wing_mounting == 'low':
+                number_of_tanks = 6
+            elif wing_mounting == 'high':
+                number_of_tanks = 4
             tank_configuration = 'wing_with_additional_center_tank'
             # Print.
             runtime_output.print('Valid tank configuration found in acXML: ' + tank_configuration)
         elif valid_wing_with_additional_center_and_trim_tank:
-            number_of_tanks = 7
+            if wing_mounting == 'low':
+                number_of_tanks = 7
+            elif wing_mounting == 'high':
+                number_of_tanks = 5
             tank_configuration = 'wing_with_additional_center_and_trim_tank'
             # Print.
             runtime_output.print('Valid tank configuration found in acXML: ' + tank_configuration)
diff --git a/tank_design/src/tube_and_wing/empirical/tank_design_tu_berlin/general/call_functions/_02_preparegeometricaldata.py b/tank_design/src/tube_and_wing/empirical/tank_design_tu_berlin/general/call_functions/_02_preparegeometricaldata.py
index 43246f5a4a27cd718bb94ac2fea083bc601d3e87..544310ce3c8daca57bd7d8acc699c9957c2e34bb 100644
--- a/tank_design/src/tube_and_wing/empirical/tank_design_tu_berlin/general/call_functions/_02_preparegeometricaldata.py
+++ b/tank_design/src/tube_and_wing/empirical/tank_design_tu_berlin/general/call_functions/_02_preparegeometricaldata.py
@@ -93,9 +93,6 @@ def prepare_for_kerosene(dict_ac_data, dict_tank_design, runtime_output):
         dict_tank_design = prepare_wing_tanks(dict_ac_data, dict_tank_design, runtime_output)
     # Trim tank.
     if 'trim' in dict_tank_design['tank_configuration']:
-        # # Not implemented yet.
-        # runtime_output.critical('Error: Trim tank not implemented yet! Program aborted.')
-        # sys.exit('Exit information: Trim tank calculation not implemented yet!')
         dict_tank_design = prepare_trim_tank(dict_ac_data, dict_tank_design, runtime_output)
     # Additional center tank.
     if 'additional_center' in dict_tank_design['tank_configuration']:
diff --git a/tank_design/src/tube_and_wing/empirical/tank_design_tu_berlin/general/tankdesigntuberlin.py b/tank_design/src/tube_and_wing/empirical/tank_design_tu_berlin/general/tankdesigntuberlin.py
index 01485ca847ffd81aaf8cd0a251f92a565cdcec32..b95796d344b229b6adec2c7be299f745bbe1ef15 100644
--- a/tank_design/src/tube_and_wing/empirical/tank_design_tu_berlin/general/tankdesigntuberlin.py
+++ b/tank_design/src/tube_and_wing/empirical/tank_design_tu_berlin/general/tankdesigntuberlin.py
@@ -62,9 +62,9 @@ def tank_design_tu_berlin(paths_and_names, routing_dict, dict_ac_data, runtime_o
     
     """Convert coordinates from CGAL to aircraft coordinate system."""
     # List of parameters to be considered for CGAL to aircraft coordinate system conversion.
-    param_list = ["fuselage_position", "wing_position", "empennage_position", "fuselage_entity_position",
-                  "fuselage_section_origin", "fuselage_payload_deck_origin", "wing_section_chord_origin",
-                  "empennage_entity_position", "empennage_section_chord_origin"]
+    # param_list = ["fuselage_position", "wing_position", "empennage_position", "fuselage_entity_position",
+    #               "fuselage_section_origin", "fuselage_payload_deck_origin", "wing_section_chord_origin",
+    #               "empennage_entity_position", "empennage_section_chord_origin"]
     
     # for param in param_list:
     #         if dict_ac_data[param + "_x"] is not None:
diff --git a/tank_design/src/tube_and_wing/empirical/tank_design_tu_berlin/kerosene/calculatetanks.py b/tank_design/src/tube_and_wing/empirical/tank_design_tu_berlin/kerosene/calculatetanks.py
index b95bba00108caf1d1f4a6dd438b5df4541c35e66..87b3b25bd8e98169b90cf493207f683010ffdc4c 100644
--- a/tank_design/src/tube_and_wing/empirical/tank_design_tu_berlin/kerosene/calculatetanks.py
+++ b/tank_design/src/tube_and_wing/empirical/tank_design_tu_berlin/kerosene/calculatetanks.py
@@ -144,8 +144,15 @@ def calculate_kerosene_tanks(dict_ac_data, dict_tank_design, runtime_output):
                     runtime_output.print('Energy check: Energy demand covered.')
                     
         case 'wing_with_additional_center_and_trim_tank':
-            first_act_then_trim = (dict_tank_design['tank_5']['tank_location'] == 'fuselage')
-            first_trim_then_act = (dict_tank_design['tank_5']['tank_location'] == 'horizontal_stabilizer')
+            additional_center_tank_entity = [k for k, v in dict_tank_design.items()
+                                             if k.startswith('tank_') and k[5:].isdigit()
+                                             and v['tank_location'] == 'fuselage'
+                                             and v['tank_position'] == 'center']
+            trim_tank_entity = [k for k, v in dict_tank_design.items() if k.startswith('tank_') and k[5:].isdigit()
+                                and v['tank_location'] == 'horizontal_stabilizer' and v['tank_position'] == 'total']
+            first_act_then_trim = (int(additional_center_tank_entity[-1][-1]) < int(trim_tank_entity[-1][-1]))
+            # first_act_then_trim = (dict_tank_design['tank_5']['tank_location'] == 'fuselage')
+            first_trim_then_act = not first_act_then_trim
             if first_act_then_trim and not first_trim_then_act:
                 if not energy_demand_covered:
                     runtime_output.print('Energy check: Demand not covered yet. Continue with design of additional '
@@ -443,8 +450,20 @@ def calculate_wing_tanks(dict_ac_data, dict_tank_design, runtime_output, mission
                         case 'center':
                             inner_surface_str = 'fuselage_center_line'
                             outer_surface_str = 'outer_center_tank_section'
+                elif number_of_wing_sections == 3:
+                    # Set sections depending on tank position.
+                    match dict_tank_design[wing_tank_entity]['tank_position']:
+                        case 'inner_left' | 'inner_right':
+                            inner_surface_str = 'section_0'
+                            outer_surface_str = 'section_1'
+                        # case 'outer_left' | 'outer_right':
+                        #     inner_surface_str = 'section_1'
+                        #     outer_surface_str = 'section_2'
+                        case 'center':
+                            inner_surface_str = 'fuselage_center_line'
+                            outer_surface_str = 'outer_center_tank_section'
                 else:
-                    runtime_output.critical('Error: Wing without kink not implemented yet! Program aborted.')
+                    runtime_output.critical('Error: Unknown wing geometry! Program aborted.')
                     sys.exit(1)
             else:
                 runtime_output.critical('Error: Wing not symmetric! '
@@ -705,10 +724,6 @@ def calculate_wing_tanks(dict_ac_data, dict_tank_design, runtime_output, mission
     print_outputs = True
     calculate_vent_tank_volume(energy_wing_tank_with_center_tank)
     energy_wing_tank_without_center_tank, energy_wing_tank_with_center_tank = calculate_wing_tanks_volume()  
-    # calculate_wing_tanks_volume()
-    # output is volume_wing_tank_with_center_tank
-    # this is input for calculate_vent_tank()
-    # then calculate_wing_tanks_volume()
     # -------------------------- END OF NEW VENT TANK CALCULATION -------------------------
 
     # -------------------------- START OF OLD VENT TANK CALCULATION -------------------------
@@ -1430,8 +1445,8 @@ def calculate_trim_tank(dict_ac_data, dict_tank_design, runtime_output, energy_d
     
     # Centroid.
     # Assumption: inner surface area always greater than outer surface area.
-    inner_surface = dict_tank_design['tank_5']['geometry']['cross_section_1']
-    outer_surface = dict_tank_design['tank_5']['geometry']['cross_section_2']
+    inner_surface = dict_tank_design[tank_entity]['geometry']['cross_section_1']
+    outer_surface = dict_tank_design[tank_entity]['geometry']['cross_section_2']
     inner_surface_area = (inner_surface['height']
                             *inner_surface['width'])
     outer_surface_area = (outer_surface['height']
diff --git a/tank_design/src/tube_and_wing/empirical/tank_design_tu_berlin/usermethoddatapreparation.py b/tank_design/src/tube_and_wing/empirical/tank_design_tu_berlin/usermethoddatapreparation.py
index 8b8525a535177b507ca76bbe0168be588721e4c4..d91e385386757c75b8aa357d68e67ff48a576c6d 100644
--- a/tank_design/src/tube_and_wing/empirical/tank_design_tu_berlin/usermethoddatapreparation.py
+++ b/tank_design/src/tube_and_wing/empirical/tank_design_tu_berlin/usermethoddatapreparation.py
@@ -50,7 +50,6 @@ def user_method_data_input_preparation(routing_dict):
             [tmp_mission_analysis_path +'loaded_mission_energy/mission_energy[@ID="0"]/consumed_energy', float],
         'mission_energy_ID':
             [tmp_mission_analysis_path +'loaded_mission_energy/mission_energy[@ID="0"]/energy_carrier_ID', int],
-        # TODO here only loaded mission energy is used, but there are also trip, taxi & landing energy
         'energy_carrier_name':
             [tmp_design_specs_path + 'energy_carriers/energy_carrier[@ID="0"]/type', str],
         # Tank configuration.
@@ -81,6 +80,7 @@ def user_method_data_input_preparation(routing_dict):
         'fuselage_payload_deck_structural_floor_thickness': [tmp_fuselage_payload_deck_path +
                                                              'payload_deck_structural_floor_thickness', float],
         # Wing data.
+        'wing_mounting': [tmp_design_specs_path + 'configuration/wing_definition/mounting', str],
         'wing_name': [tmp_wing_path + 'name', str],
         'wing_position_x': ['./component_design/wing/position/x', float],
         'wing_position_y': ['./component_design/wing/position/y', float],