private int setupWorkers(int threadCnt, String nodeFileName, String edgeFileName) throws PubmedPagerankException {
		int initializedCnt = 0; //how many workers were successfully setup
		
		try {
			pageRankWorkers = new MeshPaperPageRank[threadCnt];
			for (int i = 0; i < threadCnt; i++) {
				pageRankWorkers[i] = new MeshPaperPageRank(i+1, this, nodeFileName, edgeFileName);
				if (pageRankWorkers[i].isInitialized() )
					initializedCnt++;
			}
		} finally {
			if (initializedCnt != threadCnt && pageRankWorkers != null) {
				try {
					for (int i = 0; i < threadCnt; i++) {
						if (pageRankWorkers[i] != null) {
							pageRankWorkers[i].shutdown();
							pageRankWorkers[i] = null;
						}
					}
				} catch (Exception e){}
				log.error("Only " + initializedCnt + " of the " + threadCnt + 
						" workers were successfully initialized, so shutting down without running.");
			} //end of shutting down a bad startup
		} //end of finally
		return(initializedCnt);
	} //end of setupWorkers