diff --git a/benchmarks/profiling/profile_huge_memory.py b/benchmarks/profiling/profile_huge_memory.py
index cbfed840cd1514960563141cf3c1d58fb078494b..6f136d935012c5a4f7e419101bec4bac04eef32c 100644
--- a/benchmarks/profiling/profile_huge_memory.py
+++ b/benchmarks/profiling/profile_huge_memory.py
@@ -38,7 +38,6 @@ def run_model():
     )
 
     composition = fm.Composition([source, sink], slot_memory_limit=500 * 2**20)
-    composition.initialize()
 
     source["Out"] >> sink["In"]
 
diff --git a/benchmarks/profiling/profile_numpy.py b/benchmarks/profiling/profile_numpy.py
index 6027e7d0e9bfe647b741e09af96025a8d3aa519e..d91fb3cb35aa4ec543e6687e06a9c0823e582066 100644
--- a/benchmarks/profiling/profile_numpy.py
+++ b/benchmarks/profiling/profile_numpy.py
@@ -49,7 +49,6 @@ def run_model():
     )
 
     composition = fm.Composition([source, sink])
-    composition.initialize()
 
     source["Out"] >> sink["In"]
 
diff --git a/benchmarks/run/test_run.py b/benchmarks/run/test_run.py
index 26c56b1df094208a8f2d218a25d41397938f6295..277e53dc813af923ab7e0e7c91daba8396fc76e9 100644
--- a/benchmarks/run/test_run.py
+++ b/benchmarks/run/test_run.py
@@ -39,7 +39,6 @@ class SimpleRunBase(unittest.TestCase):
         )
 
         self.composition = fm.Composition([source, sink])
-        self.composition.initialize()
 
         source["Out"] >> sink["In"]
 
diff --git a/docs/source/finam-book/development/adapters.rst b/docs/source/finam-book/development/adapters.rst
index 92cd5e951edb05ad3ec3c517b7581e811d198e9c..ebe02cc5c0951c797eff9035d44bc44534ec885e 100644
--- a/docs/source/finam-book/development/adapters.rst
+++ b/docs/source/finam-book/development/adapters.rst
@@ -66,7 +66,6 @@ File ``src/scale.py``:
     adapter = Scale(0.5)
 
     comp = fm.Composition([generator, consumer])
-    comp.initialize()
 
     generator.outputs["Value"] >> adapter >> consumer.inputs["Input"]
 
@@ -235,7 +234,6 @@ In :meth:`.Adapter._get_data`, we can now do the interpolation whenever data is
     adapter = TimeInterpolation()
 
     comp = fm.Composition([generator, consumer])
-    comp.initialize()
 
     generator.outputs["Value"] >> adapter >> consumer.inputs["Input"]
 
diff --git a/docs/source/finam-book/development/components.rst b/docs/source/finam-book/development/components.rst
index 6e37922cd09a0d28d55ef332b6e4f6d185c13181..980aeab662ccf5af3b2dcbeb8bb071c6e7008a2f 100644
--- a/docs/source/finam-book/development/components.rst
+++ b/docs/source/finam-book/development/components.rst
@@ -256,7 +256,6 @@ For the tests, we need to set up a real coupling from here on, as the component'
             # set up a composition
             composition = fm.Composition([model, generator, consumer],
                                          log_level="DEBUG")
-            composition.initialize()
 
             # connect components
             generator.outputs["A"] >> model.inputs["A"]
@@ -422,7 +421,6 @@ Here is the final code of the completed component.
                 step=timedelta(days=7),
             )
             composition = fm.Composition([model, generator, consumer], log_level="DEBUG")
-            composition.initialize()
 
             generator.outputs["A"] >> model.inputs["A"]
             generator.outputs["B"] >> model.inputs["B"]
diff --git a/docs/source/finam-book/development/connect_phase.rst b/docs/source/finam-book/development/connect_phase.rst
index 10ad82883c0435cea7edaf26e26f73915eee37a2..86f4e38a57d623ea9d6d903d743040eb97fe8832 100644
--- a/docs/source/finam-book/development/connect_phase.rst
+++ b/docs/source/finam-book/development/connect_phase.rst
@@ -190,7 +190,6 @@ In the most simple case, all metadata is known in :meth:`.Component._initialize`
     )
 
     comp = fm.Composition([generator, simple_conn, consumer])
-    comp.initialize()
 
     generator.outputs["Output1"] >> simple_conn.inputs["A"]
     generator.outputs["Output2"] >> simple_conn.inputs["B"]
@@ -282,7 +281,6 @@ and the initial data should be generated from it.
     )
 
     comp = fm.Composition([generator, complex_conn, consumer])
-    comp.initialize()
 
     generator.outputs["Output1"] >> complex_conn.inputs["A"]
     generator.outputs["Output2"] >> complex_conn.inputs["B"]
diff --git a/docs/source/finam-book/development/performance.rst b/docs/source/finam-book/development/performance.rst
index 55f72d8163d768a49f5a2ff05840131f80488747..fd9770719a27a445828c740cddce850c54589432 100644
--- a/docs/source/finam-book/development/performance.rst
+++ b/docs/source/finam-book/development/performance.rst
@@ -116,16 +116,23 @@ The limit and file location can be set for all slots of the composition:
         modules=[comp_a, comp_b],
         slot_memory_limit=256 * 2**20, # 256MB
         slot_memory_location="temp_dir",
