public ArrayList<Object> getInfoFromPDB(ArrayList<String> pdbFile) {
    	//empty at beginning
    	ArrayList<Atom> atomList = new ArrayList<Atom>();
    	
    	CartesianCoord coords;
    	String atomType, pdbResNum;
    	//default double value is 0
    	double tempFact, meanBFactor, std, totalBFactor=0, totalSquaredBFactor=0;
    	//default boolean value is false
    	boolean backbone=false, nTerm=false, cTerm=false, nextIsNTerm = false;
    	
    	for (int i = 0; i<pdbFile.size(); ++i) {
	    // if it is an Atom
	    if(pdbFile.get(i).substring(0,6).trim().equals("ATOM")) {
		//splits the data according to customPDBSplit()
		String[] strs = customPDBSplit(pdbFile.get(i));

		// gets all necessary information for an Atom
		// coords, atomType, resNum, bFactor, backbone, nTerm, cTerm
		coords = getCoordinates(strs);		
		atomType = strs[1].trim();
		nTerm = nextIsNTerm;
		nextIsNTerm = false;
		String[] atomTypeArray = {"N","CA","C","O","OXT","OT1","OT2"};
		if(multiEquals(atomType, atomTypeArray)) {
		    backbone = true;
		}
		pdbResNum = strs[3].trim();
		tempFact = Double.parseDouble(strs[7].trim());	
		totalBFactor += tempFact;
		totalSquaredBFactor += Math.pow(tempFact, 2);
		atomList.add(new Atom(atomType, pdbResNum, backbone, nTerm, cTerm, tempFact, coords));
	    }
	    // extra information on whether or not it is a terminus
	    // one previous is a cTerm
	    // next one is an nTerm
	    if(pdbFile.get(i).substring(0,6).trim().equals("TER")) {
		nextIsNTerm = true;
		atomList.get(atomList.size()-1).setCTerm(true);
	    }
    	}// end of for
    	
    	meanBFactor = totalBFactor / (atomList.size() - 1);
    	std = calcStdDev(totalBFactor, totalSquaredBFactor, atomList.size() - 1);
    	
    	ArrayList<Object> retMe = new ArrayList<Object>();
    	retMe.add(atomList);
    	retMe.add(meanBFactor);
    	retMe.add(std);
    	return retMe;
    }