public void runHuckedInsertionSortV2(int[] array){
		// start timer
		long startTime = System.currentTimeMillis();
		
		// start Huck specific timer
		long startHuckTime = System.currentTimeMillis();
		
		// length of array
		int length = array.length;
		
		// Array's statistical mean.
		double mean = StandardDeviation.getAverage(array);
		
		// Array's statistical standard deviation
		double deviation = StandardDeviation.getStandardDeviation(array);
		
		// Array's coefficient of variation
		double cv = mean / deviation;
		
		// The value for determining a turtle.
		int turtleValue;
				
		// array of denominators, elements divided by coefficient of variation (reason: allows for mild dynamic response to data).
		double[] calculationsArray = {0.25/cv, 0.50/cv, 2.0/cv, 2.25/cv, 2.5/cv};
		
		//Hucked Turtle count.
		int huckedTurtles = 0;		
		
		
		for(int i = 0; i < calculationsArray.length; i++){
			
			// calculate turtle threshold
			turtleValue = (int)(mean * calculationsArray[i]);	
			
			//System.out.print("t: " + threshold +", ");

			// pre-sort turtle hucking; Start inserting next sequence of turtles at conclusion of last iteration.
			for(int counter = huckedTurtles; counter < length; counter++){
				if (array[counter] < turtleValue ) { 
					
					// swap
					int temp = array[huckedTurtles];
					array[huckedTurtles] = array[counter];
					array[counter] = temp;

					// increment hucked turtles
					huckedTurtles++;
				}
			}	
			//System.out.println("ht: " + huckedTurtles +", ");		
		}
		
		// end Huck specific timer
		long finishHuckTime = System.currentTimeMillis();
		
		///////////////////////////////
		///		INSERTION SORT		///
		///////////////////////////////
		
		for(int i = 1; i < length; i++){
			// temporarily save current value
			int temp = array[i];
			
			// loop variable created outside loop to increase scope
			int checkPrevious;
			
			// loop over previous elements while checkPrevious >= to index 0 of array AND current element > temp value.
			for( checkPrevious = i - 1; checkPrevious >= 0 && array[checkPrevious] > temp; checkPrevious--){
				array[checkPrevious + 1] = array[checkPrevious];
			}
			
			// insert temp value into array[checkPrevious + 1];
			array[checkPrevious +1] = temp;
		}
		
		// end timer
		long finishTime = System.currentTimeMillis();
		
		// calculate method's runtime.
		long diff = finishTime - startTime;
		
		// calculate Huck's run time
		long huckDiff = finishHuckTime - startHuckTime;
		
		// send results to listener
		if(listener != null){
			Map<Enum, Integer> results = new HashMap<Enum, Integer>();
			results.put(HuckConstants.C.SORT_ID, HuckConstants.HUCK_V2);
			results.put(HuckConstants.C.TOTAL_MILLIS, (int)diff);
			results.put(HuckConstants.C.HUCK_MILLIS, (int)huckDiff);
			results.put(HuckConstants.C.HUCKED_TURTLES, huckedTurtles);
			listener.receiveSortData(results);
		}
		
//		// print out results
//		System.out.println("\tHuck time millis: "+ huckDiff);
//		System.out.println("\tHuckInsertionSortV2 millis: " + diff);
//		System.out.println("\thucked turtles: " +huckedTurtles + "\n");
	}