 public protocol RecvChannel {
 	typealias ValueType
 	func recv() -> ValueType
+}
+
+public protocol SelectableRecvChannel {
+	typealias ValueType
+	func recv(CommReadyCallback) -> (WaitForRecv<ValueType>?, WaitForSend<ValueType>?)
 }
 
 public struct ASyncRecv<V> {

			}
		}
	}
}

public struct SendOnlyChan<C: SendChannel>: SendChannel {

		comm = SyncedComm<V>()
	}

	init(syncedComm: SyncedComm<V>) {
		comm = syncedComm
	}

	private func send(v: V) -> Bool {
		return comm.senderEnter(v)
	}