-    )
+    ) # doctest: +ELLIPSIS
+
+.. testoutput:: memory-limit
+    :hide:
+
+    ...
 
 Both properties can also be set for individual :class:`.Output` and :class:`.Adapter` objects:
 
 .. testcode:: memory-limit
 
-    comp = finam.Composition([comp_a, comp_b])
-    comp.initialize()
+    comp_a = finam.modules.SimplexNoise()
+    comp_b = finam.modules.SimplexNoise()
+
+    comp = finam.Composition([comp_a, comp_b]) # doctest: +ELLIPSIS
 
-    comp_a.outputs["Noise"].memory_limit = 256 * 2**20, # 256MB doctest: +ELLIPSIS
+    comp_a.outputs["Noise"].memory_limit = 256 * 2**20 # 256MB
 
 .. testoutput:: memory-limit
     :hide:
diff --git a/docs/source/finam-book/development/special_components.rst b/docs/source/finam-book/development/special_components.rst
index 17b52a4b70300bdc4f56c036c29549c4c8843b92..f11571e6dd2a5a4149f37e85fddbe7c73f15996b 100644
--- a/docs/source/finam-book/development/special_components.rst
+++ b/docs/source/finam-book/development/special_components.rst
@@ -78,7 +78,6 @@ Push-based components can use :class:`.CallbackInput` to get informed about inco
     push_comp = PushComponent()
 
     comp = fm.Composition([generator, push_comp])
-    comp.initialize()
 
     generator.outputs["Value"] >> push_comp.inputs["Input"]
 
@@ -153,7 +152,6 @@ Push-based components can use :class:`.CallbackOutput` to intercept data pulls.
     )
 
     comp = fm.Composition([pull_comp, consumer])
-    comp.initialize()
 
     pull_comp.outputs["Output"] >> consumer.inputs["Input"]
 
diff --git a/docs/source/finam-book/usage/coupling_scripts.rst b/docs/source/finam-book/usage/coupling_scripts.rst
index b3b03e9736539a34cfcf4b83737e0386e305fcee..d3d708021c8f2d123de185d3eedba230a5df030b 100644
--- a/docs/source/finam-book/usage/coupling_scripts.rst
+++ b/docs/source/finam-book/usage/coupling_scripts.rst
@@ -36,9 +36,6 @@ Here is a simple example coupling two components:
     # Create a `Composition` containing all components
     composition = fm.Composition([generator, consumer])
 
-    # Initialize the `Composition`
-    composition.initialize()
-
     # Couple inputs to outputs
     generator.outputs["Noise"] >> consumer.inputs["Value"]
 
@@ -63,7 +60,7 @@ Note:
 The typical steps in a script are:
 
 #. Instantiate components and adapters (see next example)
-#. Create a :class:`.Composition` and initialize it
+#. Create a :class:`.Composition`
 #. Connect outputs to inputs using the overloaded ``>>`` operator (:meth:`.IOutput.__rshift__`)
 #. Run the :class:`.Composition`
 
@@ -133,9 +130,6 @@ time steps and an adapter:
     # Create a `Composition` containing all components
     composition = fm.Composition([generator, consumer_1, consumer_2])
 
-    # Initialize the `Composition`
-    composition.initialize()
-
     # Couple inputs to outputs, without an adapter
     (
         generator.outputs["Noise"]
@@ -234,7 +228,12 @@ You can configure the base logger when creating the :class:`.Composition` as sho
         print_log=True,
         log_file=True,
         log_level=logging.INFO,
-    )
+    ) # doctest: +ELLIPSIS
+
+.. testoutput:: composition
+    :hide:
+
+    ...
 
 There you have several options:
 
diff --git a/pyproject.toml b/pyproject.toml
index 631cb2716ba32cec67edf1afaa720970af87b1a2..71049752160d0f1bdcaf6fd381574043f0cf8587 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -147,3 +147,4 @@ multi_line_output = 3
     max-parents = 10
     min-public-methods = 0
     max-public-methods = 25
+    max-positional-arguments=15
diff --git a/src/finam/schedule.py b/src/finam/schedule.py
index 1025c0fe43ebad634c84b64960ec0ed259a1a1ff..ba4d79a7daec794e0dacb2b5a0ec2b34722dc22d 100644
--- a/src/finam/schedule.py
+++ b/src/finam/schedule.py
@@ -9,6 +9,7 @@ Composition
 
     :noindex: Composition
 """
+
 import logging
 import os
 import sys
@@ -54,7 +55,6 @@ class Composition(Loggable):
         comp_b = AnotherComponent(...)
 
         composition = Composition([comp_a, comp_b])
-        composition.initialize()
 
         comp_b.outputs["Out"] >> SomeAdapter() >> comp_b.inputs["In"]
 
@@ -123,7 +123,6 @@ class Composition(Loggable):
         self._dependencies = None
         self._input_owners = None
         self._output_owners = None
-        self._is_initialized = False
         self._is_connected = False
 
         self._time_frame = (None, None)
@@ -131,14 +130,8 @@ class Composition(Loggable):
         self._slot_memory_limit = slot_memory_limit
         self._slot_memory_location = slot_memory_location
 
-    def initialize(self):
-        """Initialize all modules.
-
-        After the call, module inputs and outputs are available for linking.
-        """
+        # initialize
         self.logger.info("init composition")
-        if self._is_initialized:
-            raise FinamStatusError("Composition was already initialized.")
 
         for mod in self._modules:
             self._check_status(mod, [ComponentStatus.CREATED])
@@ -163,8 +156,6 @@ class Composition(Loggable):
 
             self._check_status(mod, [ComponentStatus.INITIALIZED])
 
-        self._is_initialized = True
-
     def connect(self, start_time=None):
         """Performs the connect and validate phases of the composition
 
