Index: src/libcfa/concurrency/coroutines
===================================================================
--- src/libcfa/concurrency/coroutines	(revision 8761006c981bbfe64fdcd4be1180bdefc3e3578b)
+++ src/libcfa/concurrency/coroutines	(revision 7a560c17e09d86c2f09afb972b0b4d224a0be91c)
@@ -30,5 +30,5 @@
 };
 
-#define DECL_COROUTINE(X) static inline coroutine* get_coroutine(X* this) { return &this->c; } void main(X* this);
+#define DECL_COROUTINE(X) static inline coroutine* get_coroutine(X* this) { return &this->c; } void main(X* this)
 
 //-----------------------------------------------------------------------------
@@ -110,4 +110,22 @@
 }
 
+static inline void resume(coroutine * dst) {
+	coroutine * src = this_coroutine();		// optimization
+
+      // not resuming self ?
+	if ( src != dst ) {
+		assertf( dst->notHalted ,
+			"Attempt by coroutine %.256s (%p) to resume terminated coroutine %.256s (%p).\n"
+			"Possible cause is terminated coroutine's main routine has already returned.",
+			src->name, src, dst->name, dst );
+
+            // set last resumer
+		dst->last = src;
+	} // if
+
+      // always done for performance testing
+	CoroutineCtxSwitch( src, dst );
+}
+
 #endif //COROUTINES_H
 
Index: src/libcfa/concurrency/kernel.c
===================================================================
--- src/libcfa/concurrency/kernel.c	(revision 8761006c981bbfe64fdcd4be1180bdefc3e3578b)
+++ src/libcfa/concurrency/kernel.c	(revision 7a560c17e09d86c2f09afb972b0b4d224a0be91c)
@@ -43,5 +43,5 @@
 };
 
-DECL_COROUTINE(processorCtx_t)
+DECL_COROUTINE(processorCtx_t);
 
 #define KERNEL_STORAGE(T,X) static char X##_storage[sizeof(T)]
Index: src/libcfa/concurrency/threads
===================================================================
--- src/libcfa/concurrency/threads	(revision 8761006c981bbfe64fdcd4be1180bdefc3e3578b)
+++ src/libcfa/concurrency/threads	(revision 7a560c17e09d86c2f09afb972b0b4d224a0be91c)
@@ -32,5 +32,5 @@
 };
 
-#define DECL_THREAD(X) thread* get_thread(X* this) { return &this->t; } void main(X* this);
+#define DECL_THREAD(X) thread* get_thread(X* this) { return &this->t; } void main(X* this)
 
 forall( dtype T | is_thread(T) )
