diff --git a/Model_Library b/Model_Library
index 49b3fad83c5a0ade778ba785575213a231bbaca8..3310916e039847713d82d1afcfe81710b6dc93c1 160000
--- a/Model_Library
+++ b/Model_Library
@@ -1 +1 @@
-Subproject commit 49b3fad83c5a0ade778ba785575213a231bbaca8
+Subproject commit 3310916e039847713d82d1afcfe81710b6dc93c1
diff --git a/examples/BusChargingDepot/runme.py b/examples/BusChargingDepot/runme.py
index 109f04a431e8c2513741e269ed50bd01bfac4188..8a2a1fb8bb8ab08316788aaff80be5e2e73ba239 100644
--- a/examples/BusChargingDepot/runme.py
+++ b/examples/BusChargingDepot/runme.py
@@ -22,7 +22,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 THE SOFTWARE.
 """
 
-from Model_Library.dynamics import Profile, TrivialDynamic
+from Model_Library.dynamics import Profile, TrivialArchitecture, TrivialDynamic
 from Model_Library.topology import Prosumer
 
 import json
@@ -55,6 +55,6 @@ prosumer_json["additional_model_logic"]["charger_2_enable"]["enable"] = input_pr
 
 prosumer = Prosumer("LaTrielle", prosumer_json)
 
-prosumer.optimize("sized", dynamic, ["annuity", "peak_power_cost"])
+prosumer.optimize("sized", TrivialArchitecture(dynamic), ["annuity", "peak_power_cost"])
 
 prosumer.save_results("output_files")
diff --git a/examples/BusChargingHPC/runme.py b/examples/BusChargingHPC/runme.py
index 6ca884b6ebf774c50286f82574cd15c72e28bfb4..67724bc53fde1accc15656aff9e4632300340a40 100644
--- a/examples/BusChargingHPC/runme.py
+++ b/examples/BusChargingHPC/runme.py
@@ -22,7 +22,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 THE SOFTWARE.
 """
 
-from Model_Library.dynamics import Profile, TrivialDynamic
+from Model_Library.dynamics import Profile, TrivialArchitecture, TrivialDynamic
 from Model_Library.topology import Prosumer
 
 import json