diff --git a/tests/adapters/test_regrid.py b/tests/adapters/test_regrid.py
index c3045936b3948bc4e25d06a39f5048713f3823e7..eef59c9e8d2fdd9eebd8a42863cba3a514cc1594 100644
--- a/tests/adapters/test_regrid.py
+++ b/tests/adapters/test_regrid.py
@@ -57,7 +57,6 @@ class TestRegrid(unittest.TestCase):
         )
 
         composition = Composition([source, sink], log_level="DEBUG")
-        composition.initialize()
 
         (source.outputs["Output"] >> RegridNearest() >> sink.inputs["Input"])
 
@@ -108,7 +107,6 @@ class TestRegrid(unittest.TestCase):
         )
 
         composition = Composition([source, sink], log_level="DEBUG")
-        composition.initialize()
 
         (source.outputs["Output"] >> RegridNearest() >> sink.inputs["Input"])
 
@@ -153,7 +151,6 @@ class TestRegrid(unittest.TestCase):
         )
 
         composition = Composition([source, sink])
-        composition.initialize()
 
         (source.outputs["Output"] >> RegridNearest() >> sink.inputs["Input"])
 
@@ -197,7 +194,6 @@ class TestRegrid(unittest.TestCase):
         )
 
         composition = Composition([source, sink])
-        composition.initialize()
 
         (source.outputs["Output"] >> RegridLinear() >> sink.inputs["Input"])
 
@@ -245,7 +241,6 @@ class TestRegrid(unittest.TestCase):
         )
 
         composition = Composition([source, sink], log_level="DEBUG")
-        composition.initialize()
 
         (
             source.outputs["Output"]
@@ -288,7 +283,6 @@ class TestRegrid(unittest.TestCase):
         )
 
         composition = Composition([source, sink])
-        composition.initialize()
 
         (
             source.outputs["Output"]
@@ -333,7 +327,6 @@ class TestRegrid(unittest.TestCase):
         )
 
         composition = Composition([source, sink])
-        composition.initialize()
 
         (
             source.outputs["Output"]
@@ -377,7 +370,6 @@ class TestRegrid(unittest.TestCase):
         )
 
         composition = Composition([source, sink])
-        composition.initialize()
 
         (source.outputs["Output"] >> RegridLinear() >> sink.inputs["Input"])
 
@@ -424,7 +416,6 @@ class TestRegrid(unittest.TestCase):
         regrid = RegridLinear()
 
         composition = Composition([source, sink_1, sink_2])
-        composition.initialize()
 
         source.outputs["Output"] >> regrid
         regrid >> sink_1.inputs["Input"]
@@ -479,7 +470,6 @@ class TestRegrid(unittest.TestCase):
         regrid = RegridLinear()
 
         composition = Composition([source, sink_1, sink_2])
-        composition.initialize()
 
         source.outputs["Output"] >> regrid
         regrid >> sink_1.inputs["Input"]
@@ -530,7 +520,6 @@ class TestRegrid(unittest.TestCase):
         )
 
         composition = Composition([source, sink])
-        composition.initialize()
 
         (
             source.outputs["Output"]
diff --git a/tests/adapters/test_stats.py b/tests/adapters/test_stats.py
index 939057928cbb42db753b653e3f3d8c110684db90..6d689aea59f360223bec5887aa94ce3a86636fdf 100644
--- a/tests/adapters/test_stats.py
+++ b/tests/adapters/test_stats.py
@@ -24,7 +24,6 @@ class TestHistogram(unittest.TestCase):
         )
 
         composition = fm.Composition([source, sink])
-        composition.initialize()
 
         (
             source.outputs["Noise"]
diff --git a/tests/adapters/test_time_integration.py b/tests/adapters/test_time_integration.py
index 088860c5475a026707f46a008d76f052db74d39c..624f7da065210bca3d78f4566e4644098e7fd37d 100644
--- a/tests/adapters/test_time_integration.py
+++ b/tests/adapters/test_time_integration.py
@@ -196,7 +196,6 @@ class TestSumOverTime(unittest.TestCase):
         )
 
         self.comp = fm.Composition([self.source, self.consumer])
-        self.comp.initialize()
 
         self.source["Step"] >> self.adapter_lin >> self.consumer["In_lin"]
         self.source["Step"] >> self.adapter_00 >> self.consumer["In_00"]
@@ -284,7 +283,6 @@ class TestAbsSumOverTime(unittest.TestCase):
         )
 
         self.comp = fm.Composition([self.source, self.consumer])
-        self.comp.initialize()
 
         self.source["Step"] >> self.adapter_lin >> self.consumer["In_lin"]
         self.source["Step"] >> self.adapter_00 >> self.consumer["In_00"]
diff --git a/tests/core/test_propagate_info.py b/tests/core/test_propagate_info.py
index eb5240a525804f0e14be646f1a8ebb72591405e0..7ecb64dbc19fe6fa1bbc9ab486842cfdb6ab701a 100644
--- a/tests/core/test_propagate_info.py
+++ b/tests/core/test_propagate_info.py
@@ -100,7 +100,6 @@ class TestPropagate(unittest.TestCase):
         )
 
         composition = Composition([source, sink])
-        composition.initialize()
 
         (source.outputs["Output"] >> SpecAdapter() >> sink.inputs["Input"])
 
