private void setAtomNamesAndNumbers() {
		// first, validate that all atomSerials are NaN
		if (atomSerials == null) {
			// now, we'll assign 1-based atom numbers within each model
			int lastModelIndex = Integer.MAX_VALUE;
			int modelAtomIndex = 0;
			atomSerials = new int[atomCount];
			for (int i = 0; i < atomCount; ++i) {
				Atom atom = atoms[i];
				if (atom.modelIndex != lastModelIndex) {
					lastModelIndex = atom.modelIndex;
					modelAtomIndex = (isZeroBased ? 0 : 1);
				}
				atomSerials[i] = modelAtomIndex++;
			}
		}
		if (atomNames == null)
			atomNames = new String[atomCount];
		for (int i = 0; i < atomCount; ++i)
			if (atomNames[i] == null) {
				Atom atom = atoms[i];
				atomNames[i] = atom.getElementSymbol() + atom.getAtomNumber();
				// System.out.println("atom " + i + " " + atomNames[i]);
			}
	}