     .map { (Client(iden: $0), $1, $2.fromFinished()!) }
   }
 
-  public func receive(cb: (Client<I>, String, NSURL) -> ()) {
-    receive()
-    .subscribeNext(cb)
-    .addDisposableTo(disposeBag)
-  }
 
   deinit {
     self.disconnect()


  public func send
  (other: Client<I>,
   _ data: NSData,
   _ mode: MCSessionSendDataMode = .Reliable,
   onComplete cb: () -> ()) {
    send(other, data, mode)
    .subscribeNext(cb)
    .addDisposableTo(disposeBag)
  }

  public func send
  (other: Client<I>,
   _ string: String,
   _ mode: MCSessionSendDataMode = .Reliable)
  -> Observable<()> {
    return send(other, string.dataUsingEncoding(NSUTF8StringEncoding)!, mode)
  }

  public func send
  (other: Client<I>,
   _ string: String,
   _ mode: MCSessionSendDataMode = .Reliable,
   onComplete cb: () -> ()) {
    send(other, string, mode)
    .subscribeNext(cb)
    .addDisposableTo(disposeBag)
  }

  public func send

    .map { ($0, String($1!)) }
  }

  public func receive() -> Observable<(Client<I>, String, ResourceState)> {
    return session.receive().map { (Client(iden: $0), $1, $2) }
  }

  public func receive() -> Observable<(Client<I>, String, NSURL)> {
