Index: src/libcfa/concurrency/thread
===================================================================
--- src/libcfa/concurrency/thread	(revision 242a902cd5fbc4b9c2f13147a4c64816af6be8b7)
+++ src/libcfa/concurrency/thread	(revision fd344aa36c1b2ce6ad3063c098b1dd496037e9bd)
@@ -30,17 +30,17 @@
 trait is_thread(dtype T) {
       void ^?{}(T& mutex this);
-      void main(T* this);
-      thread_desc* get_thread(T* this);
+      void main(T& this);
+      thread_desc* get_thread(T& this);
 };
 
-#define DECL_THREAD(X) thread_desc* get_thread(X* this) { return &this->__thrd; } void main(X* this)
+#define DECL_THREAD(X) thread_desc* get_thread(X& this) { return &this.__thrd; } void main(X& this)
 
 forall( dtype T | is_thread(T) )
-static inline coroutine_desc* get_coroutine(T* this) {
+static inline coroutine_desc* get_coroutine(T & this) {
 	return &get_thread(this)->cor;
 }
 
 forall( dtype T | is_thread(T) )
-static inline monitor_desc* get_monitor(T * this) {
+static inline monitor_desc* get_monitor(T & this) {
 	return &get_thread(this)->mon;
 }
@@ -57,5 +57,5 @@
 
 forall( dtype T | is_thread(T) )
-void __thrd_start( T* this );
+void __thrd_start( T & this );
 
 //-----------------------------------------------------------------------------
