Index: src/libcfa/concurrency/invoke.h
===================================================================
--- src/libcfa/concurrency/invoke.h	(revision cb0e6de65962fd19c1eae698acaec94f1a41b56c)
+++ src/libcfa/concurrency/invoke.h	(revision 9c313496292e447189530c6d9e91a7b120e46cc2)
@@ -38,10 +38,4 @@
       };
 
-      struct signal_once {
-            volatile bool condition;
-            struct spinlock lock;
-            struct simple_thread_list blocked;
-      };
-
       #ifdef __CFORALL__
       extern "Cforall" {
@@ -52,7 +46,4 @@
             void ?{}(spinlock * this);
             void ^?{}(spinlock * this);
-
-            void ?{}(signal_once * this);
-            void ^?{}(signal_once * this);
       }
       #endif
@@ -88,6 +79,5 @@
       struct thread_desc {
             struct coroutine_desc cor;          // coroutine body used to store context
-            struct monitor_desc mon;
-            struct signal_once terminated;      // indicate if execuation state is not halted
+            struct monitor_desc mon;            // monitor body used for mutual exclusion
             struct thread_desc * next;          // instrusive link field for threads
       };
Index: src/libcfa/concurrency/kernel
===================================================================
--- src/libcfa/concurrency/kernel	(revision cb0e6de65962fd19c1eae698acaec94f1a41b56c)
+++ src/libcfa/concurrency/kernel	(revision 9c313496292e447189530c6d9e91a7b120e46cc2)
@@ -30,4 +30,13 @@
 void lock( spinlock * );
 void unlock( spinlock * );
+
+struct signal_once {
+	volatile bool condition;
+	struct spinlock lock;
+	struct simple_thread_list blocked;
+};
+
+void ?{}(signal_once * this);
+void ^?{}(signal_once * this);
 
 void wait( signal_once * );
Index: src/libcfa/concurrency/thread.c
===================================================================
--- src/libcfa/concurrency/thread.c	(revision cb0e6de65962fd19c1eae698acaec94f1a41b56c)
+++ src/libcfa/concurrency/thread.c	(revision 9c313496292e447189530c6d9e91a7b120e46cc2)
@@ -35,7 +35,4 @@
 void start( T* this );
 
-forall( dtype T | is_thread(T) )
-void stop( T* this );
-
 //-----------------------------------------------------------------------------
 // Thread ctors and dtors
@@ -46,5 +43,4 @@
 	this->mon.owner = this;
 	this->mon.recursion = 1;
-	(&this->terminated){};
 	this->next = NULL;
 }
@@ -68,5 +64,4 @@
 forall( dtype T | sized(T) | is_thread(T) )
 void ^?{}( scoped(T)* this ) {
-	stop(&this->handle);
 	^(&this->handle){};
 }
@@ -88,9 +83,4 @@
 
 	ScheduleThread(thrd_h);
-}
-
-forall( dtype T | is_thread(T) )
-void stop( T* this ) {
-	// wait( & get_thread(this)->terminated );	
 }
 
@@ -118,14 +108,4 @@
 }
 
-// C Helper to signal the termination of a thread_desc
-// Used in invoke.c
-extern "C" {
-	void __thread_signal_termination( thread_desc * this ) {
-		this->cor.state = Halted;
-		LIB_DEBUG_PRINTF("Thread end : %p\n", this);
-		signal( &this->terminated );	
-	}
-}
-
 // Local Variables: //
 // mode: c //