@@ -129,7 +128,6 @@ class TestPropagate(unittest.TestCase):
         )
 
         composition = Composition([source, sink])
-        composition.initialize()
 
         source.outputs["Output"] >> sink.inputs["Input"]
 
@@ -154,7 +152,6 @@ class TestPropagate(unittest.TestCase):
         )
 
         composition = Composition([source, sink])
-        composition.initialize()
 
         source.outputs["Output"] >> sink.inputs["Input"]
 
@@ -181,7 +178,6 @@ class TestPropagate(unittest.TestCase):
         )
 
         composition = Composition([source, sink])
-        composition.initialize()
 
         source.outputs["Output"] >> sink.inputs["Input"]
 
diff --git a/tests/core/test_pull_based_component.py b/tests/core/test_pull_based_component.py
index 7266671827709b38e0ecb1776235af8fe1c7d615..0dcca3da9d3259a69de08b0b176fec7affe7a1ef 100644
--- a/tests/core/test_pull_based_component.py
+++ b/tests/core/test_pull_based_component.py
@@ -49,7 +49,6 @@ class TestPullBasedComponent(unittest.TestCase):
         )
 
         composition = fm.Composition([pull_comp, consumer], log_level="DEBUG")
-        composition.initialize()
 
         pull_comp.outputs["Out"] >> consumer.inputs["In"]
 
diff --git a/tests/core/test_schedule.py b/tests/core/test_schedule.py
index 813beb0f030d505770d5498be378183bfc8634ed..c8022b344a81d97c6f022796cf948b784829422c 100644
--- a/tests/core/test_schedule.py
+++ b/tests/core/test_schedule.py
@@ -184,7 +184,6 @@ class TestComposition(unittest.TestCase):
     def test_init(self):
         module = MockupComponent(callbacks={"Output": lambda t: t}, step=timedelta(1.0))
         composition = Composition([module])
-        composition.initialize()
 
         self.assertEqual(module.status, ComponentStatus.INITIALIZED)
         self.assertEqual(len(module.outputs), 1)
@@ -196,7 +195,6 @@ class TestComposition(unittest.TestCase):
     def test_validate_branching(self):
         module = MockupComponent(callbacks={"Output": lambda t: t}, step=timedelta(1.0))
         composition = Composition([module])
-        composition.initialize()
 
         non_branching_adapter = (
             module.outputs["Output"]
@@ -275,7 +273,6 @@ class TestComposition(unittest.TestCase):
             step=timedelta(days=1),
         )
         composition = Composition([module])
-        composition.initialize()
 
         with self.assertRaises(FinamConnectError) as context:
             composition._validate_composition()
@@ -294,7 +291,6 @@ class TestComposition(unittest.TestCase):
             composition = Composition(
                 [module2, module1], log_level=logging.DEBUG, log_file=log_file
             )
-            composition.initialize()
 
             module1.outputs["Output"] >> module2.inputs["Input"]
 
@@ -313,7 +309,6 @@ class TestComposition(unittest.TestCase):
         module2 = MockupDependentComponent(step=timedelta(1.0))
 
         composition = Composition([module2, module1])
-        composition.initialize()
 
         ada = fm.adapters.Scale(1.0)
         module1.outputs["Output"] >> ada >> module2.inputs["Input"]
@@ -327,27 +322,15 @@ class TestComposition(unittest.TestCase):
             callbacks={"Output": lambda t: t}, step=timedelta(1.0)
         )
         composition = Composition([module1])
-        composition.initialize()
 
         with self.assertRaises(ValueError):
             composition.run(start_time=0, end_time=100)
 
-    def test_fail_double_initialize(self):
-        module1 = MockupComponent(
-            callbacks={"Output": lambda t: t}, step=timedelta(1.0)
-        )
-        composition = Composition([module1])
-        composition.initialize()
-
-        with self.assertRaises(FinamStatusError):
-            composition.initialize()
-
     def test_fail_double_connect(self):
         module1 = MockupComponent(
             callbacks={"Output": lambda t: t}, step=timedelta(1.0)
         )
         composition = Composition([module1])
-        composition.initialize()
         composition.connect(datetime(2000, 1, 1))
 
         with self.assertRaises(FinamStatusError):
@@ -364,7 +347,6 @@ class TestComposition(unittest.TestCase):
         module2 = MockupDependentComponent(step=timedelta(1.0))
 
         composition = Composition([module2, module1])
-        composition.initialize()
 
         module1.outputs["Output"] >> module2.inputs["Input"]
 
@@ -378,7 +360,6 @@ class TestComposition(unittest.TestCase):
         module3 = MockupDependentComponent(step=timedelta(1.0))
 
         composition = Composition([module3, module2, module1])
-        composition.initialize()
 
         module1.outputs["Output"] >> module2.inputs["Input"]
         module2.outputs["Output"] >> module3.inputs["Input"]
@@ -392,7 +373,6 @@ class TestComposition(unittest.TestCase):
         module2 = MockupDependentComponent(step=timedelta(1.0))
 
         composition = Composition([module2, module1])
-        composition.initialize()
 
         module1.outputs["Output"] >> Scale(1.0) >> module2.inputs["Input"]
 
@@ -405,7 +385,6 @@ class TestComposition(unittest.TestCase):
         module2 = MockupDependentComponent(step=timedelta(1.0))
 
         composition = Composition([module2, module1])
-        composition.initialize()
 
         module1.outputs["Output"] >> Scale(1.0) >> Scale(1.0) >> module2.inputs["Input"]
 
