anchor.diff:      return completer.future;
     }
   
  +  send(data) {
  +    _data.forEach((k, d) {
  +      d.send(data);
  +    });
  +  }
  +
     _createPeerConnection(id) {
  -    var pc = new RtcPeerConnection(_iceServers);
  +    var pc = new RtcPeerConnection(_iceServers, _dataConfig);
   
       pc.onIceCandidate.listen((e){
         if (e.candidate != null) {
  
positive.code:     onLeave.listen((message) {
        var id = message['id'];
        _connections.remove(id);
        _sockets.remove(id);
      });
  
  
negative.code: 
    get onRemove => _messageStream.where((m) => m['type'] == 'remove');
  
    get onData => _messageStream.where((m) => m['type'] == 'data');
  
    createStream({ audio: false, video: false }) {
      var completer = new Completer<MediaStream>();
  
  