Index: libcfa/src/concurrency/iofwd.hfa
===================================================================
--- libcfa/src/concurrency/iofwd.hfa	(revision 1c56bf7102e90c1bc70a37565dadd8a811d1d3e4)
+++ libcfa/src/concurrency/iofwd.hfa	(revision c25338dbafc8e65874811701c5413f1e4a577e5e)
@@ -76,4 +76,6 @@
 	void reset    ( io_future_t & this ) { return reset    (this.self); }
 	bool available( io_future_t & this ) { return available(this.self); }
+	bool setup    ( io_future_t & this, oneshot & ctx ) { return setup  (this.self, ctx); }
+	bool retract  ( io_future_t & this, oneshot & ctx ) { return retract(this.self, ctx); }
 }
 
Index: libcfa/src/concurrency/kernel/fwd.hfa
===================================================================
--- libcfa/src/concurrency/kernel/fwd.hfa	(revision 1c56bf7102e90c1bc70a37565dadd8a811d1d3e4)
+++ libcfa/src/concurrency/kernel/fwd.hfa	(revision c25338dbafc8e65874811701c5413f1e4a577e5e)
@@ -383,5 +383,6 @@
 
 			// Wait for any future to be fulfilled
-			future_t & wait_any( future_t * futures, size_t num_futures ) {
+			forall(T& | sized(T) | { bool setup( T&, oneshot & ); bool retract( T&, oneshot & ); })
+			T & wait_any( T * futures, size_t num_futures ) {
 				oneshot temp;
 
@@ -391,8 +392,8 @@
 					if( !setup(futures[i], temp) ) return futures[i];
 				}
-				
+
 				// Wait context is setup, just wait on it
 				wait( temp );
-				
+
 				size_t ret;
 				// attempt to retract all futures
@@ -400,5 +401,5 @@
 					if ( retract( futures[i], temp ) ) ret = i;
 				}
-				
+
 				return futures[ret];
 			}