@@ -416,7 +395,6 @@ class TestComposition(unittest.TestCase):
         module2 = MockupCircularComponent(step=timedelta(1.0))
 
         composition = Composition([module1, module2])
-        composition.initialize()
 
         module1.outputs["Output"] >> module2.inputs["Input"]
         module2.outputs["Output"] >> module1.inputs["Input"]
@@ -430,7 +408,6 @@ class TestComposition(unittest.TestCase):
         module = NoTimeComponent()
 
         composition = Composition([module])
-        composition.initialize()
 
         with self.assertRaises(ValueError):
             composition.run(end_time=datetime(2000, 1, 31))
@@ -441,7 +418,6 @@ class TestComposition(unittest.TestCase):
         module = MockupComponent(callbacks={"Output": lambda t: t}, step=timedelta(1.0))
 
         composition = Composition([module])
-        composition.initialize()
 
         with self.assertRaises(ValueError):
             composition.run(end_time=None)
@@ -456,7 +432,6 @@ class TestComposition(unittest.TestCase):
             callbacks={"Output": lambda t: 1.0}, step=timedelta(days=31)
         )
         composition = Composition([module1, module2])
-        composition.initialize()
         composition.run(start_time=datetime(2000, 1, 1), end_time=datetime(2000, 1, 1))
 
     def test_missing_component_upstream(self):
@@ -466,7 +441,6 @@ class TestComposition(unittest.TestCase):
         module2 = MockupDependentComponent(step=timedelta(1.0))
 
         composition = Composition([module2])
-        composition.initialize()
 
         module1.outputs["Output"] >> Scale(1.0) >> Scale(1.0) >> module2.inputs["Input"]
 
@@ -482,7 +456,6 @@ class TestComposition(unittest.TestCase):
         module2 = MockupDependentComponent(step=timedelta(1.0))
 
         composition = Composition([module1])
-        composition.initialize()
 
         module1.outputs["Output"] >> Scale(1.0) >> Scale(1.0) >> module2.inputs["Input"]
 
@@ -496,7 +469,6 @@ class TestComposition(unittest.TestCase):
         module2 = MockupDependentComponent(step=timedelta(1.0))
 
         composition = Composition([module1, module2])
-        composition.initialize()
 
         module1.outputs["Output"] >> Scale(1.0) >> module2.inputs["Input"]
 
@@ -531,7 +503,6 @@ class TestComposition(unittest.TestCase):
         module4 = MockupDependentComponent(step=timedelta(1.0))
 
         composition = Composition([module1, module2, module3, module4])
-        composition.initialize()
 
         module1.outputs["Output"] >> Scale(1.0) >> module2.inputs["Input"]
         module1.outputs["Output"] >> Scale(1.0) >> module3.inputs["Input"]
@@ -593,7 +564,6 @@ class TestComposition(unittest.TestCase):
         )
 
         composition = Composition([source, sink])
-        composition.initialize()
 
         source.outputs["Noise"] >> Scale(1.0) >> sink.inputs["In"]
 
@@ -612,7 +582,6 @@ class TestComposition(unittest.TestCase):
         sink = MockupDependentComponent(step=timedelta(days=1), static=True)
 
         composition = Composition([source, sink])
-        composition.initialize()
 
         source.outputs["Noise"] >> Scale(1.0) >> sink.inputs["Input"]
 
@@ -665,7 +634,6 @@ class TestComposition(unittest.TestCase):
             step=timedelta(days=8),
         )
         composition = Composition([module1, module2, module3])
-        composition.initialize()
 
         module1.outputs["Out"] >> Scale(1.0) >> module2.inputs["In"]
         module2.outputs["Out"] >> Scale(1.0) >> module3.inputs["In"]
@@ -729,7 +697,6 @@ class TestComposition(unittest.TestCase):
             step=timedelta(days=1),
         )
         composition = Composition([module1, module2])
-        composition.initialize()
 
         module1.outputs["Out"] >> Scale(1.0) >> module2.inputs["In"]
 
@@ -792,7 +759,6 @@ class TestComposition(unittest.TestCase):
             step=timedelta(days=1),
         )
         composition = Composition([module1, module2])
-        composition.initialize()
 
         module1.outputs["Out1"] >> Scale(1.0) >> module2.inputs["In1"]
         module1.outputs["Out2"] >> Scale(1.0) >> module2.inputs["In2"]
@@ -842,7 +808,6 @@ class TestComposition(unittest.TestCase):
             initial_pull=False,
         )
         composition = Composition([module1, module2])
-        composition.initialize()
 
         module1.outputs["Out"] >> Scale(1.0) >> module2.inputs["In"]
         module2.outputs["Out"] >> Scale(1.0) >> module1.inputs["In"]
@@ -895,7 +860,6 @@ class TestComposition(unittest.TestCase):
         )
 
         composition = Composition([module1, module2, module3])
-        composition.initialize()
 
         module1.outputs["Out"] >> Scale(1.0) >> module2.inputs["In"]
         module1.outputs["Out"] >> Scale(1.0) >> module3.inputs["A"]
@@ -951,7 +915,6 @@ class TestComposition(unittest.TestCase):
         )
 
         composition = Composition([module1, module2, module3])
-        composition.initialize()
 
         module1.outputs["Out"] >> Scale(1.0) >> module2.inputs["In"]
         module1.outputs["Out"] >> Scale(1.0) >> module3.inputs["A"]
@@ -972,7 +935,6 @@ class TestComposition(unittest.TestCase):
         module3 = MockupDependentComponent(step=timedelta(1.0))
 
         composition = Composition([module2, module1, module3])
