diff --git a/apps/tutorials/codegen/HeatEquationKernel.py b/apps/tutorials/codegen/HeatEquationKernel.py
index a9c5e472ea25da75888b4bfa038ec175ffba6983..8339fdff1cca5859ca71b8e8d0e5c06601c7c1f2 100644
--- a/apps/tutorials/codegen/HeatEquationKernel.py
+++ b/apps/tutorials/codegen/HeatEquationKernel.py
@@ -22,9 +22,11 @@ with CodeGeneration() as ctx:
     Ti6Al4V = Ti6Al4V.create_Ti6Al4V(u.center())
     # density, density_subexpr = Ti6Al4V.density  # Alternative
     subexp = []
-    for a in Ti6Al4V.assignments:
-        data_symbol = ps.TypedSymbol(a[0].label.name, Arr(Fp(64)))  # Alternative
-        subexp.append(ps.Assignment(data_symbol, a[1]))
+    # Iterate over the dictionary items
+    for label, assignment_list in Ti6Al4V.assignments.items():
+        for data_label, data_values in assignment_list:
+            data_symbol = ps.TypedSymbol(data_label, Arr(Fp(64)))  # Define the symbol with appropriate type
+            subexp.append(ps.Assignment(data_symbol, data_values))
     # thermal_diffusivity_expr = thermal_diffusivity_by_heat_conductivity(Ti6Al4V.heat_conductivity, Ti6Al4V.density, Ti6Al4V.heat_capacity)
     thermal_diffusivity_expr = thermal_diffusivity_by_heat_conductivity(Ti6Al4V.heat_conductivity, Ti6Al4V.density, Ti6Al4V.heat_capacity)  # Alternative
     subexp.append(ps.Assignment(thermal_diffusivity, thermal_diffusivity_expr))
diff --git a/src/materials/alloys/Alloy.py b/src/materials/alloys/Alloy.py
index 27975f52fa1063e0a118b7c2a5990a57f5ae8d99..c5ff7250bb6d7b830f95957845d951a3483cdf00 100644
--- a/src/materials/alloys/Alloy.py
+++ b/src/materials/alloys/Alloy.py
@@ -1,6 +1,6 @@
 import numpy as np
 from sympy import Expr
-from typing import List, Union
+from typing import List, Union, Dict, Tuple, Any
 from dataclasses import dataclass, field, asdict
 from src.materials.elements import Element
 from src.materials.elements import Ti, Al, V
@@ -27,7 +27,8 @@ class Alloy:
     heat_conductivity: Union[float, Expr] = None
     thermal_diffusivity: Union[float, Expr] = None
 
-    assignments: list[tuple, ...] = field(default_factory=list, init=False)
+    # assignments: list[tuple, ...] = field(default_factory=list, init=False)
+    assignments: Dict[str, List[Tuple[str, Any]]] = field(default_factory=dict, init=False)
 
     def interpolate(self, quantity: str) -> float:
         comp = np.asarray(self.composition)
diff --git a/src/materials/alloys/Ti6Al4V.py b/src/materials/alloys/Ti6Al4V.py
index 4b8ccd2ccfda5d31aecab5f6f8afd46deabb441d..52a0026ad197f03fc2cab26f42370b639f833fc6 100644
--- a/src/materials/alloys/Ti6Al4V.py
+++ b/src/materials/alloys/Ti6Al4V.py
@@ -5,7 +5,7 @@ from src.materials.elements import Ti, Al, V
 from src.materials.constants import Constants
 from src.materials import interpolators
 from src.materials import models
-from src.materials.property import Property
+# from src.materials.property import Property
 
 
 def create_Ti6Al4V(T: Union[float, sp.Symbol]) -> Alloy:
@@ -21,14 +21,16 @@ def create_Ti6Al4V(T: Union[float, sp.Symbol]) -> Alloy:
     Ti6Al4V.density = 4430.0  # kg/m³     Ref [5]
     Ti6Al4V.thermal_expansion_coefficient = 10e-6  # /K        Ref[6]
 
-    '''Ti6Al4V.heat_capacity = interpolators.interpolate_lookup(
-        T, Ti6Al4V.solidification_interval(), [700.0, 1126.0])  # J/kg-k'''
+    heat_capacity_expr, heat_capacity_assignments = interpolators.interpolate_equidistant(
+        T, 1820, 20, [700, 800, 900, 1000, 1100, 1200], 'heat_capacity')
+    Ti6Al4V.heat_capacity = heat_capacity_expr
 
-    heat_capacity = interpolators.interpolate_equidistant(
-        T, 1820, 20, [700, 800, 900, 1000, 1100, 1200], 'heat_capacity')  # J/kg-k
-
-    Ti6Al4V.heat_capacity = heat_capacity.expression
-    Ti6Al4V.assignments += heat_capacity.assignments
+    # Merge the returned assignments into the Ti6Al4V assignments dictionary
+    for label, data in heat_capacity_assignments.items():
+        if label in Ti6Al4V.assignments:
+            Ti6Al4V.assignments[label].extend(data)
+        else:
+            Ti6Al4V.assignments[label] = data
 
     Ti6Al4V.heat_conductivity = interpolators.interpolate_lookup(
         T, Ti6Al4V.solidification_interval(), [21.58, 33.60])  # W/m-k
