// client specific
  public void mergeChanges(
      ArrayList<TreeMap<Integer, Boolean>> mapArray,
      ArrayList<TreeMap<Integer, FactoryObject>> dataArray) {
    if (mapArray.size() == 1) {
      TreeMap<Integer, Boolean> changeMap = mapArray.get(0);
      TreeMap<Integer, FactoryObject> changeData = dataArray.get(0);

      // iterate over all the keys present in changeMap
      // after this loop is complete, the frameAnimationData map will be accurately synced with the
      // server copy
      Set<Integer> t = changeMap.keySet();
      for (Integer i : t) {
        if (changeMap.get(i)) {
          fos.put(i, changeData.get(i));
        } else {
          fos.remove(i);
        }
      }
    } else {
      System.out.println("Warning: Corrupt frame data");
    }
    repaint();
  }