diff --git a/Data/UUID.hs b/Data/UUID.hs
--- a/Data/UUID.hs
+++ b/Data/UUID.hs
@@ -1,4 +1,5 @@
-
+{-# LANGUAGE DeriveDataTypeable
+  #-}
 {-| The 'UUID' datatype.
  -}
 
@@ -13,6 +14,7 @@
 import Data.Binary.Put
 import Data.Binary.Get
 import Data.Bits
+import Data.Typeable
 import Foreign.C
 import Foreign.ForeignPtr
 import Foreign
@@ -34,7 +36,7 @@
 data UUID                    =  UUID
   !Word8 !Word8 !Word8 !Word8 !Word8 !Word8 !Word8 !Word8
   !Word8 !Word8 !Word8 !Word8 !Word8 !Word8 !Word8 !Word8
- deriving (Eq, Ord)
+ deriving (Eq, Ord, Typeable)
 instance Show UUID where
   show (UUID x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF)
     = printf formatUUID x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF
diff --git a/system-uuid.cabal b/system-uuid.cabal
--- a/system-uuid.cabal
+++ b/system-uuid.cabal
@@ -1,5 +1,5 @@
 name                          : system-uuid
-version                       : 1.3.1
+version                       : 1.4.0
 category                      : System
 license                       : BSD3
 license-file                  : LICENSE
@@ -12,7 +12,7 @@
   contact the author if your platform is not supported.
 
 
-cabal-version                 : >= 1.2
+cabal-version                 : >= 1.2.3
 build-type                    : Simple
 extra-source-files            : README
                                 ACKNOWLEDGEMENTS
@@ -56,5 +56,6 @@
   extensions                  : ForeignFunctionInterface
                                 TemplateHaskell
                                 PatternGuards
+                                DeriveDataTypeable
                                 CPP
 
