     public private(set) var streams: [MediaStream] = []
     public private(set) var iceCandidates: [ICECandidate] = [] // TODO: remove?
     
+    public var clientId: String? {
+        get { return context.clientId }
+    }
+
     public var state: PeerChannelState {
         get {
             switch context.state {

    
    func peerConnection(_ nativePeerConnection: RTCPeerConnection,
                        didAdd stream: RTCMediaStream) {
        Logger.debug(type: .peerChannel,
                     message: "added a media stream (id: \(stream.streamId))")
        let stream = BasicMediaStream(nativeStream: stream)

            switch message {
            case .offer(let offer):
                Logger.debug(type: .peerChannel, message: "receive offer")
                clientId = offer.clientId
                createAndSendAnswerMessage(offer: offer)
                
            default:
