diff --git a/Control/Applicative/Error.hs b/Control/Applicative/Error.hs
--- a/Control/Applicative/Error.hs
+++ b/Control/Applicative/Error.hs
@@ -20,11 +20,20 @@
    Failure msgs' <*> Success _ = Failure msgs'
    Success f <*> Success x = Success (f x)
 
+maybeRead :: Read a => String -> Maybe a
+maybeRead s | [(i, _)] <- readsPrec 0 s = Just i
+            | otherwise = Nothing
+
 -- | Tries to read a value. Shows an error message when reading fails.
-maybeRead :: Read a => String -> String -> Failing a
-maybeRead s msg | [(i, _)] <- readsPrec 0 s = Success i
-                | otherwise = Failure [msg]
+maybeRead' :: Read a => String -> String -> Failing a
+maybeRead' s msg | Just x <- maybeRead s = Success x
+                 | otherwise = Failure [msg]
 
 -- | Tries to read an Integer
 asInteger :: String -> Failing Integer
-asInteger s = maybeRead s (s ++ " is not a valid integer")
+asInteger s = maybeRead' s (s ++ " is not a valid integer")
+
+-- | Tries conversion to an enum
+tryToEnum :: Enum a => Int -> Failing a
+tryToEnum x | value <- toEnum x = Success value
+            | otherwise         = Failure ["Conversion error"]
diff --git a/applicative-extras.cabal b/applicative-extras.cabal
--- a/applicative-extras.cabal
+++ b/applicative-extras.cabal
@@ -1,5 +1,5 @@
 Name:            applicative-extras
-Version:         0.1.2
+Version:         0.1.3
 Synopsis:        Instances for Applicative
 Description:     Some instances for Applicative and type-level composition.
 Category:        Control
