private void addNodeTo(int node, Community to) {
      to.add(node);
      nodeCommunities[node] = to;

      for (Edge e : topology[node]) {
        int neighbor;
        neighbor = e.getTarget();

        // Remove Node Connection to this community
        Double neighEdgesTo = nodeConnectionsWeight[neighbor].get(to);
        if (neighEdgesTo == null) {
          nodeConnectionsWeight[neighbor].put(
              to, Double.parseDouble(e.getProperty("weight").toString()));
        } else {
          nodeConnectionsWeight[neighbor].put(
              to, neighEdgesTo + Double.parseDouble(e.getProperty("weight").toString()));
        }
        Integer neighCountEdgesTo = nodeConnectionsCount[neighbor].get(to);
        if (neighCountEdgesTo == null) {
          nodeConnectionsCount[neighbor].put(to, 1);
        } else {
          nodeConnectionsCount[neighbor].put(to, neighCountEdgesTo + 1);
        }

        Community adjCom = nodeCommunities[neighbor];
        Double wEdgesto = adjCom.connectionsWeight.get(to);
        if (wEdgesto == null) {
          adjCom.connectionsWeight.put(to, Double.parseDouble(e.getProperty("weight").toString()));
        } else {
          adjCom.connectionsWeight.put(
              to, wEdgesto + Double.parseDouble(e.getProperty("weight").toString()));
        }

        Integer cEdgesto = adjCom.connectionsCount.get(to);
        if (cEdgesto == null) {
          adjCom.connectionsCount.put(to, 1);
        } else {
          adjCom.connectionsCount.put(to, cEdgesto + 1);
        }

        Double nodeEdgesTo = nodeConnectionsWeight[node].get(adjCom);
        if (nodeEdgesTo == null) {
          nodeConnectionsWeight[node].put(
              adjCom, Double.parseDouble(e.getProperty("weight").toString()));
        } else {
          nodeConnectionsWeight[node].put(
              adjCom, nodeEdgesTo + Double.parseDouble(e.getProperty("weight").toString()));
        }

        Integer nodeCountEdgesTo = nodeConnectionsCount[node].get(adjCom);
        if (nodeCountEdgesTo == null) {
          nodeConnectionsCount[node].put(adjCom, 1);
        } else {
          nodeConnectionsCount[node].put(adjCom, nodeCountEdgesTo + 1);
        }

        if (to != adjCom) {
          Double comEdgesto = to.connectionsWeight.get(adjCom);
          if (comEdgesto == null) {
            to.connectionsWeight.put(
                adjCom, Double.parseDouble(e.getProperty("weight").toString()));
          } else {
            to.connectionsWeight.put(
                adjCom, comEdgesto + Double.parseDouble(e.getProperty("weight").toString()));
          }

          Integer comCountEdgesto = to.connectionsCount.get(adjCom);
          if (comCountEdgesto == null) {
            to.connectionsCount.put(adjCom, 1);
          } else {
            to.connectionsCount.put(adjCom, comCountEdgesto + 1);
          }
        }
      }
    }