 	public func send(value: C.ValueType) {
 		ch.send(value)
 	}
+
+	public func canSend(value: C.ValueType) -> Bool {
+		return ch.canSend(value)
+	}
 }
 
 public struct RecvOnlyChan<C: RecvChannel>: RecvChannel {

			return receiver!.waitForSender()
		}
	}
}

public struct SendOnlyChan<C: SendChannel>: SendChannel {

		}
	}

	public func canSend(value: V) -> Bool {
		var receiver: WaitForSend<V>?

		dispatch_sync(q) {
			if self.waitingForSendQ.count > 0 {
				receiver = self.waitingForSendQ.removeAtIndex(0)
			}
		}

		if let r = receiver {
			r.send(value)
			return true
		}

		return false
	}

	public func recv() -> V {
		var sender: WaitForRecv<V>?
		var receiver: WaitForSend<V>?
