diff --git a/engine/src/Conversion/OscToNode/ParseManeuver.cpp b/engine/src/Conversion/OscToNode/ParseManeuver.cpp
index 4be4d85d3689f08b78ca093943fafd54b35a1571..a56fb6e9833dbcb881d8aa7209bd871f56836f89 100644
--- a/engine/src/Conversion/OscToNode/ParseManeuver.cpp
+++ b/engine/src/Conversion/OscToNode/ParseManeuver.cpp
@@ -13,6 +13,8 @@
 
 #include <memory>
 
+#include <agnostic_behavior_tree/composite/parallel_node.h>
+
 #include "Conversion/OscToNode/ParseEvents.h"
 #include "Node/ManeuverNode.h"
 
@@ -21,8 +23,8 @@ namespace OpenScenarioEngine::v1_3
 yase::BehaviorNode::Ptr parse(std::shared_ptr<NET_ASAM_OPENSCENARIO::v1_3::IManeuver> maneuver)
 {
   auto maneuver_node = std::make_shared<Node::ManeuverNode>("Maneuver");
-
-  maneuver_node->setChild(parse(maneuver->GetEvents()));
+  auto events = parse(maneuver->GetEvents());
+  maneuver_node->AddEvents(std::dynamic_pointer_cast<yase::ParallelNode>(events));
   // parse(maneuver->GetParameterDeclarations())
   return maneuver_node;
 }
diff --git a/engine/src/Node/EventNode.cpp b/engine/src/Node/EventNode.cpp
index a20bbe48b9c2bc0473a6397d39addab8d27369e7..8c03b575b9f64443253ef2c540c4ba7d5a280434 100644
--- a/engine/src/Node/EventNode.cpp
+++ b/engine/src/Node/EventNode.cpp
@@ -17,15 +17,15 @@ EventNode::EventNode(const std::string& name,
                      yase::BehaviorNode::Ptr actions,
                      yase::BehaviorNode::Ptr start_trigger,
                      EventPriority priority)
-    : TriggerableCompositeNode{name}, event_priority_{priority}, start_trigger_{start_trigger}
+    : yase::DecoratorNode{name}, event_priority_{priority}, start_trigger_{std::move(start_trigger)}
 {
-  set(std::move(actions), StopTriggerPtr{nullptr}, StartTriggerPtr{std::move(start_trigger)});
+  setChild(std::move(actions));
 }
 
 void EventNode::lookupAndRegisterData(yase::Blackboard& blackboard)
 {
   event_prioritizer_ = blackboard.get<std::shared_ptr<OpenScenarioEngine::v1_3::IEventPrioritizer> >("EventPrioritizer");
-  event_prioritizer_->RegisterEvent(name(), event_priority_);
+  event_prioritizer_->RegisterEvent(name(), event_priority_, start_trigger_);
 }
 
 yase::NodeStatus EventNode::tick()
@@ -35,14 +35,11 @@ yase::NodeStatus EventNode::tick()
     return yase::NodeStatus::kSuccess;
   }
 
-  auto current_status = TriggerableCompositeNode::tick();
-
   if (start_trigger_->status() == yase::NodeStatus::kSuccess)
   {
-    event_prioritizer_->EventStarted(name());
+    return child().executeTick();
   }
-
-  return current_status;
+  return yase::NodeStatus::kRunning;
 }
 
 }  // namespace OpenScenarioEngine::v1_3::Node
diff --git a/engine/src/Node/EventNode.h b/engine/src/Node/EventNode.h
index 2ea9f955bb194b9385ad3214e52370702fd631f7..c27f7625d063591ceca27309158ab76487afc65a 100644
--- a/engine/src/Node/EventNode.h
+++ b/engine/src/Node/EventNode.h
@@ -12,7 +12,8 @@
 
 #pragma once
 
-#include "Node/TriggerableCompositeNode.h"
+#include <agnostic_behavior_tree/decorator_node.h>
+
 #include "Utils/EventPriority.h"
 #include "Utils/IEventPrioritizer.h"
 