-        composition.initialize()
 
         ada1 = fm.adapters.Scale(1.0)
         ada2 = fm.adapters.Scale(1.0)
diff --git a/tests/core/test_sdk.py b/tests/core/test_sdk.py
index 8679f0b158a88f2096e1cbfcbc378ef1cada94a5..4072eb1160cd55f680ed9496fe7eb48f575bb0a8 100644
--- a/tests/core/test_sdk.py
+++ b/tests/core/test_sdk.py
@@ -85,15 +85,12 @@ class TestComponent(unittest.TestCase):
         self.assertEqual(component.time, datetime(2000, 1, 1))
         self.assertEqual(component.status, ComponentStatus.CREATED)
 
-        composition = Composition([component])
-
         with self.assertRaises(FinamStatusError):
-            composition.initialize()
+            Composition([component])
 
     def test_connect_helper(self):
         component = MockupComponentIO()
         composition = Composition([component])
-        composition.initialize()
 
         component.create_connector()
 
diff --git a/tests/core/test_units.py b/tests/core/test_units.py
index bd0b870df3b38fa814871740977b89818032dcfd..2caddd0161677f6b0c71794ca450721b425b0724 100644
--- a/tests/core/test_units.py
+++ b/tests/core/test_units.py
@@ -75,7 +75,6 @@ class TestUnits(unittest.TestCase):
         sink = MockupConsumer(datetime(2000, 1, 1), UNITS.kilometer)
 
         composition = Composition([source, sink])
-        composition.initialize()
 
         (source.outputs["Output"] >> sink.inputs["Input"])
 
@@ -108,7 +107,6 @@ class TestUnits(unittest.TestCase):
         sink = MockupConsumer(datetime(2000, 1, 1), UNITS.seconds)
 
         composition = Composition([source, sink])
-        composition.initialize()
 
         (source.outputs["Output"] >> sink.inputs["Input"])
 
diff --git a/tests/data/test_masked.py b/tests/data/test_masked.py
index e5487e340bcc6cd2d6b46610a4aadcdad9270389..464c2d46a0ce110ea076eaa5eed7ca90533d6987 100644
--- a/tests/data/test_masked.py
+++ b/tests/data/test_masked.py
@@ -50,7 +50,6 @@ class TestMasked(unittest.TestCase):
         )
 
         composition = fm.Composition([source, sink])
-        composition.initialize()
         source.outputs["Output"] >> fm.adapters.Scale(scale=2.0) >> sink.inputs["Input"]
         composition.connect()
 
diff --git a/tests/modules/test_callback.py b/tests/modules/test_callback.py
index bb865bf7e44de0190004468040ec28df565f24a3..f462c5744949ef076b7da1b214575a319715673e 100644
--- a/tests/modules/test_callback.py
+++ b/tests/modules/test_callback.py
@@ -47,7 +47,6 @@ class TestCallback(unittest.TestCase):
         )
 
         composition = Composition([source, trans, consumer])
-        composition.initialize()
 
         _ = source.outputs["Out1"] >> trans.inputs["In1"]
         _ = trans.outputs["Out1"] >> consumer.inputs["In1"]
diff --git a/tests/modules/test_control.py b/tests/modules/test_control.py
index b84ebf01b3d4bd5a6caeb713eefcd5e29334e984..6c064d571640cdd4e2f7cc1b64938f790d750107 100644
--- a/tests/modules/test_control.py
+++ b/tests/modules/test_control.py
@@ -26,7 +26,6 @@ class TestTimeTrigger(unittest.TestCase):
         )
 
         composition = fm.Composition([source, trigger, sink])
-        composition.initialize()
 
         source.outputs["Noise"] >> trigger.inputs["In"]
         trigger.outputs["Out"] >> sink.inputs["Input"]
@@ -66,7 +65,6 @@ class TestTimeTrigger(unittest.TestCase):
         )
 
         composition = fm.Composition([source, trigger, sink])
-        composition.initialize()
 
         source.outputs["Out"] >> trigger.inputs["In"]
         trigger.outputs["Out"] >> sink.inputs["Input"]
@@ -109,7 +107,6 @@ class TestTimeTrigger(unittest.TestCase):
         )
 
         composition = fm.Composition([source, trigger, sink])
-        composition.initialize()
 
         source.outputs["Out"] >> trigger.inputs["In"]
         trigger.outputs["Out"] >> sink.inputs["Input"]
@@ -143,7 +140,6 @@ class TestTimeTrigger(unittest.TestCase):
         )
 
         composition = fm.Composition([source, trigger, sink])
-        composition.initialize()
 
         source.outputs["Noise"] >> trigger.inputs["In"]
         trigger.outputs["Out"] >> sink.inputs["Input"]
@@ -178,7 +174,6 @@ class TestTimeTrigger(unittest.TestCase):
         )
 
         composition = fm.Composition([source, trigger, sink])
-        composition.initialize()
 
         source.outputs["Noise"] >> trigger.inputs["In"]
         trigger.outputs["Out"] >> sink.inputs["Input"]
diff --git a/tests/modules/test_csv_writer.py b/tests/modules/test_csv_writer.py
index 8f7b5908e74b867a3f1e82427e522ab062c56057..b200f4825f3553b0dad89e4a0f0101ec54a14bda 100644
--- a/tests/modules/test_csv_writer.py
+++ b/tests/modules/test_csv_writer.py
@@ -37,7 +37,6 @@ class TestCsvWriter(unittest.TestCase):
             )
 
             comp = Composition([generator, writer])
