public Vector<Block> extractBlocks(ProbChar[] probabilities) {
		//make a vector to hold all the new blocks
		Vector<Block> blocks = new Vector<Block>();

		//start filling the vector
		//go through the probabilities array, looking for blocks of non wilds
		Block currentBlock = null;
		for(int index = 0; index < probabilities.length; index++) {
			if(probabilities[index].isWild()) {
				if(currentBlock == null) {
					//we're not working on a block
					//keep looking
					continue;
				} else {
					//we've just finished a block
					//add it to the vector
					blocks.add(currentBlock);
					//set the currrent block to null so that it doesn't get added to
					currentBlock = null;
				}
			} else {
				//we're not looking at a wild character
				if(currentBlock == null) {
					//we haven't started a block yet  - start one
					currentBlock = new Block(index);
					currentBlock.addCharacter(probabilities[index]);
				} else {
					//we're in the middle of constructing a block
					//add the current character to it
					currentBlock.addCharacter(probabilities[index]);
				}
			}
		}
		//if we've finished the array but haven't finished a block, finish the block and add it to the vector
		if(currentBlock != null)
			blocks.add(currentBlock);

		//all done - return the blocks
		return blocks;
	}