@Override
    public void entityRelevancyChanged(String clientId, Iterable<EntityRef> entities) {
        EntityRef clientEntity = clientEntityMap.get(clientId);
        Set<Integer> entitiesClientKnows = entitiesClientIsAwareOf.get(clientId);
        ClientCommunication clientCommunication = connectedClients.get(clientId);

        for (EntityRef entity : entities) {
            int entityId = internalEntityManager.getEntityId(entity);
            boolean shouldBeKnown = shouldEntityBeKnownToClient(clientEntity, entity);
            boolean isKnown = entitiesClientKnows.contains(entityId);
            if (shouldBeKnown && !isKnown) {
                entitiesClientKnows.add(entityId);
                try {
                    clientCommunication.addEntity(entityId, entity, entityComponentFieldFilters);
                } catch (IOException exp) {
                    handleCommunicationErrorWithClient(clientCommunication);
                }
            } else if (!shouldBeKnown && isKnown) {
                try {
                    clientCommunication.removeEntity(entityId);
                } catch (IOException exp) {
                    handleCommunicationErrorWithClient(clientCommunication);
                }
                entitiesClientKnows.remove(entityId);
            }
        }
    }