public ArrayList<Residue> calcPMOI(ArrayList<Residue> residueList) {
		newResArray = new ArrayList<Residue>();
		int bc = 0;
		int newC = 0;
		boolean nt, ct;
		
		for (int i = 0; i < residueList.size(); ++i) {
			// get relevant info for residue construction
			ArrayList<Atom> atomList = residueList.get(i).getAtomList();
			Residue currentResidue = residueList.get(i);
			String pdbNum = currentResidue.getResNum();
			String sstype = currentResidue.getSS();

			ct = currentResidue.getCTerm();
			nt = currentResidue.getNTerm();
			if (ct) {
				++newC;
			}
			if (nt) {
				++newC;
			}
			while (newC > 0) {
				--newC;
				++bc;
				// if C-terminus or N-terminus => calculate PMOI

				// calculate total mass of residue
				double totalMassOfResidue = calcMassResidue(atomList);

				// calc geo center of protein
				CartesianCoord centroid = calcCentroid(atomList,
						totalMassOfResidue);

				// calc inertia tensor matrix
				double[][] it = calcInertiaTensor(atomList, centroid);

				// get principal moments of inertia from it matrix
				double xCoordPMOI = it[0][0];
				double yCoordPMOI = it[1][1];
				double zCoordPMOI = it[2][2];

				// create principal moment of inertia cartesian coord object
				CartesianCoord principalMomentsOfInertia = new CartesianCoord(
						xCoordPMOI, yCoordPMOI, zCoordPMOI);

				// create residue list only if b factor score of residue is in acceptable range
				if (discardBFactor == false) {
					newResArray.add(new Residue(pdbNum, principalMomentsOfInertia,
									atomList, sstype, nt, ct));
				}
			}
		}
		return newResArray;
	}// end method