diff --git a/Model_Library b/Model_Library
index bd30f6883a18b671970e99c2d64e3ef7ffe6e2cf..a5e9a3ab750522285e6198cd4156bf01fffcb94a 160000
--- a/Model_Library
+++ b/Model_Library
@@ -1 +1 @@
-Subproject commit bd30f6883a18b671970e99c2d64e3ef7ffe6e2cf
+Subproject commit a5e9a3ab750522285e6198cd4156bf01fffcb94a
diff --git a/Tooling b/Tooling
index 18a1cbc81bdf847a5d288cce58e4fd100ba3733c..380d9f65b85ebf7da92f72727e5fba6ec0b62887 160000
--- a/Tooling
+++ b/Tooling
@@ -1 +1 @@
-Subproject commit 18a1cbc81bdf847a5d288cce58e4fd100ba3733c
+Subproject commit 380d9f65b85ebf7da92f72727e5fba6ec0b62887
diff --git a/examples/BusChargingDepot/runme.py b/examples/BusChargingDepot/runme.py
index 64240dba13889e15ddc82e9a4e666e501bd55ec6..87ab7839ce10d5a3f4ae70c6d74fa53eca5ebdfe 100644
--- a/examples/BusChargingDepot/runme.py
+++ b/examples/BusChargingDepot/runme.py
@@ -29,10 +29,11 @@ from Tooling.input_profile_processor.input_profile_processor import (
 )
 
 import json
+import numpy as np
 import pandas as pd
 
 t_start = pd.Timestamp("2019-05-10 00:00:00")
