Index: libcfa/src/concurrency/future.hfa
===================================================================
--- libcfa/src/concurrency/future.hfa	(revision 629c95a09e5a24f7108fc98fcff62c3e3ae6ad16)
+++ libcfa/src/concurrency/future.hfa	(revision c0ec8b6fe7503c70e9db17395e0d922d5b1dc28f)
@@ -52,5 +52,5 @@
         }
 
-        void ?{}(future(T) & this) {
+        void ?{}( future(T) & this ) {
 			this.waiters{};
             this.state = FUTURE_EMPTY;
@@ -59,5 +59,5 @@
 
 		// Reset future back to original state
-		void reset(future(T) & this) with(this)
+		void reset( future(T) & this ) with(this)
         {
             lock( lock );
@@ -85,12 +85,8 @@
                 select_node &s = try_pop_front( waiters );
 
-                if ( s.clause_status == 0p )
-                    // poke in result so that woken threads do not need to reacquire any locks
+                if ( s.clause_status == 0p ) // poke in result so that woken threads do not need to reacquire any locks
                     copy_T( result, *(((future_node(T) &)s).my_result) );
-                else if ( !__make_select_node_available( s ) ) continue;
                 
-                // only unpark if future is not selected
-                // or if it is selected we only unpark if we win the race
-                unpark( s.blocked_thread );
+                wake_one( waiters, s );
             }
         }
