private void calculateAnchors(){	
		//get rack and print it
		int[] tmpRack = rack.getCards();
		
		//analyze the rack to find the anchor points
		//if the card in slot "i" fits roughly the flat, maximal spread distribution, it is an anchor
		int slotLow = 1, slotHigh;
		for (int i = 1; i <= rack_size; i++){
			slotHigh = i * (card_count / rack_size);
			if (tmpRack[i-1] >= slotLow && tmpRack[i-1] <= slotHigh)
				anchorPoints.add(new Integer(i));
			slotLow = slotHigh + 1;
		}
		
		//add index to anchor points if one of the other anchors is a consecutive of it
		/* THIS CODE DOESNT WORK FOR SOME REASON; SEE BELOW FOR REVISED VERSION
		for (int i = 0; i < anchorPoints.size(); i++)
		{
			if ((tmpRack[i+1] == tmpRack[i] + 1) && !anchorPoints.contains(new Integer(i+1)))
				anchorPoints.add(new Integer(i+1));
		}
		*/
		
		//I had to modify this section quite a bit to get it to not throw errors;
		//... not sure if this is what Kyle meant by his above comment
		for (int i=0; i<anchorPoints.size(); i++){
			int anchor = anchorPoints.get(i),
				consec_anchor = new Integer(anchor+1);
			if (anchor != rack_size && tmpRack[anchor-1] + 1 == tmpRack[anchor] && !anchorPoints.contains(consec_anchor))
				anchorPoints.add(consec_anchor);
		}
		
		Collections.sort(anchorPoints); //sort the collection if any ranges were added
	}