Index: libcfa/src/concurrency/channel.hfa
===================================================================
--- libcfa/src/concurrency/channel.hfa	(revision cb344f7e70ae31d9cc1a7f22b1908bb85e3a2618)
+++ libcfa/src/concurrency/channel.hfa	(revision ca22a7c7bf8925f9a2cc31e3ab27ecd4e46c0099)
@@ -326,9 +326,10 @@
     return retval;
 }
+
 ///////////////////////////////////////////////////////////////////////////////////////////
 // The following is Go-style operator support for channels
 ///////////////////////////////////////////////////////////////////////////////////////////
 
-static inline void ?>>?( T elem, channel(T) & chan ) { insert( chan, elem ); }
+static inline void ?<<?( channel(T) & chan, T elem ) { insert( chan, elem ); }
 static inline void ?<<?( T & ret, channel(T) & chan ) { ret = remove( chan ); }
 
@@ -460,19 +461,4 @@
 }
 
-// type used by select statement to capture a chan read as the selected operation that doesn't have a param to read to
-struct chan_read_no_ret {
-    T ret;
-    chan_read( T ) cr;
-};
-__CFA_SELECT_GET_TYPE( chan_read_no_ret(T) );
-
-static inline void ?{}( chan_read_no_ret(T) & this, channel(T) & chan ) {
-    this.cr{ chan, this.ret };
-}
-static inline chan_read_no_ret(T) remove( channel(T) & chan ) { chan_read_no_ret(T) cr{ chan }; return cr; }
-static inline bool register_select( chan_read_no_ret(T) & this, select_node & node ) { return register_select( this.cr, node ); }
-static inline bool unregister_select( chan_read_no_ret(T) & this, select_node & node ) { return unregister_select( this.cr, node ); }
-static inline bool on_selected( chan_read_no_ret(T) & this, select_node & node ) { return on_selected( this.cr, node ); }
-
 // type used by select statement to capture a chan write as the selected operation
 struct chan_write {
@@ -486,5 +472,5 @@
     memcpy( (void *)&cw.elem, (void *)&elem, sizeof(T) );
 }
-static inline chan_write(T) ?>>?( T elem, channel(T) & chan ) { chan_write(T) cw{ chan, elem }; return cw; }
+static inline chan_write(T) ?<<?( channel(T) & chan, T elem ) { chan_write(T) cw{ chan, elem }; return cw; }
 static inline chan_write(T) insert( T elem, channel(T) & chan) { chan_write(T) cw{ chan, elem }; return cw; }
 
