Index: src/libcfa/concurrency/coroutines
===================================================================
--- src/libcfa/concurrency/coroutines	(revision 0c92c9f0632273f81f11622ea9a570797b9c7092)
+++ src/libcfa/concurrency/coroutines	(revision 4fbdd1e3c0c922ed23e16bac1a2d2fce7bfe0bcb)
@@ -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
 
