@SuppressWarnings("unchecked")
void readVibFreqs() throws Exception {
    readLine();
    String label = "";
    int frequencyCount = parseInt(line);
    Vector vibrations = new Vector();
    Vector freqs = new Vector();
    logger.log("reading VIBFREQ vibration records: frequencyCount = "
        + frequencyCount);
    for (int i = 0; i < frequencyCount; ++i) {
      int atomCount0 = atomSetCollection.atomCount;
      atomSetCollection.cloneLastAtomSet();
      addBonds(bondData, atomCount0);
      readLine();
      Hashtable info = new Hashtable();
      float freq = parseFloat(line);
      info.put("freq", new Float(freq));
      if (line.length() > 15
          && !(label = line.substring(15, line.length())).equals("???"))
        info.put("label", label);
      freqs.add(info);
      atomSetCollection.setAtomSetName(label + " " + freq + " cm^-1");
      atomSetCollection.setAtomSetProperty(SmarterJmolAdapter.PATH_KEY,
          "Frequencies");
    }
    atomSetCollection.setAtomSetCollectionAuxiliaryInfo("VibFreqs", freqs);
    int atomCount = atomSetCollection.getFirstAtomSetAtomCount();
    Atom[] atoms = atomSetCollection.atoms;
    Vector vib = new Vector();
    Vector vibatom = new Vector();
    int ifreq = 0;
    int iatom = atomCount; // add vibrations starting at second atomset
    int nValues = 3;
    float[] atomInfo = new float[3];
    while (readLine() != null) {
      String tokens2[] = getTokens(line);
      for (int i = 0; i < tokens2.length; i++) {
        float f = parseFloat(tokens2[i]);
        atomInfo[i % nValues] = f;
        vibatom.add(new Float(f));
        if ((i + 1) % nValues == 0) {
          //Logger.debug(ifreq + " atom " + iatom + "/" + atomCount
          //      + " vectors: " + atomInfo[0] + " " + atomInfo[1] + " "
          //      + atomInfo[2]);
          atoms[iatom]
              .addVibrationVector(atomInfo[0], atomInfo[1], atomInfo[2]);
          vib.add(vibatom);
          vibatom = new Vector();
          ++iatom;
        }
      }
      if (iatom % atomCount == 0) {
        vibrations.add(vib);
        vib = new Vector();
        if (++ifreq == frequencyCount)
          break; ///loop exit
      }
    }
    atomSetCollection
        .setAtomSetCollectionAuxiliaryInfo("vibration", vibrations);
  }