@@ -20,7 +21,7 @@ namespace OpenScenarioEngine::v1_3::Node
 {
 
 /// @brief Runs a list of actions when the start trigger is successful. It can be given a priority to interact with other nodes in the same manevuer.
-class EventNode : public TriggerableCompositeNode
+class EventNode : public yase::DecoratorNode
 {
 public:
   /// @brief Construct a new event node
@@ -34,10 +35,14 @@ public:
             yase::BehaviorNode::Ptr start_trigger = nullptr,
             EventPriority priority = EventPriority::kUnknown);
 
+  virtual ~EventNode() = default;
+
   void lookupAndRegisterData(yase::Blackboard& blackboard) override;
 
   yase::NodeStatus tick() override;
 
+  yase::BehaviorNode::Ptr GetStartTrigger() { return start_trigger_; }
+
 private:
   EventPriority event_priority_;
   yase::BehaviorNode::Ptr start_trigger_;
diff --git a/engine/src/Node/ManeuverNode.cpp b/engine/src/Node/ManeuverNode.cpp
index 30f70cb523c3f555714301d9b32f16226056438b..36c6c83a64565d15908fe24abc9598dec7dd5f67 100644
--- a/engine/src/Node/ManeuverNode.cpp
+++ b/engine/src/Node/ManeuverNode.cpp
@@ -10,19 +10,43 @@
 
 #include "Node/ManeuverNode.h"
 
+#include "Node/EventNode.h"
 #include "Utils/EventPrioritizer.h"
 
 namespace OpenScenarioEngine::v1_3::Node
 {
 ManeuverNode::ManeuverNode(const std::string& name)
-    : yase::DecoratorNode{name}, eventPrioritizer_{std::make_shared<EventPrioritizer>()}
+    : yase::CompositeNode{name}, eventPrioritizer_{std::make_shared<EventPrioritizer>()}
 {
+  start_triggers_ = std::make_shared<yase::ParallelNode>("Event Start Triggers");
+  addChild(start_triggers_);
+}
+
+void ManeuverNode::onInit()
+{
+  for (size_t i = 0; i < events_->childrenCount(); i++)
+  {
+    auto& event = dynamic_cast<EventNode&>(events_->child(i));
+    start_triggers_->addChild(event.GetStartTrigger());
+  }
+
+  std::for_each(m_children_nodes.begin(),
+                m_children_nodes.end(),
+                [](auto&& child)
+                { child->onInit(); });
+}
+
+void ManeuverNode::AddEvents(yase::ParallelNode::Ptr events)
+{
+  events_ = std::move(events);
+  addChild(events_);
 }
 
 yase::NodeStatus ManeuverNode::tick()
 {
+  start_triggers_->executeTick();
   eventPrioritizer_->UpdateOverriddenEvents();
-  return child().executeTick();
+  return events_->executeTick();
 }
 
 void ManeuverNode::lookupAndRegisterData(yase::Blackboard &blackboard)
diff --git a/engine/src/Node/ManeuverNode.h b/engine/src/Node/ManeuverNode.h
index 9fbadfab283e5580f06a6742eebcf8d3924c99e2..b1e6e4d10658a4786a75ad102001937c6f47777a 100644
--- a/engine/src/Node/ManeuverNode.h
+++ b/engine/src/Node/ManeuverNode.h
@@ -10,7 +10,8 @@
 
 #pragma once
 
-#include <agnostic_behavior_tree/decorator_node.h>
+#include <agnostic_behavior_tree/composite/parallel_node.h>
+#include <agnostic_behavior_tree/composite_node.h>
 
 namespace OpenScenarioEngine::v1_3
 {
@@ -20,7 +21,7 @@ namespace Node
 {
 
 /// @brief Runs a list of events. Nodes in the same maneuver can be skipped or overridden based on an event's priority.
-class ManeuverNode : public yase::DecoratorNode
+class ManeuverNode : public yase::CompositeNode
 {
 public:
   /// @brief Construct a new maneuver node
@@ -28,11 +29,18 @@ public:
   /// @param name Name of the maneuver node
   explicit ManeuverNode(const std::string& name);
 
+  virtual ~ManeuverNode() = default;
+
+  void onInit() override;
+
+  void AddEvents(yase::ParallelNode::Ptr events);
 private:
   void lookupAndRegisterData(yase::Blackboard& blackboard) override;
   yase::NodeStatus tick() final;
 
   std::shared_ptr<IEventPrioritizer> eventPrioritizer_;
+  yase::ParallelNode::Ptr start_triggers_;
+  yase::ParallelNode::Ptr events_;
 };
 
 }  // namespace Node
diff --git a/engine/src/Node/TriggerableCompositeNode.h b/engine/src/Node/TriggerableCompositeNode.h
index 5f932de2b5a43f3a8bc14efa981141e7001deefb..cdb89bfb0943093ed920f6329a6769e851e33775 100644
--- a/engine/src/Node/TriggerableCompositeNode.h
+++ b/engine/src/Node/TriggerableCompositeNode.h
@@ -29,6 +29,7 @@ public:
 
   explicit TransientNode(const std::string& name)
       : DecoratorNode{name} {};
+  TransientNode(TransientNode& other) = default;
   ~TransientNode() override = default;
 
   yase::NodeStatus tick() override
@@ -267,4 +268,4 @@ private:
   yase::NodeStatus stop_trigger_status_{yase::NodeStatus::kIdle};
 };
 
-}  // namespace OpenScenarioEngine::v1_3::Node
\ No newline at end of file
+}  // namespace OpenScenarioEngine::v1_3::Node
diff --git a/engine/src/Utils/EventPrioritizer.cpp b/engine/src/Utils/EventPrioritizer.cpp
index eab729afb912581d771d2219d2a350578474b72e..e99575828f68f2f0cd8cca04bf146f6e8e8ea4bb 100644
--- a/engine/src/Utils/EventPrioritizer.cpp
+++ b/engine/src/Utils/EventPrioritizer.cpp
@@ -13,20 +13,11 @@
 namespace OpenScenarioEngine::v1_3
 {
 
-void EventPrioritizer::RegisterEvent(const Event& name, EventPriority priority)
+void EventPrioritizer::RegisterEvent(const Event& name, EventPriority priority, yase::BehaviorNode::Ptr start_trigger)
 {
   event_priorities_.insert({name, priority});
-}
-
-void EventPrioritizer::EventStarted(const Event& name)
-{
-  auto [_, just_started] = started_events_.insert(name);
-  if (just_started &&
-      (event_priorities_.at(name) == EventPriority::kOverride ||
-       event_priorities_.at(name) == EventPriority::kOverwrite))
-  {
-    overriding_event_ = name;
-  }
+  start_triggers_.insert({name, *start_trigger});
+  events_.insert(name);
 }
 
 bool EventPrioritizer::ShouldSkipChild(const Event& name) const
@@ -36,29 +27,48 @@ bool EventPrioritizer::ShouldSkipChild(const Event& name) const
 
 bool EventPrioritizer::ShouldStopChild(const Event& name) const
 {
-  if (auto event = events_to_override_.find(name); event != events_to_override_.end())
+  return (events_to_override_.count(name) > 0);
+}
+
+void EventPrioritizer::UpdateOverriddenEvents()
+{
+  update_started_events();
+  mark_events_overridden();
+  overriding_event_.clear();
+}
+
+void EventPrioritizer::event_started(const Event& name)
+{
+  auto [_, just_started] = started_events_.insert(name);
+  if (just_started &&
+      (event_priorities_.at(name) == EventPriority::kOverride ||
+       event_priorities_.at(name) == EventPriority::kOverwrite))
   {
-    return true;
+    overriding_event_ = name;
   }
-  return false;
 }
 
-void EventPrioritizer::UpdateOverriddenEvents()
+void EventPrioritizer::update_started_events()
 {
-  if (!overriding_event_.empty())
+  for (const auto& event : events_)
   {
-    mark_events_overridden(overriding_event_);
+    if (start_triggers_.at(event).status() == yase::NodeStatus::kSuccess)
+    {
+      event_started(event);
+    }
   }
-  overriding_event_.clear();
 }
 
-void EventPrioritizer::mark_events_overridden(const Event& overriding_event)
+void EventPrioritizer::mark_events_overridden()
 {
-  for (const auto& event : started_events_)
+  if (!overriding_event_.empty())
   {
-    if (event != overriding_event)
+    for (const auto& event : started_events_)
     {
-      events_to_override_.insert(event);
+      if (event != overriding_event_)
+      {
+        events_to_override_.insert(event);
+      }
     }
   }
 }
diff --git a/engine/src/Utils/EventPrioritizer.h b/engine/src/Utils/EventPrioritizer.h
index 774e5bdf8e9198eb0faae37b35c3a2e201fff16b..2b4962be3ab9504ced9f69456e69090483e32e05 100644
--- a/engine/src/Utils/EventPrioritizer.h
+++ b/engine/src/Utils/EventPrioritizer.h
@@ -24,17 +24,20 @@ namespace OpenScenarioEngine::v1_3
 class EventPrioritizer : public IEventPrioritizer
 {
 public:
-  void RegisterEvent(const Event& name, EventPriority priority) override;
-  void EventStarted(const Event& name) override;
+  void RegisterEvent(const Event& name, EventPriority priority, yase::BehaviorNode::Ptr start_trigger) override;
   [[nodiscard]] bool ShouldSkipChild(const Event& name) const override;
   [[nodiscard]] bool ShouldStopChild(const Event& name) const override;
   void UpdateOverriddenEvents() override;
 
 private:
-  void mark_events_overridden(const Event& overriding_event);
+  void event_started(const Event& name);
+  void update_started_events();
+  void mark_events_overridden();
 
   std::unordered_map<Event, EventPriority> event_priorities_;
+  std::unordered_map<Event, yase::BehaviorNode&> start_triggers_;
   std::set<Event> started_events_;
+  std::set<Event> events_;
   std::set<Event> events_to_override_;
   Event overriding_event_;
 };
diff --git a/engine/src/Utils/IEventPrioritizer.h b/engine/src/Utils/IEventPrioritizer.h
index a0e18627dbede6e09bd551d764cd1a7695afca8a..61e705f47925fba870d6fc7cce2c839ac664b256 100644
--- a/engine/src/Utils/IEventPrioritizer.h
+++ b/engine/src/Utils/IEventPrioritizer.h
@@ -13,6 +13,8 @@
 #include <string>
 #include <vector>
 
+#include <agnostic_behavior_tree/behavior_node.h>
+
 #include "Utils/EventPriority.h"
 
 namespace OpenScenarioEngine::v1_3
@@ -32,12 +34,13 @@ public:
   ///
   /// @param name The name of the event
   /// @param priority The priority of the event
-  virtual void RegisterEvent(const Event& name, EventPriority priority) = 0;
+  /// @param start_trigger The start trigger of the event
+  virtual void RegisterEvent(const Event& name, EventPriority priority, yase::BehaviorNode::Ptr start_trigger) = 0;
 
   /// @brief Set the state of an event to started
   ///
   /// @param name The name of the event
-  virtual void EventStarted(const Event& name) = 0;
+  // virtual void EventStarted(const Event& name) = 0;
 
   /// @brief Check whether an event should be skipped based on the priority
   ///
diff --git a/engine/tests/Node/EventNodeTest.cpp b/engine/tests/Node/EventNodeTest.cpp
index 8023ef7842a402635555b6263b0c55e810fedb32..090d1dcfcf904973ee31cd55282f34f241ef7758 100644
--- a/engine/tests/Node/EventNodeTest.cpp
+++ b/engine/tests/Node/EventNodeTest.cpp
@@ -8,9 +8,9 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-#include <agnostic_behavior_tree/decorator/data_declaration_node.h>
 #include <gmock/gmock.h>
 #include <gtest/gtest.h>
+#include <agnostic_behavior_tree/decorator/data_declaration_node.h>
 
 #include <memory>
 
@@ -60,7 +60,7 @@ protected:
   : root{tree.get_root()}, event_prioritizer{tree.get_event_prioritizer()}
   {
     ON_CALL(event_prioritizer, RegisterEvent).WillByDefault(Return());
-    ON_CALL(*mock_action_node, tick()).WillByDefault(Return(yase::NodeStatus::kSuccess));
+    ON_CALL(*mock_action_node, tick()).WillByDefault(Return(yase::NodeStatus::kRunning));
     ON_CALL(*mock_start_trigger, tick()).WillByDefault(Return(yase::NodeStatus::kSuccess));
   }
 
@@ -84,7 +84,6 @@ TEST_F(EventNodeTest, GivenUnstartedNodeWithParallelPriority_WhenParentTicks_The
 
   EXPECT_CALL(event_prioritizer, ShouldStopChild).Times(1).WillOnce(Return(false));
   EXPECT_CALL(event_prioritizer, ShouldSkipChild).Times(1).WillOnce(Return(false));
-  EXPECT_CALL(event_prioritizer, EventStarted).Times(1).WillOnce(Return());
   ASSERT_THAT(root.executeTick(), yase::NodeStatus::kRunning);
 }
 
@@ -96,7 +95,6 @@ TEST_F(EventNodeTest, GivenUnstartedNodeWithOverridePriority_WhenParentTicks_The
 
   EXPECT_CALL(event_prioritizer, ShouldStopChild).Times(1).WillOnce(Return(false));
   EXPECT_CALL(event_prioritizer, ShouldSkipChild).Times(1).WillOnce(Return(false));
-  EXPECT_CALL(event_prioritizer, EventStarted).Times(1).WillOnce(Return());
   ASSERT_THAT(root.executeTick(), yase::NodeStatus::kRunning);
 }
 
@@ -108,7 +106,6 @@ TEST_F(EventNodeTest, GivenUnstartedNodeWithOverwritePriority_WhenParentTicks_Th
 
   EXPECT_CALL(event_prioritizer, ShouldStopChild).Times(1).WillOnce(Return(false));
   EXPECT_CALL(event_prioritizer, ShouldSkipChild).Times(1).WillOnce(Return(false));
-  EXPECT_CALL(event_prioritizer, EventStarted).Times(1).WillOnce(Return());
   ASSERT_THAT(root.executeTick(), yase::NodeStatus::kRunning);
 }
 
@@ -120,7 +117,6 @@ TEST_F(EventNodeTest, GivenUnstartedNodeWithSkipPriority_WhenParentTicks_ThenEve
 
   EXPECT_CALL(event_prioritizer, ShouldStopChild).Times(1).WillOnce(Return(false));
   EXPECT_CALL(event_prioritizer, ShouldSkipChild).Times(1).WillOnce(Return(true));
-  EXPECT_CALL(event_prioritizer, EventStarted).Times(0);
   ASSERT_THAT(root.executeTick(), yase::NodeStatus::kSuccess);
 }
 
@@ -132,6 +128,5 @@ TEST_F(EventNodeTest, GivenStartedNodeWithNonSkipPriority_WhenShouldStopChildAnd
 
   EXPECT_CALL(event_prioritizer, ShouldStopChild).Times(1).WillOnce(Return(true));
   EXPECT_CALL(event_prioritizer, ShouldSkipChild).Times(0);
-  EXPECT_CALL(event_prioritizer, EventStarted).Times(0);
   ASSERT_THAT(root.executeTick(), yase::NodeStatus::kSuccess);
 }
diff --git a/engine/tests/Node/ManeuverNodeTest.cpp b/engine/tests/Node/ManeuverNodeTest.cpp
index 310adc444e71af184d54cadc7e055423b4e6aa2b..3629f833653a9897a2edcbd4256d7031309e11e9 100644
--- a/engine/tests/Node/ManeuverNodeTest.cpp
+++ b/engine/tests/Node/ManeuverNodeTest.cpp
@@ -37,11 +37,11 @@ enum class OscStatus : std::uint8_t
 class ManeuverNodeTest : public testing::Test
 {
 protected:
-  using EventWithStartTrigger = std::pair<yase::BehaviorNode&, FakeActionNode&>;
+  using EventWithStartTrigger = std::pair<EventNode&, FakeActionNode&>;
 
   ManeuverNodeTest()
   {
-    maneuver_node->setChild(events_node);
+    maneuver_node->AddEvents(events_node);
   }
 
   EventWithStartTrigger AddEventWithPriority(EventPriority priority)
@@ -61,10 +61,10 @@ protected:
     auto event = std::make_shared<EventNode>("Event " + std::to_string(events_node->childrenCount() + 1), mock_action_node, mock_start_trigger, priority);
     events_node->addChild(event);
 
-    return EventWithStartTrigger{events_node->child(events_node->childrenCount() - 1), *mock_start_trigger};
+    return EventWithStartTrigger{*event, *mock_start_trigger};
   }
 
-  static OscStatus GetEventStatus(const yase::BehaviorNode& event, const FakeActionNode& start_trigger)
+  static OscStatus GetEventStatus(const EventNode& event, const FakeActionNode& start_trigger)
   {
     auto osc_status = OscStatus::kUnknown;
     const auto& event_status = event.status();
@@ -103,6 +103,8 @@ TEST_F(ManeuverNodeTest, GivenMultipleNodesWithParallelPriority_WhenManeuverTick
   auto [event1, start_trigger1] = AddEventWithPriority(EventPriority::kParallel);
   auto [event2, start_trigger2] = AddEventWithPriority(EventPriority::kParallel);
   auto [event3, start_trigger3] = AddEventWithPriority(EventPriority::kParallel);
+
+  maneuver_node->onInit();
   maneuver_node->distributeData();
   maneuver_node->executeTick();
 
@@ -122,6 +124,8 @@ TEST_F(ManeuverNodeTest, GivenMultipleNodesWithParallelorSkipPriority_WhenManeuv
   auto [event1, start_trigger1] = AddEventWithPriority(EventPriority::kParallel);
   auto [event2, start_trigger2] = AddEventWithPriority(EventPriority::kSkip);
   auto [event3, start_trigger3] = AddEventWithPriority(EventPriority::kParallel);
+
+  maneuver_node->onInit();
   maneuver_node->distributeData();
   maneuver_node->executeTick();
 
@@ -137,12 +141,13 @@ TEST_F(ManeuverNodeTest, GivenMultipleNodesWithOneOverridePriority_WhenManeuverT
   auto [event3, start_trigger3] = AddEventWithPriority(EventPriority::kParallel);
   auto [event4, start_trigger4] = AddEventWithPriority(EventPriority::kOverride);
 
+  maneuver_node->onInit();
   maneuver_node->distributeData();
   maneuver_node->executeTick();
 
-  EXPECT_THAT(GetEventStatus(event1, start_trigger1), OscStatus::kRunning);
+  EXPECT_THAT(GetEventStatus(event1, start_trigger1), OscStatus::kSuccess);
   EXPECT_THAT(GetEventStatus(event2, start_trigger2), OscStatus::kSkipped);
-  EXPECT_THAT(GetEventStatus(event3, start_trigger3), OscStatus::kRunning);
+  EXPECT_THAT(GetEventStatus(event3, start_trigger3), OscStatus::kSuccess);
   EXPECT_THAT(GetEventStatus(event4, start_trigger4), OscStatus::kRunning);
 
   maneuver_node->executeTick();
@@ -163,12 +168,13 @@ TEST_F(ManeuverNodeTest, GivenMultipleNodesWithOneOverridePriority_WhenManeuverT
   auto [event3, start_trigger3] = AddEventWithPriority(EventPriority::kParallel);
   auto [event4, start_trigger4] = AddEventWithPriority(EventPriority::kOverride);
 
+  maneuver_node->onInit();
   maneuver_node->distributeData();
   maneuver_node->executeTick();
 
   EXPECT_THAT(GetEventStatus(event1, start_trigger1), OscStatus::kStandby);
   EXPECT_THAT(GetEventStatus(event2, start_trigger2), OscStatus::kSkipped);
-  EXPECT_THAT(GetEventStatus(event3, start_trigger3), OscStatus::kRunning);
+  EXPECT_THAT(GetEventStatus(event3, start_trigger3), OscStatus::kSuccess);
   EXPECT_THAT(GetEventStatus(event4, start_trigger4), OscStatus::kRunning);
 
   maneuver_node->executeTick();
@@ -203,12 +209,13 @@ TEST_F(ManeuverNodeTest, GivenMultipleNodesWithMultipleOverridePriority_WhenMane
     .WillOnce(Return(yase::NodeStatus::kRunning))
     .WillRepeatedly(Return(yase::NodeStatus::kSuccess));
 
+  maneuver_node->onInit();
   maneuver_node->distributeData();
   maneuver_node->executeTick();
 
-  EXPECT_THAT(GetEventStatus(event1, start_trigger1), OscStatus::kRunning);
+  EXPECT_THAT(GetEventStatus(event1, start_trigger1), OscStatus::kSuccess);
   EXPECT_THAT(GetEventStatus(event2, start_trigger2), OscStatus::kSkipped);
-  EXPECT_THAT(GetEventStatus(event3, start_trigger3), OscStatus::kRunning);
+  EXPECT_THAT(GetEventStatus(event3, start_trigger3), OscStatus::kSuccess);
   EXPECT_THAT(GetEventStatus(event4, start_trigger4), OscStatus::kRunning);
   EXPECT_THAT(GetEventStatus(event5, start_trigger5), OscStatus::kStandby);
   EXPECT_THAT(GetEventStatus(event6, start_trigger6), OscStatus::kStandby);
@@ -227,8 +234,8 @@ TEST_F(ManeuverNodeTest, GivenMultipleNodesWithMultipleOverridePriority_WhenMane
   EXPECT_THAT(GetEventStatus(event1, start_trigger1), OscStatus::kSuccess);
   EXPECT_THAT(GetEventStatus(event2, start_trigger2), OscStatus::kSkipped);
   EXPECT_THAT(GetEventStatus(event3, start_trigger3), OscStatus::kSuccess);
-  EXPECT_THAT(GetEventStatus(event4, start_trigger4), OscStatus::kRunning);
-  EXPECT_THAT(GetEventStatus(event5, start_trigger5), OscStatus::kRunning);
+  EXPECT_THAT(GetEventStatus(event4, start_trigger4), OscStatus::kSuccess);
+  EXPECT_THAT(GetEventStatus(event5, start_trigger5), OscStatus::kSuccess);
   EXPECT_THAT(GetEventStatus(event6, start_trigger6), OscStatus::kRunning);
 
   maneuver_node->executeTick();
@@ -249,12 +256,13 @@ TEST_F(ManeuverNodeTest, GivenMultipleNodesWithOneOverwritePriority_WhenManeuver
   auto [event3, start_trigger3] = AddEventWithPriority(EventPriority::kParallel);
   auto [event4, start_trigger4] = AddEventWithPriority(EventPriority::kOverwrite);
 
+  maneuver_node->onInit();
   maneuver_node->distributeData();
   maneuver_node->executeTick();
 
-  EXPECT_THAT(GetEventStatus(event1, start_trigger1), OscStatus::kRunning);
+  EXPECT_THAT(GetEventStatus(event1, start_trigger1), OscStatus::kSuccess);
   EXPECT_THAT(GetEventStatus(event2, start_trigger2), OscStatus::kSkipped);
-  EXPECT_THAT(GetEventStatus(event3, start_trigger3), OscStatus::kRunning);
+  EXPECT_THAT(GetEventStatus(event3, start_trigger3), OscStatus::kSuccess);
   EXPECT_THAT(GetEventStatus(event4, start_trigger4), OscStatus::kRunning);
 
   maneuver_node->executeTick();
diff --git a/engine/tests/TestUtils/MockEventPrioritizer.h b/engine/tests/TestUtils/MockEventPrioritizer.h
index 38f36e0a3d1168df1d818b6fe639292a281f12ab..929ff41f9942c89c3de9bb5cc3b3aba10fea6ec4 100644
--- a/engine/tests/TestUtils/MockEventPrioritizer.h
+++ b/engine/tests/TestUtils/MockEventPrioritizer.h
@@ -19,13 +19,12 @@ namespace testing::OpenScenarioEngine::v1_3
 class MockEventPrioritizer : public ::OpenScenarioEngine::v1_3::IEventPrioritizer
 {
 public:
-  MOCK_METHOD(void, RegisterEvent, (const ::OpenScenarioEngine::v1_3::Event&, ::OpenScenarioEngine::v1_3::EventPriority), (override));
-  MOCK_METHOD(void, EventStarted, (const ::OpenScenarioEngine::v1_3::Event&), (override));
+  MOCK_METHOD(void, RegisterEvent, (const ::OpenScenarioEngine::v1_3::Event&, ::OpenScenarioEngine::v1_3::EventPriority, ::yase::BehaviorNode::Ptr), (override));
   MOCK_METHOD(bool, ShouldSkipChild, (const ::OpenScenarioEngine::v1_3::Event&), (const, override));
   MOCK_METHOD(bool, ShouldStopChild, (const ::OpenScenarioEngine::v1_3::Event&), (const, override));
   MOCK_METHOD(void, UpdateOverriddenEvents, (), (override));
 
-  static inline std::shared_ptr<MockEventPrioritizer> make_shared()
+  static std::shared_ptr<MockEventPrioritizer> make_shared()
   {
     return std::make_shared<MockEventPrioritizer>();
   }