diff --git a/emper/strategies/AbstractWorkStealingScheduler.cpp b/emper/strategies/AbstractWorkStealingScheduler.cpp
index 47a89a7a78b6973250895fc550986dfdde044e68..7cd422d56c0fe7b84267e8d01f4c2a10327f3d1f 100644
--- a/emper/strategies/AbstractWorkStealingScheduler.cpp
+++ b/emper/strategies/AbstractWorkStealingScheduler.cpp
@@ -284,3 +284,11 @@ auto AbstractWorkStealingScheduler::nextFiberResultFromMpscQueueOrWorkStealing()
 
 	return nextFiberResultViaWorkStealing();
 }
+
+auto AbstractWorkStealingScheduler::pushBottom(AbstractFiber& fiber) -> bool {
+	auto pushed = queue.pushBottom(&fiber);
+	if (pushed) [[likely]] {
+		onNewWork<CallerEnvironment::EMPER>(emper::FiberHint{emper::FiberSource::local});
+	}
+	return pushed;
+}
diff --git a/emper/strategies/AbstractWorkStealingScheduler.hpp b/emper/strategies/AbstractWorkStealingScheduler.hpp
index f6006cb241c7959c30b9b8ce653f15e54fca6ab7..35f808937305384e206aefbf1de1704712e6e07c 100644
--- a/emper/strategies/AbstractWorkStealingScheduler.hpp
+++ b/emper/strategies/AbstractWorkStealingScheduler.hpp
@@ -5,10 +5,7 @@
 #include <cstddef>	// for size_t
 #include <optional>
 
-#include "CallerEnvironment.hpp"
 #include "Fiber.hpp"
-#include "FiberHint.hpp"
-#include "FiberSource.hpp"
 #include "Scheduler.hpp"
 #include "emper-common.h"
 #include "lib/adt/MpscQueue.hpp"
@@ -48,11 +45,7 @@ class AbstractWorkStealingScheduler : public Scheduler {
 	auto nextFiberResultViaWorkStealing() -> std::optional<NextFiberResult>;
 	auto nextFiberResultFromMpscQueueOrWorkStealing() -> std::optional<NextFiberResult>;
 
-	auto pushBottom(AbstractFiber& fiber) -> bool override {
-		bool res = queue.pushBottom(&fiber);
-		onNewWork<CallerEnvironment::EMPER>(emper::FiberHint{emper::FiberSource::local});
-		return res;
-	}
+	auto pushBottom(AbstractFiber& fiber) -> bool override;
 
 	auto popBottom() -> AbstractFiber* override {
 		AbstractFiber* fiber;