-            comp.initialize()
 
             generator.outputs["A"] >> writer.inputs["A"]
             generator.outputs["B"] >> writer.inputs["B"]
diff --git a/tests/modules/test_debug.py b/tests/modules/test_debug.py
index 09bd12cc7ef828e7d7998914677aeb8f26c3c4eb..7140e682ee5fe05544a1cf6b24746670843b664c 100644
--- a/tests/modules/test_debug.py
+++ b/tests/modules/test_debug.py
@@ -48,7 +48,6 @@ class TestScheduleLogger(unittest.TestCase):
         )
 
         composition = fm.Composition([module1, module2, module3, schedule])
-        composition.initialize()
 
         module1.outputs["Out"] >> fm.adapters.Scale(1.0) >> module2.inputs["In"]
         module2.outputs["Out"] >> fm.adapters.Scale(1.0) >> module3.inputs["In"]
@@ -82,7 +81,6 @@ class TestPushDebugConsumer(unittest.TestCase):
         )
 
         composition = fm.Composition([module1, consumer])
-        composition.initialize()
 
         module1.outputs["Out"] >> consumer.inputs["In"]
 
diff --git a/tests/modules/test_generator.py b/tests/modules/test_generator.py
index db2f14b11d04a8f8959ac3c8dd825f82fe53b49b..cada5a3973c01546f804a296aa7422695ff735cf 100644
--- a/tests/modules/test_generator.py
+++ b/tests/modules/test_generator.py
@@ -28,7 +28,6 @@ class TestStaticCallbackGenerator(unittest.TestCase):
         )
 
         composition = Composition([source, consumer])
-        composition.initialize()
 
         _ = source.outputs["Out1"] >> fm.adapters.Scale(2.0) >> consumer.inputs["In1"]
 
diff --git a/tests/modules/test_noise.py b/tests/modules/test_noise.py
index bc1d7f1a5d7c90a5face9822f4e85ff8edd2917a..1366134fe3ea8eeb724b14c6550922669d2a80a1 100644
--- a/tests/modules/test_noise.py
+++ b/tests/modules/test_noise.py
@@ -28,7 +28,6 @@ class TestNoise(unittest.TestCase):
         )
 
         composition = fm.Composition([source, trigger, sink])
-        composition.initialize()
 
         source.outputs["Noise"] >> trigger.inputs["In"]
         trigger.outputs["Out"] >> sink.inputs["Input"]
@@ -60,7 +59,6 @@ class TestNoise(unittest.TestCase):
         )
 
         composition = fm.Composition([source, trigger, sink])
-        composition.initialize()
 
         source.outputs["Noise"] >> trigger.inputs["In"]
         trigger.outputs["Out"] >> sink.inputs["Input"]
@@ -92,7 +90,6 @@ class TestNoise(unittest.TestCase):
         )
 
         composition = fm.Composition([source, trigger, sink])
-        composition.initialize()
 
         source.outputs["Noise"] >> trigger.inputs["In"]
         trigger.outputs["Out"] >> sink.inputs["Input"]
@@ -124,7 +121,6 @@ class TestNoise(unittest.TestCase):
         )
 
         composition = fm.Composition([source, trigger, sink])
-        composition.initialize()
 
         source.outputs["Noise"] >> trigger.inputs["In"]
         trigger.outputs["Out"] >> sink.inputs["Input"]
@@ -156,7 +152,6 @@ class TestNoise(unittest.TestCase):
         )
 
         composition = fm.Composition([source, trigger, sink])
-        composition.initialize()
 
         source.outputs["Noise"] >> trigger.inputs["In"]
         trigger.outputs["Out"] >> sink.inputs["Input"]
@@ -188,7 +183,6 @@ class TestNoise(unittest.TestCase):
         )
 
         composition = fm.Composition([source, trigger, sink])
-        composition.initialize()
 
         source.outputs["Noise"] >> trigger.inputs["In"]
         trigger.outputs["Out"] >> sink.inputs["Input"]
@@ -220,7 +214,6 @@ class TestNoise(unittest.TestCase):
         )
 
         composition = fm.Composition([source, trigger, sink])
-        composition.initialize()
 
         source.outputs["Noise"] >> trigger.inputs["In"]
         trigger.outputs["Out"] >> sink.inputs["Input"]
@@ -252,7 +245,6 @@ class TestNoise(unittest.TestCase):
         )
 
         composition = fm.Composition([source, trigger, sink])
-        composition.initialize()
 
         source.outputs["Noise"] >> trigger.inputs["In"]
         trigger.outputs["Out"] >> sink.inputs["Input"]
@@ -293,7 +285,6 @@ class TestStaticNoise(unittest.TestCase):
         )
 
         composition = fm.Composition([source, sink])
-        composition.initialize()
 
         source.outputs["Noise"] >> sink.inputs["Input"]
 
diff --git a/tests/modules/test_parametric.py b/tests/modules/test_parametric.py
index c494c3970a834b414c4b8dfd0f974aa4aa7cbe47..10a8ac5a4e1f6bdb3aa14a3f2b4056cadcb85399 100644
--- a/tests/modules/test_parametric.py
+++ b/tests/modules/test_parametric.py
@@ -32,7 +32,6 @@ class TestParametricGrid(unittest.TestCase):
         )
 
         composition = fm.Composition([source, trigger, sink])
-        composition.initialize()
 
         source.outputs["Grid"] >> trigger.inputs["In"]
         trigger.outputs["Out"] >> sink.inputs["Input"]
