Index: src/libcfa/concurrency/monitor
===================================================================
--- src/libcfa/concurrency/monitor	(revision 9f5ecf510cb2c5f79c8536c82b1557eba39e1651)
+++ src/libcfa/concurrency/monitor	(revision d67cdb749954789d84d7a8bbabc0ec601347a7bb)
@@ -22,4 +22,9 @@
 #include "stdlib"
 
+trait is_monitor(dtype T) {
+	monitor_desc * get_monitor( T & );
+	void ^?{}( T & mutex );
+};
+
 static inline void ?{}(monitor_desc & this) {
 	(this.lock){};
@@ -28,7 +33,7 @@
 	(this.signal_stack){};
 	this.recursion = 0;
-	this.acceptables = NULL;
-	this.acceptable_count = 0;
-	this.accepted_index = -1;
+	this.mask.accepted = NULL;
+	this.mask.clauses  = NULL;
+	this.mask.size     = 0;
 }
 
@@ -100,11 +105,9 @@
 
 struct __acceptable_t {
-	fptr_t func;
-	unsigned short count;
-	monitor_desc ** monitors;
+	__monitor_group_t;
 	bool is_dtor;
 };
 
-int __accept_internal( unsigned short count, __acceptable_t * acceptables );
+void __waitfor_internal( const __waitfor_mask_t & mask, int duration );
 
 // Local Variables: //
