diff --git a/benchmarks/emper_continuation/CMakeLists.txt b/benchmarks/emper_continuation/CMakeLists.txt
index 5277380a2e23f552d5ba68d10575e0d1372f9096..d6473281dbc3ee1baf1a241e77915cfa512d2139 100644
--- a/benchmarks/emper_continuation/CMakeLists.txt
+++ b/benchmarks/emper_continuation/CMakeLists.txt
@@ -37,3 +37,17 @@ target_link_libraries(rectmul_emper_continuation Threads::Threads emper)
 
 add_executable(strassen_emper_continuation ../strassen.cpp)
 target_link_libraries(strassen_emper_continuation Threads::Threads emper)
+
+
+add_test(cholesky cholesky_emper_continuation)
+add_test(fft fft_emper_continuation)
+add_test(fib fib_emper_continuation)
+add_test(heat heat_emper_continuation)
+add_test(integrate integrate_emper_continuation)
+add_test(knapsack knapsack_emper_continuation)
+add_test(lu lu_emper_continuation)
+add_test(matmul matmul_emper_continuation)
+add_test(nqueens nqueens_emper_continuation)
+add_test(quicksort quicksort_emper_continuation)
+add_test(rectmul rectmul_emper_continuation)
+add_test(strassen strassen_emper_continuation)
diff --git a/benchmarks/emper_continuation/emper_continuation.h b/benchmarks/emper_continuation/emper_continuation.h
index fd91f0eb55a454295f9a6f12a83b175a4424c00e..0edac087811c4f378a2c99f1ed8891b908c3bfba 100644
--- a/benchmarks/emper_continuation/emper_continuation.h
+++ b/benchmarks/emper_continuation/emper_continuation.h
@@ -40,47 +40,20 @@ public:
 
 #include "fork.h"
 
-#ifndef EMPER_LOCKED_FIBRIL
-
-#define fibril_fork_nrt(fp, fn, ag) do { \
-	auto _fibril_##fn##_fork = [](_fibril_defs ag fibril_t * f) __attribute__((noinline, hot, optimize(3))) { \
-		(*f)->cont.ip = __builtin_return_address(0); \
-		if (!(*f)->incremented) { \
-			(*f)->incremented = 1; \
-			(*f)->count.fetch_add(1, std::memory_order_relaxed); \
-		} \
-		Runtime* runtime = Runtime::getRuntime(); \
-		runtime->pushBottom(**f); \
-		fn(_fibril_args ag); \
-		if (!runtime->popBottom()) { \
-			(*f)->resume(); \
-		} \
-	}; \
-	membar(_fibril_##fn##_fork(_fibril_expand ag fp)); \
-} while (0);
-
-#define fibril_fork_wrt(fp, rt, fn, ag) do { \
-	auto _fibril_##fn##_fork = [](_fibril_defs ag fibril_t * f, __typeof__(rt) p) __attribute__((noinline, hot, optimize(3))) { \
-		(*f)->cont.ip = __builtin_return_address(0); \
-		if (!(*f)->incremented) { \
-			(*f)->incremented = 1; \
-			(*f)->count.fetch_add(1, std::memory_order_relaxed); \
-		} \
-		Runtime* runtime = Runtime::getRuntime(); \
-		runtime->pushBottom(**f); \
-		*p = fn(_fibril_args ag); \
-		if (!runtime->popBottom()) { \
-			(*f)->resume(); \
-		} \
-	}; \
-	membar(_fibril_##fn##_fork(_fibril_expand ag fp, rt)); \
-} while (0);
-
+#ifdef EMPER_LOCKED_FIBRIL
+#define _fibril_inc_count(f)
 #else
+#define _fibril_inc_count(f) \
+	if (!(*f)->incremented) { \
+		(*f)->incremented = 1; \
+		(*f)->count.fetch_add(1, std::memory_order_relaxed); \
+	}
+#endif
 
 #define fibril_fork_nrt(fp, fn, ag) do { \
 	auto _fibril_##fn##_fork = [](_fibril_defs ag fibril_t * f) __attribute__((noinline, hot, optimize(3))) { \
 		(*f)->cont.ip = __builtin_return_address(0); \
+		_fibril_inc_count(f); \
 		Runtime* runtime = Runtime::getRuntime(); \
 		runtime->pushBottom(**f); \
 		fn(_fibril_args ag); \
@@ -94,6 +67,7 @@ public:
 #define fibril_fork_wrt(fp, rt, fn, ag) do { \
 	auto _fibril_##fn##_fork = [](_fibril_defs ag fibril_t * f, __typeof__(rt) p) __attribute__((noinline, hot, optimize(3))) { \
 		(*f)->cont.ip = __builtin_return_address(0); \
+		_fibril_inc_count(f); \
 		Runtime* runtime = Runtime::getRuntime(); \
 		runtime->pushBottom(**f); \
 		*p = fn(_fibril_args ag); \
@@ -104,7 +78,6 @@ public:
 	membar(_fibril_##fn##_fork(_fibril_expand ag fp, rt)); \
 } while (0);
 
-#endif
 
 #define fibril_rt_init(n) Runtime runtime; runtime.executeAndWait([&] () {
 //#define fibril_rt_init(n) Runtime runtime(2); runtime.executeAndWait([&] () {