@@ -38,14 +40,19 @@ def create_Ti6Al4V(T: Union[float, sp.Symbol]) -> Alloy:
 
     Ti6Al4V.density = interpolators.interpolate_lookup(
         T, [1878.0, 1884.2, 1894.7, 1905.3, 1915.8, 1926.3, 1928.0],
-        [4236.3, 4234.9, 4233.6, 4232.3, 4230.9, 4229.7, 4227.0])'''
+        [4236.3, 4234.9, 4233.6, 4232.3, 4230.9, 4229.7, 4227.0])
 
-    density = interpolators.interpolate_equidistant(
+    density_expr, density_assignments = interpolators.interpolate_equidistant(
         T, 1878.0, 5,
         [4236.3, 4234.9, 4233.6, 4232.3, 4230.9, 4229.7, 4227.0], 'density')
-
-    Ti6Al4V.density = density.expression
-    Ti6Al4V.assignments += density.assignments
+    Ti6Al4V.density = density_expr
+
+    # Merge the returned assignments into the Ti6Al4V assignments dictionary
+    for label, data in density_assignments.items():
+        if label in Ti6Al4V.assignments:
+            Ti6Al4V.assignments[label].extend(data)
+        else:
+            Ti6Al4V.assignments[label] = data'''
 
     Ti6Al4V.thermal_diffusivity = models.thermal_diffusivity_by_heat_conductivity(
         Ti6Al4V.heat_conductivity, Ti6Al4V.density, Ti6Al4V.heat_capacity)
diff --git a/src/materials/interpolators.py b/src/materials/interpolators.py
index 6b32bf27768b537930b26535f92f6c28cb9c5808..8d57a4bf0bb339952dd62c77dcf910c654b0f5f6 100644
--- a/src/materials/interpolators.py
+++ b/src/materials/interpolators.py
@@ -1,14 +1,15 @@
 import numpy as np
 import sympy as sp
-from typing import Union, List
+from typing import Union, List, Tuple, Dict
 # import pystencils as ps
 # from pystencils.types.quick import *
-from src.materials.property import Property
+# from src.materials.property import Property
 from pystencils.sympyextensions import CastFunc
 
 
 def interpolate_equidistant(T: Union[float, sp.Symbol], T_base: float, T_incr: float,
-                            data_array: Union[np.ndarray, List[float]], label: str) -> Union[float, Property]:  # TODO
+                            data_array: Union[np.ndarray, List[float]], label: str) \
+        -> Union[float, Tuple[Union[sp.Expr, float], Dict[str, List[Tuple[str, Tuple[float, ...]]]]]]:    # TODO
     """
     Interpolates values for equidistant temperature data points.
 
@@ -41,7 +42,8 @@ def interpolate_equidistant(T: Union[float, sp.Symbol], T_base: float, T_incr: f
             # (((T_incr - mod) * data_symbol[idx] + (mod * data_symbol[idx + 1])) / T_incr, True))
             (((T_incr - mod) * data_base[idx_int] + (mod * data_base[idx_int + 1])) / T_incr, True))  # Alternative
         # return result.subs(data_symbol, sp.Array(data_array))
-        return Property(result, ((data_base, data_array),))  # [result, ps.Assignment(data_symbol, data_array), ps.Assignment(data_symbol, data_array)]  # Alternative resurn a property, 1st arg: result, 2nd: List[tuple]
+        assignments = {label: [(label, data_array)]}
+        return result, assignments  # [result, ps.Assignment(data_symbol, data_array), ps.Assignment(data_symbol, data_array)]  # Alternative resurn a property, 1st arg: result, 2nd: List[tuple]
     else:
         if T < T_base:
             return data_array[0]
@@ -106,20 +108,20 @@ if __name__ == '__main__':
     density_data_array2 = [4236.3, 4234.9, 4233.6, 4232.3, 4230.9, 4229.7, 4227.0]
 
     # Symbolic interpolation
-    symbolic_result = interpolate_lookup(Temp, density_temp_array1, density_data_array1)
+    symbolic_result = interpolate_lookup(Temp, density_temp_array2, density_data_array2)
     print("Symbolic interpolation result with interpolate_lookup:", symbolic_result)
 
     # Numeric interpolation
-    numeric_result = interpolate_lookup(450.0, density_temp_array1, density_data_array1)
+    numeric_result = interpolate_lookup(450.0, density_temp_array2, density_data_array2)
     print("Numeric interpolation result with interpolate_lookup:", numeric_result)
 
     T_base = 200
     T_incr = 100
 
     # Symbolic interpolation
-    symbolic_result = interpolate_equidistant(Temp, T_base, T_incr, density_data_array1, 'density')
+    symbolic_result = interpolate_equidistant(Temp, T_base, T_incr, density_data_array2, 'density')
     print("Symbolic interpolation result with interpolate_equidistant:", symbolic_result)
 
     # Numeric interpolation
-    numeric_result = interpolate_equidistant(450.0, T_base, T_incr, density_data_array1, 'density')
+    numeric_result = interpolate_equidistant(450.0, T_base, T_incr, density_data_array2, 'density')
     print("Numeric interpolation result with interpolate_equidistant:", numeric_result)
diff --git a/src/materials/property.py b/src/materials/property.py
index aacd51db2d94a68084ecae3a8545c36a2ff1b6a4..7a61e3e21e7ed630642153fc77662c631cce3e05 100644
--- a/src/materials/property.py
+++ b/src/materials/property.py
@@ -1,8 +1,8 @@
-from sympy import Expr
+"""from sympy import Expr
 from dataclasses import dataclass
 
 
 @dataclass
 class Property:
     expression: Expr | float
-    assignments: tuple[tuple, ...] = tuple
+    assignments: tuple[tuple, ...] = tuple"""