Index: libcfa/src/concurrency/channel.hfa
===================================================================
--- libcfa/src/concurrency/channel.hfa	(revision a5294af49383d5a6eddb1fcb3c988239fda953fb)
+++ libcfa/src/concurrency/channel.hfa	(revision 70a4ed597ca91ea033ad12b47d5b35b67e10d5ec)
@@ -423,9 +423,8 @@
 }
 static inline bool unregister_select( chan_read(T) & this, select_node & node ) { return unregister_chan( this.chan, node ); }
-static inline bool on_selected( chan_read(T) & this, select_node & node ) with(this) {
+static inline void on_selected( chan_read(T) & this, select_node & node ) with(this) {
     if ( node.extra == 0p ) // check if woken up due to closed channel
         __closed_remove( chan, ret );
     // This is only reachable if not closed or closed exception was handled
-    return true;
 }
 
@@ -515,10 +514,9 @@
 static inline bool unregister_select( chan_write(T) & this, select_node & node ) { return unregister_chan( this.chan, node ); }
 
-static inline bool on_selected( chan_write(T) & this, select_node & node ) with(this) { 
+static inline void on_selected( chan_write(T) & this, select_node & node ) with(this) { 
     if ( node.extra == 0p ) // check if woken up due to closed channel
         __closed_insert( chan, elem );
 
     // This is only reachable if not closed or closed exception was handled
-    return true;
 }
 
Index: libcfa/src/concurrency/future.hfa
===================================================================
--- libcfa/src/concurrency/future.hfa	(revision a5294af49383d5a6eddb1fcb3c988239fda953fb)
+++ libcfa/src/concurrency/future.hfa	(revision 70a4ed597ca91ea033ad12b47d5b35b67e10d5ec)
@@ -70,5 +70,5 @@
 		// check if the future is available
         // currently no mutual exclusion because I can't see when you need this call to be synchronous or protected
-		bool available( future(T) & this ) { return this.state; }
+		bool available( future(T) & this ) { return __atomic_load_n( &this.state, __ATOMIC_RELAXED ); }
 
 
@@ -180,10 +180,10 @@
         }
 		
-        bool on_selected( future(T) & this, select_node & node ) { return true; }
+        void on_selected( future(T) & this, select_node & node ) {}
 	}
 }
 
 //--------------------------------------------------------------------------------------------------------
-// These futures below do not support select statements so they may not be as useful as 'future'
+// These futures below do not support select statements so they may not have as many features as 'future'
 //  however the 'single_future' is cheap and cheerful and is most likely more performant than 'future'
 //  since it uses raw atomics and no locks
Index: libcfa/src/concurrency/locks.cfa
===================================================================
--- libcfa/src/concurrency/locks.cfa	(revision a5294af49383d5a6eddb1fcb3c988239fda953fb)
+++ libcfa/src/concurrency/locks.cfa	(revision 70a4ed597ca91ea033ad12b47d5b35b67e10d5ec)
@@ -239,5 +239,5 @@
 }
 
-bool on_selected( blocking_lock & this, select_node & node ) { return true; }
+void on_selected( blocking_lock & this, select_node & node ) {}
 
 //-----------------------------------------------------------------------------
Index: libcfa/src/concurrency/locks.hfa
===================================================================
--- libcfa/src/concurrency/locks.hfa	(revision a5294af49383d5a6eddb1fcb3c988239fda953fb)
+++ libcfa/src/concurrency/locks.hfa	(revision 70a4ed597ca91ea033ad12b47d5b35b67e10d5ec)
@@ -114,5 +114,5 @@
 static inline bool   register_select( single_acquisition_lock & this, select_node & node ) { return register_select( (blocking_lock &)this, node ); }
 static inline bool   unregister_select( single_acquisition_lock & this, select_node & node ) { return unregister_select( (blocking_lock &)this, node ); }
-static inline bool   on_selected( single_acquisition_lock & this, select_node & node ) { return on_selected( (blocking_lock &)this, node ); }
+static inline void   on_selected( single_acquisition_lock & this, select_node & node ) { on_selected( (blocking_lock &)this, node ); }
 
 //----------
@@ -131,5 +131,5 @@
 static inline bool   register_select( owner_lock & this, select_node & node ) { return register_select( (blocking_lock &)this, node ); }
 static inline bool   unregister_select( owner_lock & this, select_node & node ) { return unregister_select( (blocking_lock &)this, node ); }
-static inline bool   on_selected( owner_lock & this, select_node & node ) { return on_selected( (blocking_lock &)this, node ); }
+static inline void   on_selected( owner_lock & this, select_node & node ) { on_selected( (blocking_lock &)this, node ); }
 
 //-----------------------------------------------------------------------------
@@ -621,5 +621,5 @@
 }
 
-static inline bool on_selected( simple_owner_lock & this, select_node & node ) { return true; }
+static inline void on_selected( simple_owner_lock & this, select_node & node ) {}
 
 
Index: libcfa/src/concurrency/select.cfa
===================================================================
--- libcfa/src/concurrency/select.cfa	(revision a5294af49383d5a6eddb1fcb3c988239fda953fb)
+++ libcfa/src/concurrency/select.cfa	(revision 70a4ed597ca91ea033ad12b47d5b35b67e10d5ec)
@@ -49,5 +49,5 @@
     return false;
 }
-bool on_selected( select_timeout_node & this, select_node & node ) { return true; }
+void on_selected( select_timeout_node & this, select_node & node ) {}
 
 // Gateway routine to wait on duration
Index: libcfa/src/concurrency/select.hfa
===================================================================
--- libcfa/src/concurrency/select.hfa	(revision a5294af49383d5a6eddb1fcb3c988239fda953fb)
+++ libcfa/src/concurrency/select.hfa	(revision 70a4ed597ca91ea033ad12b47d5b35b67e10d5ec)
@@ -91,10 +91,10 @@
     // For unregistering a select stmt on a selectable concurrency primitive
     // If true is returned then the corresponding code block is run (only in non-special OR case and only if node status is not RUN)
-    bool unregister_select( T &, select_node &  );
+    bool unregister_select( T &, select_node & );
 
     // This routine is run on the selecting thread prior to executing the statement corresponding to the select_node
     //    passed as an arg to this routine
     // If on_selected returns false, the statement is not run, if it returns true it is run.
-    bool on_selected( T &, select_node & );
+    void on_selected( T &, select_node & );
 };
 
@@ -188,5 +188,5 @@
 bool register_select( select_timeout_node & this, select_node & node );
 bool unregister_select( select_timeout_node & this, select_node & node );
-bool on_selected( select_timeout_node & this, select_node & node );
+void on_selected( select_timeout_node & this, select_node & node );
 
 // Gateway routines to waituntil on duration
