Index: src/libcfa/concurrency/monitor
===================================================================
--- src/libcfa/concurrency/monitor	(revision 51f3798005b3649fb4f041cf88dd42cc981f7f73)
+++ src/libcfa/concurrency/monitor	(revision cc7f4b1e1f5f47761e1092680bb42e28d29e1724)
@@ -21,23 +21,29 @@
 #include "invoke.h"
 
-struct monitor {
+struct __monitor_t {
 	spinlock lock;
-	thread * holder;
+	thread * owner;
 	simple_thread_list entry_queue;
+	unsigned int recursion;
 };
 
-void enter(monitor *);
-void leave(monitor *);
+static inline void ?{}(__monitor_t * this) {
+	this->owner = 0;
+	this->recursion = 0;
+}
 
-struct monitor_guard {
-	monitor * m;
+void enter(__monitor_t *);
+void leave(__monitor_t *);
+
+struct monitor_guard_t {
+	__monitor_t * m;
 };
 
-static inline void ?{}( monitor_guard * this, monitor * m ) {
+static inline void ?{}( monitor_guard_t * this, __monitor_t * m ) {
 	this->m = m;
 	enter( this->m );
 }
 
-static inline void ^?{}( monitor_guard * this ) {
+static inline void ^?{}( monitor_guard_t * this ) {
 	leave( this->m );
 }
