anchor.diff:    _clients.values.forEach((controler) => controler.add(event));
   }
   
  -void handleJoin(JoinGame event) {
  +bool handleJoinGame(JoinGame event) {
     print("Player ${event.playerId} is ready");  
     // TODO add to players
  -  // _players[event.playerId] = new Player();
  +  return true;
   }
   
  -void handlePlayerLeft(LeaveGame event) {
  +bool handleLeaveGame(LeaveGame event) {
     print("Player ${event.playerId} is leaving");
  -  if(_clients.containsKey(event.playerId)){
  -    _clients[event.playerId].close();
  -    _clients.remove(event.playerId);
  -    // TODO add to players
  -    //_players.remove(event.playerId);
  -  }
  +  _clients[event.playerId].close();
  +  _clients.remove(event.playerId);
  +  // TODO remove from players
  +  return true;
   }
positive.code:   ws.map(JSON.decode).map(EVENT.decode)
      .where((event) => event != null && event.playerId == playerId) // Avoid unknown event and cheater 
      .listen(handleEvents)
      .onDone(() => disconnectPlayer(playerId)); // Connection is lost
  }
  
  int generatePlayerId() => new DateTime.now().millisecondsSinceEpoch;
  
negative.code:   vDir.serveFile(new File(indexUri.toFilePath()), request);
  }
  
  typedef bool validEvent(PlayerEvent event);
  Map<PlayerEvent, validEvent> _handlers = {
                                            JoinGame : handleJoinGame,
                                            LeaveGame : handleLeaveGame
                                            };
  
  void handleWebSocket(WebSocket ws) {
    print("Player connected");
    final playerId = generatePlayerId();
  