Index: src/libcfa/concurrency/monitor
===================================================================
--- src/libcfa/concurrency/monitor	(revision aaa4f93bb24090911402658ab4712faeadc90a06)
+++ src/libcfa/concurrency/monitor	(revision dcfc4b35ffe8edfe715f99da2c8a4087ae6ee86b)
@@ -29,12 +29,17 @@
 static inline void ?{}(monitor_desc & this) {
 	(this.lock){};
-	this.owner = NULL;
 	(this.entry_queue){};
 	(this.signal_stack){};
-	this.recursion = 0;
+	this.owner         = NULL;
+	this.recursion     = 0;
 	this.mask.accepted = NULL;
 	this.mask.clauses  = NULL;
 	this.mask.size     = 0;
+	this.dtor_node     = NULL;
 }
+
+// static inline int ?<?(monitor_desc* lhs, monitor_desc* rhs) {
+// 	return ((intptr_t)lhs) < ((intptr_t)rhs);
+// }
 
 struct monitor_guard_t {
@@ -46,10 +51,17 @@
 };
 
-static inline int ?<?(monitor_desc* lhs, monitor_desc* rhs) {
-	return ((intptr_t)lhs) < ((intptr_t)rhs);
-}
-
 void ?{}( monitor_guard_t & this, monitor_desc ** m, int count, void (*func)() );
 void ^?{}( monitor_guard_t & this );
+
+
+struct monitor_dtor_guard_t {
+	monitor_desc * m;
+	monitor_desc ** prev_mntrs;
+	unsigned short  prev_count;
+	fptr_t          prev_func;
+};
+
+void ?{}( monitor_dtor_guard_t & this, monitor_desc ** m, void (*func)() );
+void ^?{}( monitor_dtor_guard_t & this );
 
 //-----------------------------------------------------------------------------
