anchor.diff:    }
   }
   
  -// connect to the server and wait for server data
  +// connect to the server and set call back for outbound data
   Future connectToServer(Socket clientSocket) {
     var completer = new Completer();
     Socket.connect(serverHost, serverPort).then((serverSocket) {
  -    log('Proxy establised connection for incomig socket ${clientSocket.hashCode} with server socket ${serverSocket.hashCode}');
  +    log('Proxy establised a connection for incomig socket ${clientSocket.hashCode}'
  +      ' with server socket ${serverSocket.hashCode}');
       connections[clientSocket] = serverSocket; // add to the connection table
       // set outbound call back here
       serverSocket.listen((outboundData) {
  -      processOutbound(clientSocket, outboundData);
  +      processOutbound(clientSocket, serverSocket, outboundData);
       }, onDone: () {
  -      log('Server side socket disconnected (${clientSocket.hashCode} : ${serverSocket.hashCode})');
  +      log('Server side socket disconnected (${clientSocket.hashCode}, ${serverSocket.hashCode})');
         clientSocket.destroy();
         connections.remove(clientSocket);
     //  logCurrentConnections(); // **** for debugging ****
  
positive.code: 
  // log out current connections for debug
  void logCurrentConnections() {
    log('Current connections (client side socket : server side socket) :');
    connections.forEach((client, server){
      log('${client.hashCode} : ${server.hashCode}');
    });
  }
  
negative.code: // set callback for inbound data
  setInboundCallback(Socket clientSocket, Socket serverSocket) {
    clientSocket.listen((inboundData) {
      processInbound(clientSocket, serverSocket, inboundData);
    }, onDone: () {
      log('Client side socket disconnected (${clientSocket.hashCode}, ${serverSocket.hashCode})');
      serverSocket.destroy();
      connections.remove(clientSocket);
      logCurrentConnections(); // **** for debugging ****
  