Index: libcfa/src/concurrency/thread.cfa
===================================================================
--- libcfa/src/concurrency/thread.cfa	(revision 1c0a3a4d74ba8a76960a99c6bd2e33c4e812b46e)
+++ libcfa/src/concurrency/thread.cfa	(revision 8ee211d29f63ed8c631e2d37e8961781dfa45eaf)
@@ -135,5 +135,5 @@
 //-----------------------------------------------------------------------------
 // Starting and stopping threads
-forall( T & | is_thread(T) )
+forall( T & | is_basic_thread(T) )
 void __thrd_start( T & this, void (*main_p)(T &) ) {
 	thread$ * this_thrd = get_thread(this);
Index: libcfa/src/concurrency/thread.hfa
===================================================================
--- libcfa/src/concurrency/thread.hfa	(revision 1c0a3a4d74ba8a76960a99c6bd2e33c4e812b46e)
+++ libcfa/src/concurrency/thread.hfa	(revision 8ee211d29f63ed8c631e2d37e8961781dfa45eaf)
@@ -28,8 +28,11 @@
 // thread trait
 forall( T & )
+trait is_basic_thread {
+	void main(T& this);
+	thread$ * get_thread(T& this);
+};
+forall( T & | is_basic_thread(T) )
 trait is_thread {
 	void ^?{}(T& mutex this);
-	void main(T& this);
-	thread$ * get_thread(T& this);
 };
 
@@ -47,8 +50,8 @@
 
 // Inline getters for threads/coroutines/monitors
-forall( T & | is_thread(T) )
+forall( T & | is_basic_thread(T) )
 static inline coroutine$ * get_coroutine(T & this) __attribute__((const)) { return &get_thread(this)->self_cor; }
 
-forall( T & | is_thread(T) )
+forall( T & | is_basic_thread(T) )
 static inline monitor$   * get_monitor  (T & this) __attribute__((const)) { return &get_thread(this)->self_mon; }
 
@@ -60,5 +63,5 @@
 extern struct cluster * mainCluster;
 
-forall( T & | is_thread(T) )
+forall( T & | is_basic_thread(T) )
 void __thrd_start( T & this, void (*)(T &) );
 
