private void entityModified(EntityRef entity) {
        int entityId = internalEntityManager.getEntityId(entity);
        for (Map.Entry<String, Set<Integer>> clientKnownEntities : entitiesClientIsAwareOf.entrySet()) {
            String clientId = clientKnownEntities.getKey();
            EntityRef clientEntity = clientEntityMap.get(clientId);
            ClientCommunication clientCommunication = connectedClients.get(clientId);
            Set<Integer> entitiesKnownByClient = clientKnownEntities.getValue();

            boolean clientShouldKnow = shouldEntityBeKnownToClient(clientEntity, entity);
            boolean clientKnows = entitiesKnownByClient.contains(entityId);
            try {
                if (clientKnows && clientShouldKnow) {
                    clientCommunication.updateEntity(entityId, entity, entityComponentFieldFilters);
                } else if (clientKnows && !clientShouldKnow) {
                    clientCommunication.removeEntity(entityId);
                    entitiesKnownByClient.remove(entityId);
                } else if (!clientKnows && clientShouldKnow) {
                    clientCommunication.addEntity(entityId, entity, entityComponentFieldFilters);
                    entitiesKnownByClient.add(entityId);
                }
            } catch (IOException exp) {
                handleCommunicationErrorWithClient(clientCommunication);
            }
        }
    }