diff --git a/hw-prim.cabal b/hw-prim.cabal
--- a/hw-prim.cabal
+++ b/hw-prim.cabal
@@ -1,5 +1,5 @@
 name:                   hw-prim
-version:                0.0.0.12
+version:                0.0.0.13
 synopsis:               Primitive functions and data types
 description:            Please see README.md
 homepage:               http://github.com/haskell-works/hw-prim#readme
diff --git a/src/HaskellWorks/Data/Decode.hs b/src/HaskellWorks/Data/Decode.hs
--- a/src/HaskellWorks/Data/Decode.hs
+++ b/src/HaskellWorks/Data/Decode.hs
@@ -2,7 +2,10 @@
 
 module HaskellWorks.Data.Decode
   ( Decode(..)
+  , DecodeError(..)
   ) where
 
-class Decode c a where
-  decode :: c -> Maybe a
+data DecodeError = DecodeError String
+
+class Decode s t where
+  decode :: s -> Either DecodeError t