@@ -68,7 +67,6 @@ class TestParametricGrid(unittest.TestCase):
         )
 
         composition = fm.Composition([source, trigger, sink])
-        composition.initialize()
 
         source.outputs["Grid"] >> trigger.inputs["In"]
         trigger.outputs["Out"] >> sink.inputs["Input"]
@@ -106,7 +104,6 @@ class TestParametricGrid(unittest.TestCase):
         )
 
         composition = fm.Composition([source, trigger, sink])
-        composition.initialize()
 
         source.outputs["Grid"] >> trigger.inputs["In"]
         trigger.outputs["Out"] >> sink.inputs["Input"]
@@ -141,7 +138,6 @@ class TestParametricGrid(unittest.TestCase):
         )
 
         composition = fm.Composition([source, trigger, sink])
-        composition.initialize()
 
         source.outputs["Grid"] >> trigger.inputs["In"]
         trigger.outputs["Out"] >> sink.inputs["Input"]
@@ -177,7 +173,6 @@ class TestParametricGrid(unittest.TestCase):
         )
 
         composition = fm.Composition([source, trigger, sink])
-        composition.initialize()
 
         source.outputs["Grid"] >> trigger.inputs["In"]
         trigger.outputs["Out"] >> sink.inputs["Input"]
@@ -213,7 +208,6 @@ class TestParametricGrid(unittest.TestCase):
         )
 
         composition = fm.Composition([source, trigger, sink])
-        composition.initialize()
 
         source.outputs["Grid"] >> trigger.inputs["In"]
         trigger.outputs["Out"] >> sink.inputs["Input"]
@@ -251,7 +245,6 @@ class TestParametricGrid(unittest.TestCase):
         )
 
         composition = fm.Composition([source, trigger, sink])
-        composition.initialize()
 
         source.outputs["Grid"] >> trigger.inputs["In"]
         trigger.outputs["Out"] >> sink.inputs["Input"]
@@ -280,7 +273,6 @@ class TestStaticParametricGrid(unittest.TestCase):
         )
 
         composition = fm.Composition([source, sink])
-        composition.initialize()
 
         source.outputs["Grid"] >> sink.inputs["Input"]
 
diff --git a/tests/modules/test_simplex_noise.py b/tests/modules/test_simplex_noise.py
index 96fa77c8579fd2f88efdff30475f1bf9f1523fd9..ea3f2af98cac3f794bef53bc495fcbefe6020fb7 100644
--- a/tests/modules/test_simplex_noise.py
+++ b/tests/modules/test_simplex_noise.py
@@ -20,7 +20,6 @@ class TestSimplexNoise(unittest.TestCase):
         )
 
         composition = fm.Composition([source, consumer])
-        composition.initialize()
 
         _ = source.outputs["Noise"] >> consumer.inputs["Noise"]
 
@@ -43,7 +42,6 @@ class TestSimplexNoise(unittest.TestCase):
         )
 
         composition = fm.Composition([source, consumer])
-        composition.initialize()
 
         _ = source.outputs["Noise"] >> consumer.inputs["Noise"]
 
diff --git a/tests/modules/test_weighted_sum.py b/tests/modules/test_weighted_sum.py
index e3df404669329007a70a8f6f4f2c3d8a9cae688f..d934bb2b0f7c1bdf3ed9f13ea6e63e20d80d2508 100644
--- a/tests/modules/test_weighted_sum.py
+++ b/tests/modules/test_weighted_sum.py
@@ -52,7 +52,6 @@ class TestWeightedSum(unittest.TestCase):
         )
 
         composition = fm.Composition([generator1, generator2, merger, consumer])
-        composition.initialize()
 
         generator1.outputs["Value"] >> merger.inputs["In1"]
         generator1.outputs["Weight"] >> merger.inputs["In1_weight"]
@@ -111,7 +110,6 @@ class TestWeightedSum(unittest.TestCase):
         )
 
         composition = fm.Composition([generator1, generator2, merger, consumer])
-        composition.initialize()
 
         generator1.outputs["Value"] >> merger.inputs["In1"]
         generator1.outputs["Weight"] >> merger.inputs["In1_weight"]
@@ -170,7 +168,6 @@ class TestWeightedSum(unittest.TestCase):
         )
 
         composition = fm.Composition([generator1, generator2, merger, consumer])
-        composition.initialize()
 
         generator1.outputs["Value"] >> merger.inputs["In1"]
         generator1.outputs["Weight"] >> merger.inputs["In1_weight"]
@@ -226,7 +223,6 @@ class TestWeightedSum(unittest.TestCase):
         )
 
         composition = fm.Composition([generator1, generator2, merger, consumer])
-        composition.initialize()
 
         generator1.outputs["Value"] >> merger.inputs["In1"]
         generator1.outputs["Weight"] >> merger.inputs["In1_weight"]
@@ -281,7 +277,6 @@ class TestWeightedSum(unittest.TestCase):
         )
 
         composition = fm.Composition([generator1, generator2, merger, consumer])
-        composition.initialize()
 
         generator1.outputs["Value"] >> merger.inputs["In1"]
         generator1.outputs["Weight"] >> merger.inputs["In1_weight"]
@@ -336,7 +331,6 @@ class TestWeightedSum(unittest.TestCase):
         )
 
         composition = fm.Composition([generator1, generator2, merger, consumer])
-        composition.initialize()
 
         generator1.outputs["Value"] >> merger.inputs["In1"]
         generator1.outputs["Weight"] >> merger.inputs["In1_weight"]