@@ -73,6 +73,6 @@ prosumer_json["additional_model_logic"]["HPC_3_bus_2_enable"][
 
 prosumer = Prosumer("LaTreille", prosumer_json)
 
-prosumer.optimize("sized", dynamic, ["annuity", "peak_power_cost"])
+prosumer.optimize("sized", TrivialArchitecture(dynamic), ["annuity", "peak_power_cost"])
 
 prosumer.save_results("output_files")
diff --git a/examples/BusChargingIMC/runme.py b/examples/BusChargingIMC/runme.py
index 4419d05b45a2e5f25354bced27688b345c3f56ec..5e71c22d129aab7bae762b2662b3ce0d15c03fc9 100644
--- a/examples/BusChargingIMC/runme.py
+++ b/examples/BusChargingIMC/runme.py
@@ -22,7 +22,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 THE SOFTWARE.
 """
 
-from Model_Library.dynamics import Profile, TrivialDynamic
+from Model_Library.dynamics import Profile, TrivialArchitecture, TrivialDynamic
 from Model_Library.topology import Prosumer
 
 import json
@@ -77,6 +77,6 @@ prosumer_json["components"]["bus_2_motor_inverter"][
 
 prosumer = Prosumer("LaTreille", prosumer_json)
 
-prosumer.optimize("sized", dynamic, ["annuity", "peak_power_cost"])
+prosumer.optimize("sized", TrivialArchitecture(dynamic), ["annuity", "peak_power_cost"])
 
 prosumer.save_results("output_files")
diff --git a/examples/aggregation/runme.py b/examples/aggregation/runme.py
index d51bac2a48f38c7e6f3c67965c3a0d82937515a8..035f9d85572198cd865f668ebb025cb63d58893f 100644
--- a/examples/aggregation/runme.py
+++ b/examples/aggregation/runme.py
@@ -22,17 +22,17 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 THE SOFTWARE.
 """
 
-from Model_Library.dynamics import AggregatedDynamic, Profile, TrivialDynamic
+from Model_Library.dynamics import PeriodAggregation, Profile, TrivialDynamic
 from Model_Library.topology import Prosumer
 
 import json
 import numpy as np
 
 dynamic = TrivialDynamic(np.full(240, 3600, dtype=int))
-aggregated_dynamic = AggregatedDynamic(
+architecture = PeriodAggregation(
     dynamic, [[12, 1, 11], [7, 8, 9]], [0, 0, 1, 1, 0, 1, 0, 1, 1, 0]
 )
-profiles = Profile.from_csv("data.csv", aggregated_dynamic)
+profiles = Profile.from_csv("data.csv", architecture.value_dynamic)
 
 with open("prosumer.json") as f:
     prosumer_json = json.load(f)
@@ -45,6 +45,6 @@ prosumer_json["components"]["consumption"]["consumption"] = profiles[
 
 prosumer = Prosumer("my_prosumer", prosumer_json)
 
-prosumer.optimize("sized", aggregated_dynamic, ["annuity"])
+prosumer.optimize("sized", architecture, ["annuity"])
 
 prosumer.save_results("output_files")
diff --git a/examples/complex_prosumer/runme.py b/examples/complex_prosumer/runme.py
index 10c02ec90029dca24345bcfa61fdc16078edfe95..28d48699e645c99a3b65b5c5a019aa3d759c7d92 100644
--- a/examples/complex_prosumer/runme.py
+++ b/examples/complex_prosumer/runme.py
@@ -22,7 +22,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 THE SOFTWARE.
 """
 
-from Model_Library.dynamics import Profile, TrivialDynamic
+from Model_Library.dynamics import Profile, TrivialArchitecture, TrivialDynamic
 from Model_Library.topology import Prosumer
 
 import json
@@ -49,7 +49,7 @@ prosumer_json["components"]["hot_water_consumption"]["consumption"] = input_prof
 
 prosumer = Prosumer("my_prosumer", prosumer_json)
 
-prosumer.optimize("sized", dynamic, ["annuity"])
+prosumer.optimize("sized", TrivialArchitecture(dynamic), ["annuity"])
 
 prosumer.save_results("output_files")
 
diff --git a/examples/district/runme.py b/examples/district/runme.py
index a73fb8a538fc906ea83ac88aa90930277c28770e..e16aacf6631c9a117a8ab838051ad2936c98f603 100644
--- a/examples/district/runme.py
+++ b/examples/district/runme.py
@@ -22,7 +22,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 THE SOFTWARE.
 """
 
-from Model_Library.dynamics import Profile, TrivialDynamic
+from Model_Library.dynamics import Profile, TrivialArchitecture, TrivialDynamic
 from Model_Library.topology import District, DistrictAsset, Prosumer
 
 import json
@@ -51,7 +51,7 @@ for prosumer_name, prosumer_path in prosumer_paths.items():
     prosumers[prosumer_name] = Prosumer(prosumer_name, prosumer_json)
 
 for prosumer_name, prosumer in prosumers.items():
-    prosumer.optimize("sized", dynamic, ["annuity"])
+    prosumer.optimize("sized", TrivialArchitecture(dynamic), ["annuity"])
 
     prosumer.save_results("output_files")
 
@@ -74,6 +74,6 @@ district = District(
     "my_district", district_json, prosumers, {"my_asset": district_asset}
 )
 
-district.optimize("sized", dynamic, ["annuity"])
+district.optimize("sized", TrivialArchitecture(dynamic), ["annuity"])
 
 district.save_results("output_files")
diff --git a/examples/simple_prosumer/runme.py b/examples/simple_prosumer/runme.py
index c2a0444e91b24cb87d0bb67f56a08124dda112e9..8b325fe6a5f6e19dc0f2f2016ef9d80ad0c49d0e 100644
--- a/examples/simple_prosumer/runme.py
+++ b/examples/simple_prosumer/runme.py
@@ -22,7 +22,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 THE SOFTWARE.
 """
 
-from Model_Library.dynamics import Profile, TrivialDynamic
+from Model_Library.dynamics import Profile, TrivialArchitecture, TrivialDynamic
 from Model_Library.topology import Prosumer
 
 import json
@@ -42,6 +42,6 @@ prosumer_json["components"]["consumption"]["consumption"] = input_profiles[
 
 prosumer = Prosumer("my_prosumer", prosumer_json)
 
-prosumer.optimize("sized", dynamic, ["annuity"])
+prosumer.optimize("sized", TrivialArchitecture(dynamic), ["annuity"])
 
 prosumer.save_results("output_files")