-dynamic = TrivialDynamic([60 for i in range(24 * 60 - 1)])
+dynamic = TrivialDynamic(np.full(24 * 60 - 1, 60, dtype=int))
 
 input_profile_dict = {
     "bus_1_demand": {"type": "electricity_demand", "file": "bus_1_demand.csv"},
diff --git a/examples/BusChargingHPC/runme.py b/examples/BusChargingHPC/runme.py
index 8d6f4bc7b4ccaa4d9d1e42886fbe5e016794efe5..692fd0910045a937c4db8a8c48ea4580c8221b9c 100644
--- a/examples/BusChargingHPC/runme.py
+++ b/examples/BusChargingHPC/runme.py
@@ -29,10 +29,11 @@ from Tooling.input_profile_processor.input_profile_processor import (
 )
 
 import json
+import numpy as np
 import pandas as pd
 
 t_start = pd.Timestamp("2019-05-10 00:00:00")
-dynamic = TrivialDynamic([60 for i in range(24 * 60 - 1)])
+dynamic = TrivialDynamic(np.full(24 * 60 - 1, 60, dtype=int))
 
 input_profile_dict = {
     "bus_1_demand": {"type": "electricity_demand", "file": "bus_1_demand.csv"},
@@ -66,30 +67,30 @@ prosumer_json["components"]["bus_1_generation"]["generation"] = input_profiles[
 prosumer_json["components"]["bus_2_generation"]["generation"] = input_profiles[
     "bus_2_recuperation"
 ]
-prosumer_json["additional_model_logic"]["charger_1_enable"]["enable"] = input_profiles[
-    "bus_1_connected"
-].values.loc[:, "Connected to depot"]
-prosumer_json["additional_model_logic"]["charger_2_enable"]["enable"] = input_profiles[
-    "bus_2_connected"
-].values.loc[:, "Connected to depot"]
-prosumer_json["additional_model_logic"]["HPC_1_bus_1_enable"][
-    "enable"
-] = input_profiles["bus_1_connected"].values.loc[:, "Connected to HPC 1"]
-prosumer_json["additional_model_logic"]["HPC_1_bus_2_enable"][
-    "enable"
-] = input_profiles["bus_1_connected"].values.loc[:, "Connected to HPC 2"]
-prosumer_json["additional_model_logic"]["HPC_2_bus_1_enable"][
-    "enable"
-] = input_profiles["bus_1_connected"].values.loc[:, "Connected to HPC 3"]
-prosumer_json["additional_model_logic"]["HPC_2_bus_2_enable"][
-    "enable"
-] = input_profiles["bus_2_connected"].values.loc[:, "Connected to HPC 1"]
-prosumer_json["additional_model_logic"]["HPC_3_bus_1_enable"][
-    "enable"
-] = input_profiles["bus_2_connected"].values.loc[:, "Connected to HPC 2"]
-prosumer_json["additional_model_logic"]["HPC_3_bus_2_enable"][
-    "enable"
-] = input_profiles["bus_2_connected"].values.loc[:, "Connected to HPC 3"]
+prosumer_json["additional_model_logic"]["charger_1_enable"]["enable"] = (
+    input_profiles["bus_1_connected"].values.loc[:, "Connected to depot"].values
+)
+prosumer_json["additional_model_logic"]["charger_2_enable"]["enable"] = (
+    input_profiles["bus_2_connected"].values.loc[:, "Connected to depot"].values
+)
+prosumer_json["additional_model_logic"]["HPC_1_bus_1_enable"]["enable"] = (
+    input_profiles["bus_1_connected"].values.loc[:, "Connected to HPC 1"].values
+)
+prosumer_json["additional_model_logic"]["HPC_1_bus_2_enable"]["enable"] = (
+    input_profiles["bus_1_connected"].values.loc[:, "Connected to HPC 2"].values
+)
+prosumer_json["additional_model_logic"]["HPC_2_bus_1_enable"]["enable"] = (
+    input_profiles["bus_1_connected"].values.loc[:, "Connected to HPC 3"].values
+)
+prosumer_json["additional_model_logic"]["HPC_2_bus_2_enable"]["enable"] = (
+    input_profiles["bus_2_connected"].values.loc[:, "Connected to HPC 1"].values
+)
+prosumer_json["additional_model_logic"]["HPC_3_bus_1_enable"]["enable"] = (
+    input_profiles["bus_2_connected"].values.loc[:, "Connected to HPC 2"].values
+)
+prosumer_json["additional_model_logic"]["HPC_3_bus_2_enable"]["enable"] = (
+    input_profiles["bus_2_connected"].values.loc[:, "Connected to HPC 3"].values
+)
 
 prosumer = Prosumer("LaTreille", prosumer_json, dynamic)
 
diff --git a/examples/BusChargingIMC/runme.py b/examples/BusChargingIMC/runme.py
index 18dc9c02fc1130a2efdfa094e445548d43ca2135..d8b3408bf2127d03d3fbad02ea9686edf223cd89 100644
--- a/examples/BusChargingIMC/runme.py
+++ b/examples/BusChargingIMC/runme.py
@@ -29,10 +29,11 @@ from Tooling.input_profile_processor.input_profile_processor import (
 )
 
 import json
+import numpy as np
 import pandas as pd
 
 t_start = pd.Timestamp("2019-05-10 00:00:00")
-dynamic = TrivialDynamic([60 for i in range(24 * 60 - 1)])
+dynamic = TrivialDynamic(np.full(24 * 60 - 1, 60, dtype=int))
 
 input_profile_dict = {
     "bus_1_demand": {"type": "electricity_demand", "file": "bus_1_demand.csv"},
diff --git a/examples/aggregation/runme.py b/examples/aggregation/runme.py
index 9371b53af9e42894d6a5175b780714c63ae62220..30323cbc71f2a88be3d046b29f360cdcad576a71 100644
--- a/examples/aggregation/runme.py
+++ b/examples/aggregation/runme.py
@@ -29,10 +29,11 @@ from Tooling.input_profile_processor.input_profile_processor import (
 )
 
 import json
+import numpy as np
 import pandas as pd
 
 t_start = pd.Timestamp("2019-01-01 00:00:00")
-dynamic = TrivialDynamic([3600 for i in range(240)])
+dynamic = TrivialDynamic(np.full(240, 3600, dtype=int))
 
 input_profile_dict = {
     "irradiance": {"type": "irradiance", "file": "irradiance.csv"},
@@ -48,57 +49,51 @@ input_profiles = process_input_profiles(input_profile_dict, t_start, dynamic)
 aggregated_dynamic = AggregatedDynamic(
     dynamic, [[12, 1, 11], [7, 8, 9]], [0, 0, 1, 1, 0, 1, 0, 1, 1, 0]
 )
-irradiance_1 = pd.Series(
+irradiance_1 = np.array(
     [
-        input_profiles["irradiance"].values.loc[0:11].sum() / 12,
-        input_profiles["irradiance"].values.loc[12],
-        input_profiles["irradiance"].values.loc[13:23].sum() / 11,
-    ],
-    index=[0, 12, 13],
+        input_profiles["irradiance"].values[0:12].sum() / 12.0,
+        input_profiles["irradiance"].values[12],
+        input_profiles["irradiance"].values[13:24].sum() / 11.0,
+    ]
 )
-irradiance_2 = pd.Series(
+irradiance_2 = np.array(
     [
-        input_profiles["irradiance"].values.loc[24:30].sum() / 7,
-        input_profiles["irradiance"].values.loc[31:38].sum() / 8,
-        input_profiles["irradiance"].values.loc[49:47].sum() / 9,
-    ],
-    index=[0, 7, 15],
+        input_profiles["irradiance"].values[24:31].sum() / 7.0,
+        input_profiles["irradiance"].values[31:39].sum() / 8.0,
+        input_profiles["irradiance"].values[49:48].sum() / 9.0,
+    ]
 )
 aggregated_irradiance = Profile({0: irradiance_1, 1: irradiance_2}, aggregated_dynamic)
-temperature_1 = pd.Series(
+temperature_1 = np.array(
     [
-        input_profiles["temperature"].values.loc[0:11].sum() / 12,
-        input_profiles["temperature"].values.loc[12],
-        input_profiles["temperature"].values.loc[13:23].sum() / 11,
-    ],
-    index=[0, 12, 13],
+        input_profiles["temperature"].values[0:12].sum() / 12.0,
+        input_profiles["temperature"].values[12],
+        input_profiles["temperature"].values[13:24].sum() / 11.0,
+    ]
 )
-temperature_2 = pd.Series(
+temperature_2 = np.array(
     [
-        input_profiles["temperature"].values.loc[24:30].sum() / 7,
-        input_profiles["temperature"].values.loc[31:38].sum() / 8,
-        input_profiles["temperature"].values.loc[49:47].sum() / 9,
-    ],
-    index=[0, 7, 15],
+        input_profiles["temperature"].values[24:31].sum() / 7.0,
+        input_profiles["temperature"].values[31:39].sum() / 8.0,
+        input_profiles["temperature"].values[49:48].sum() / 9.0,
+    ]
 )
 aggregated_temperature = Profile(
     {0: temperature_1, 1: temperature_2}, aggregated_dynamic
 )
-electricity_demand_1 = pd.Series(
+electricity_demand_1 = np.array(
     [
-        input_profiles["electricity_demand"].values.loc[0:11].sum() / 12,
-        input_profiles["electricity_demand"].values.loc[12],
-        input_profiles["electricity_demand"].values.loc[13:23].sum() / 11,
-    ],
-    index=[0, 12, 13],
+        input_profiles["electricity_demand"].values[0:12].sum() / 12.0,
+        input_profiles["electricity_demand"].values[12],
+        input_profiles["electricity_demand"].values[13:24].sum() / 11.0,
+    ]
 )
-electricity_demand_2 = pd.Series(
+electricity_demand_2 = np.array(
     [
-        input_profiles["electricity_demand"].values.loc[24:30].sum() / 7,
-        input_profiles["electricity_demand"].values.loc[31:38].sum() / 8,
-        input_profiles["electricity_demand"].values.loc[49:47].sum() / 9,
-    ],
-    index=[0, 7, 15],
+        input_profiles["electricity_demand"].values[24:31].sum() / 7.0,
+        input_profiles["electricity_demand"].values[31:39].sum() / 8.0,
+        input_profiles["electricity_demand"].values[49:48].sum() / 9.0,
+    ]
 )
 aggregated_electricity_demand = Profile(
     {0: electricity_demand_1, 1: electricity_demand_2}, aggregated_dynamic
diff --git a/examples/complex_prosumer/runme.py b/examples/complex_prosumer/runme.py
index f8a8e9e2bb90b71c91a5fbc530611dc79b8c53ed..41515faf8f431479faf55c7ba137d72cfd69f873 100644
--- a/examples/complex_prosumer/runme.py
+++ b/examples/complex_prosumer/runme.py
@@ -29,10 +29,11 @@ from Tooling.input_profile_processor.input_profile_processor import (
 )
 
 import json
+import numpy as np
 import pandas as pd
 
 t_start = pd.Timestamp("2019-01-01 00:00:00")
-dynamic = TrivialDynamic([3600 for i in range(24)])
+dynamic = TrivialDynamic(np.full(24, 3600, dtype=int))
 
 input_profile_dict = {
     "irradiance": {"type": "irradiance", "file": "irradiance.csv"},
diff --git a/examples/district/runme.py b/examples/district/runme.py
index 970cae69c49d2a9ae5358666785ad353957b8a73..698d0218ed1845e45104668364bc09fdc3a9b1c3 100644
--- a/examples/district/runme.py
+++ b/examples/district/runme.py
@@ -29,10 +29,11 @@ from Tooling.input_profile_processor.input_profile_processor import (
 )
 
 import json
+import numpy as np
 import pandas as pd
 
 t_start = pd.Timestamp("2019-05-10 00:00:00")
-dynamic = TrivialDynamic([3600 for i in range(24)])
+dynamic = TrivialDynamic(np.full(24, 3600, dtype=int))
 
 input_profile_dict = {
     "irradiance": {"type": "irradiance", "file": "irradiance.csv"},
diff --git a/examples/simple_prosumer/runme.py b/examples/simple_prosumer/runme.py
index 8f9ab4c6479db55f33afd5455448556a5ce85be6..1366f3295e6465d8c1d9c62a563863d6b1f0afe5 100644
--- a/examples/simple_prosumer/runme.py
+++ b/examples/simple_prosumer/runme.py
@@ -29,10 +29,11 @@ from Tooling.input_profile_processor.input_profile_processor import (
 )
 
 import json
+import numpy as np
 import pandas as pd
 
 t_start = pd.Timestamp("2019-01-01 00:00:00")
-dynamic = TrivialDynamic([3600 for i in range(24)])
+dynamic = TrivialDynamic(np.full(24, 3600, dtype=int))
 
 input_profile_dict = {
     "irradiance": {"type": "irradiance", "file": "irradiance.csv"},