diff --git a/Mapping.cabal b/Mapping.cabal
--- a/Mapping.cabal
+++ b/Mapping.cabal
@@ -2,7 +2,7 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                Mapping
-version:             1.0.0.0
+version:             2.0.0.0
 synopsis:            Mapping
 -- description:         
 homepage:            https://github.com/zaoqi/Mapping.hs
diff --git a/Mapping.hs b/Mapping.hs
--- a/Mapping.hs
+++ b/Mapping.hs
@@ -29,13 +29,13 @@
 
 data Mapping k v = MappingNil | MappingNode (Mapping k v) k v (Mapping k v) deriving Show
 
-mappingRef :: Ord k => Mapping k v -> k -> v -> v
-mappingRef (MappingNode l mk v r) k d =
+mappingRef :: Ord k => Mapping k v -> k -> Maybe v
+mappingRef (MappingNode l mk v r) k =
     case compare k mk of
-        LT -> mappingRef l k d
-        EQ -> v
-        GT -> mappingRef r k d
-mappingRef MappingNil _ d = d
+        LT -> mappingRef l k
+        EQ -> Just v
+        GT -> mappingRef r k
+mappingRef MappingNil _ = Nothing
 
 mappingSet :: Ord k => Mapping k v -> k -> v -> Mapping k v
 mappingSet (MappingNode l mk mv r) k v =
