diff --git a/tcr-roman-numerals/src/main/java/fr/ippon/kata/numeral/Numerals.java b/tcr-roman-numerals/src/main/java/fr/ippon/kata/numeral/Numerals.java
index 9ae95cbd7ad4bfba429a2158ea1183b987af797c..2217498c9a9b40cce0f86b94407dc096804c546c 100644
--- a/tcr-roman-numerals/src/main/java/fr/ippon/kata/numeral/Numerals.java
+++ b/tcr-roman-numerals/src/main/java/fr/ippon/kata/numeral/Numerals.java
@@ -2,18 +2,15 @@ package fr.ippon.kata.numeral;
 
 import java.util.Map.Entry;
 import java.util.NavigableMap;
+import java.util.Optional;
 import java.util.TreeMap;
 
 public class Numerals {
   private static final NavigableMap<Integer, String> CONVERSIONS = buildConversions();
 
   public static String toRoman(int arabic) {
-    if (arabic == 0) {
-      return "";
-    }
-
-    Entry<Integer, String> highestKnownConversion = CONVERSIONS.floorEntry(arabic);
-    return highestKnownConversion.getValue() + toRoman(arabic - highestKnownConversion.getKey());
+    Optional<Entry<Integer, String>> highestKnownConversion = Optional.ofNullable(CONVERSIONS.floorEntry(arabic));
+    return highestKnownConversion.map(conversion -> conversion.getValue() + toRoman(arabic - conversion.getKey())).orElse("");
   }
 
   private static NavigableMap<Integer, String> buildConversions() {