public String translate(int aNumber) {
        String result = "";
        while (aNumber > 0) {
            for (int i = RomanBoundaries.values().length - 1; i >= 0; i--) {
                final RomanBoundaries boundary = RomanBoundaries.values()[i];
                final int value = boundary.getValue();
                final int specialValue = boundary.getSpecialValue();
                final int specialDifference = value - specialValue;
                if (isSpecialCase(aNumber, value, specialDifference)) {
                    result += boundary.getSpecialRepresentation();
                    aNumber -= specialDifference;
                    break;
                }else if (boundary.value <= aNumber) {
                    result += boundary.toString();
                    aNumber -= value;
                    break;
                }
            }
        }

        return result;
    }