private List<String> findWords(final String number, final boolean leftIsDigit) {
		final List<String> result = new ArrayList<String>();
		addAllWords(result, mapper.getWords(number));
		if (number.length() == 1) {
			if (result.isEmpty() && !leftIsDigit) {
				result.add(number);
			}
			return result;
		}

		for (int i = 0; i < number.length() - 1; i++) {
			final String left = number.substring(0, i + 1);
			final String right = number.substring(i + 1);

			final List<String> leftWords = new ArrayList<String>();
			boolean currentLeftIsDigit = false;
			addAllWords(leftWords, mapper.getWords(left));

			if (!leftWords.isEmpty()) {
				final List<String> rightWords = findWords(right, currentLeftIsDigit);

				if (!rightWords.isEmpty()) {
					combineLeftAndRight(result, leftWords, rightWords);
				}
			}
		}
		
		if (result.isEmpty() && !leftIsDigit) {
			final String right = number.substring(1);
			final List<String> rightWords = findWords(right, true);
			if (!rightWords.isEmpty()) {
				final List<String> leftWords = new ArrayList<String>();
				leftWords.add(number.substring(0, 1));
				combineLeftAndRight(result, leftWords, rightWords);
			}
		}

		return result;
	}