diff --git a/NEWS b/NEWS
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,6 @@
+Changes in 0.5.0
+* Added Eq, Show, Data, Typeable instances
+
 Changes in 0.4.6
 * Levi Schuck added fix for Cabal 1.18
 
diff --git a/gsl-random.cabal b/gsl-random.cabal
--- a/gsl-random.cabal
+++ b/gsl-random.cabal
@@ -1,5 +1,5 @@
 name:            gsl-random
-version:         0.4.6
+version:         0.5.0
 homepage:        http://github.com/patperry/hs-gsl-random
 synopsis:        Bindings the the GSL random number generation facilities.
 description:
@@ -30,6 +30,7 @@
     c-sources:          cbits/qrng_extras.c
 
     ghc-options:        -Wall
-    extensions:         ForeignFunctionInterface
+    extensions:         DeriveDataTypeable,
+                        ForeignFunctionInterface
     build-depends:      base   >= 4       && < 5
                       , vector >= 0.7.0.1 && < 0.11
diff --git a/lib/GSL/Random/Gen/Internal.hs b/lib/GSL/Random/Gen/Internal.hs
--- a/lib/GSL/Random/Gen/Internal.hs
+++ b/lib/GSL/Random/Gen/Internal.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE DeriveDataTypeable, ForeignFunctionInterface #-}
 -----------------------------------------------------------------------------
 -- |
 -- Module     : GSL.Random.Gen.Internal
@@ -42,6 +42,7 @@
     ) where
 
 import Control.Monad( liftM )
+import Data.Data( Data, Typeable )
 import Data.Maybe( fromJust )
 import Foreign( ForeignPtr, FunPtr, Ptr, Word8, Word64, advancePtr, castPtr,
     peek, peekArray, pokeArray, newForeignPtr, nullPtr, withForeignPtr )
@@ -50,8 +51,8 @@
 import System.IO.Unsafe( unsafePerformIO )
 
 
-newtype RNG     = MkRNG (ForeignPtr ())
-newtype RNGType = MkRNGType (Ptr ())
+newtype RNG     = MkRNG (ForeignPtr ()) deriving (Eq, Show, Data, Typeable)
+newtype RNGType = MkRNGType (Ptr ())    deriving (Eq, Show, Data, Typeable)
 
 
 --------------------------- Initialization ----------------------------------
diff --git a/lib/GSL/Random/Quasi/Internal.hs b/lib/GSL/Random/Quasi/Internal.hs
--- a/lib/GSL/Random/Quasi/Internal.hs
+++ b/lib/GSL/Random/Quasi/Internal.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE DeriveDataTypeable, ForeignFunctionInterface #-}
 ----------------------------------------------------------------------------
 -- |
 -- Module     : GSL.Random.Quasi.Internal
@@ -42,14 +42,15 @@
     ) where
 
 import Control.Monad( liftM )
+import Data.Data( Data, Typeable )
 import Foreign( ForeignPtr, FunPtr, Ptr, Word8, Word64, allocaArray,
     newForeignPtr, peekArray, pokeArray, withForeignPtr )
 import Foreign.C.String( CString, peekCAString )
 import Foreign.C.Types( CInt(..), CSize(..), CUInt(..) )
 import System.IO.Unsafe( unsafePerformIO )
 
-newtype QRNG     = MkQRNG (ForeignPtr QRNG)
-newtype QRNGType = MkQRNGType (Ptr QRNGType)
+newtype QRNG     = MkQRNG (ForeignPtr QRNG)  deriving (Eq, Show, Data, Typeable)
+newtype QRNGType = MkQRNGType (Ptr QRNGType) deriving (Eq, Show, Data, Typeable)
 
 
 --------------------------- Initialization ---------------------------------
