public static TUnit doLeverage(TUnit inputUnit, ArrayList<TUnit> translationMemories, int fuzzyLimit, boolean checkFile, boolean checkID) {
		//Check fuzzy limit
		if (fuzzyLimit<0) {
			fuzzyLimit=0;
		}else if (fuzzyLimit>100) {
			fuzzyLimit=100;
		}
		if (inputUnit==null || translationMemories==null ) return inputUnit;

		TUnit outputUnit = new TUnit("","","");

		//Start leverage

		outputUnit = strictLeverage(inputUnit, translationMemories, checkFile, checkID);

		// If Stric leverage failed to get a match, try loose leverage if fuzzyLimit is less than 100
		if (inputUnit.originalString.length() >0 && outputUnit.translatedString.length() ==0 && fuzzyLimit<100) {
			outputUnit = looseLeverage(inputUnit,translationMemories, fuzzyLimit);
		}
		// if no matches found, set the return value to original unit
		if (inputUnit.originalString.length() >0 && outputUnit.translatedString.length() ==0) {
			outputUnit = inputUnit;
		}
		return outputUnit;
	}