Index: src/libcfa/concurrency/monitor
===================================================================
--- src/libcfa/concurrency/monitor	(revision adb4a3a5d6646231a017bd7e04970e47254e7633)
+++ src/libcfa/concurrency/monitor	(revision c366ec68d73cd23ab1a4b37dd84d4eb9ac2206be)
@@ -10,6 +10,6 @@
 // Created On       : Thd Feb 23 12:27:26 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sat Jul 22 09:59:01 2017
-// Update Count     : 3
+// Last Modified On : Sat Oct  7 18:06:45 2017
+// Update Count     : 10
 //
 
@@ -54,5 +54,4 @@
 void ^?{}( monitor_guard_t & this );
 
-
 struct monitor_dtor_guard_t {
 	monitor_desc * m;
@@ -64,4 +63,10 @@
 void ?{}( monitor_dtor_guard_t & this, monitor_desc ** m, void (*func)() );
 void ^?{}( monitor_dtor_guard_t & this );
+
+static inline forall( dtype T | sized(T) | { void ^?{}( T & mutex ); } )
+void delete( T * th ) {
+	^(*th){};
+	free( th );
+}
 
 //-----------------------------------------------------------------------------
Index: src/libcfa/concurrency/monitor.c
===================================================================
--- src/libcfa/concurrency/monitor.c	(revision adb4a3a5d6646231a017bd7e04970e47254e7633)
+++ src/libcfa/concurrency/monitor.c	(revision c366ec68d73cd23ab1a4b37dd84d4eb9ac2206be)
@@ -409,7 +409,5 @@
 	short thread_count = 0;
 	thread_desc * threads[ count ];
-	for(int i = 0; i < count; i++) {
-		threads[i] = 0;
-	}
+	__builtin_memset( threads, 0, sizeof( threads ) );
 
 	// Save monitor states
@@ -535,5 +533,8 @@
 	short max = count_max( mask );
 	monitor_desc * mon_storage[max];
+	__builtin_memset( mon_storage, 0, sizeof( mon_storage ) );
 	short actual_count = aggregate( mon_storage, mask );
+
+	LIB_DEBUG_PRINT_SAFE("Kernel : waitfor %d (s: %d, m: %d)\n", actual_count, mask.size, (short)max);
 
 	if(actual_count == 0) return;
