Index: libcfa/src/concurrency/channel.hfa
===================================================================
--- libcfa/src/concurrency/channel.hfa	(revision 8bb86ce463c8187122d102e14255132a0a256ce1)
+++ libcfa/src/concurrency/channel.hfa	(revision d61d0347a13b953ca48c9a9bbd1d4e9c0906c5ed)
@@ -35,8 +35,11 @@
 static inline void ?{}( channel(T) &c ){ ((channel(T) &)c){ 0 }; }
 static inline void ^?{}( channel(T) &c ) with(c) { delete( buffer ); }
-inline size_t get_count( channel(T) & chan ) with(chan) { return count; }
-inline size_t get_size( channel(T) & chan ) with(chan) { return size; }
+static inline size_t get_count( channel(T) & chan ) with(chan) { return count; }
+static inline size_t get_size( channel(T) & chan ) with(chan) { return size; }
+static inline bool has_waiters( channel(T) & chan ) with(chan) { return !empty( cons ) || !empty( prods ); }
+static inline bool has_waiting_consumers( channel(T) & chan ) with(chan) { return !empty( cons ); }
+static inline bool has_waiting_producers( channel(T) & chan ) with(chan) { return !empty( prods ); }
 
-inline void insert_( channel(T) & chan, T elem ) with(chan) {
+static inline void insert_( channel(T) & chan, T elem ) with(chan) {
     memcpy((void *)&buffer[back], (void *)&elem, sizeof(T));
     count += 1;
@@ -46,5 +49,5 @@
 
 
-inline void insert( channel(T) & chan, T elem ) with(chan) {
+static inline void insert( channel(T) & chan, T elem ) with(chan) {
     lock( mutex_lock );
 
@@ -72,5 +75,5 @@
 }
 
-inline T remove( channel(T) & chan ) with(chan) {
+static inline T remove( channel(T) & chan ) with(chan) {
     lock( mutex_lock );
     T retval;
Index: tests/concurrent/channels/parallel_harness.hfa
===================================================================
--- tests/concurrent/channels/parallel_harness.hfa	(revision 8bb86ce463c8187122d102e14255132a0a256ce1)
+++ tests/concurrent/channels/parallel_harness.hfa	(revision d61d0347a13b953ca48c9a9bbd1d4e9c0906c5ed)
@@ -38,4 +38,5 @@
 
 volatile bool cons_done = false, prod_done = false;
+volatile int cons_done_count = 0;
 size_t cons_check = 0, prod_check = 0;
 
@@ -64,4 +65,5 @@
     lock(o);
     total_operations += runs;
+    cons_done_count++;
     cons_check = cons_check ^ my_check;
     // sout | "C: " | runs;
@@ -128,5 +130,5 @@
     }
 
-    sleep(10`s);
+    sleep(1`s);
     prod_done = true;
 
@@ -137,12 +139,9 @@
     sout | "prods";
     cons_done = true;
-    for ( i; Channels ) {
-        // sout | get_count( channels[i] );
-        if ( get_count( channels[i] ) < Consumers ){
-            #ifdef BIG
-            bigObject b{0};
-            #endif
-            for ( j; Consumers ) {
+    while( cons_done_count != Consumers * Channels ) {
+        for ( i; Channels ) {
+            if ( has_waiting_consumers( channels[i] ) ){
                 #ifdef BIG
+                bigObject b{0};
                 insert( channels[i], b );
                 #else
@@ -151,5 +150,21 @@
             }
         }
-    }
+        
+    }
+    // for ( i; Channels ) {
+    //     // sout | get_count( channels[i] );
+    //     if ( get_count( channels[i] ) < Consumers ){
+    //         #ifdef BIG
+    //         bigObject b{0};
+    //         #endif
+    //         for ( j; Consumers ) {
+    //             #ifdef BIG
+    //             insert( channels[i], b );
+    //             #else
+    //             insert( channels[i], 0 );
+    //             #endif
+    //         }
+    //     }
+    // }
     sout | "cons";
     for ( i; Consumers * Channels ) {
Index: tests/concurrent/channels/zero_size.cfa
===================================================================
--- tests/concurrent/channels/zero_size.cfa	(revision 8bb86ce463c8187122d102e14255132a0a256ce1)
+++ tests/concurrent/channels/zero_size.cfa	(revision d61d0347a13b953ca48c9a9bbd1d4e9c0906c5ed)
@@ -1,5 +1,5 @@
 #include "parallel_harness.hfa"
 
-size_t Processors = 10, Channels = 10, Producers = 40, Consumers = 40, ChannelSize = 0;
+size_t Processors = 10, Channels = 1, Producers = 10, Consumers = 10, ChannelSize = 0;
 
 int main() {
