diff --git a/Development/Shake/Core.hs b/Development/Shake/Core.hs
--- a/Development/Shake/Core.hs
+++ b/Development/Shake/Core.hs
@@ -9,13 +9,13 @@
     ) where
 
 import Prelude hiding (catch)
-import Development.Shake.Pool
 import Control.DeepSeq
 import Control.Exception
 import Control.Monad
 import Control.Monad.IO.Class
 import Control.Monad.Trans.State
 import Data.Binary(Binary)
+import Data.Data
 import Data.Hashable
 import Data.Function
 import Data.List
@@ -24,6 +24,7 @@
 import Data.Monoid
 import Data.Typeable
 
+import Development.Shake.Pool
 import Development.Shake.Database
 import Development.Shake.Locks
 import Development.Shake.Value
@@ -46,7 +47,7 @@
     ,shakeDump :: Bool -- ^ Dump all profiling information to 'shakeFiles' plus the extension @.js@ (defaults to 'False').
     ,shakeLint :: Bool -- ^ Perform basic sanity checks after building (defaults to 'False').
     }
-    deriving (Show, Eq, Ord)
+    deriving (Show,Eq,Ord,Typeable,Data)
 
 -- | The default set of 'ShakeOptions'.
 shakeOptions :: ShakeOptions
@@ -77,7 +78,7 @@
     | Normal -- ^ Print normal messages (typically errors and warnings).
     | Loud   -- ^ Print lots of messages (typically errors, warnings and status updates).
     | Diagnostic -- ^ Print messages for virtually everything (for debugging a build system).
-      deriving (Eq,Ord,Bounded,Enum,Show,Read,Typeable)
+      deriving (Eq,Ord,Bounded,Enum,Show,Read,Typeable,Data)
 
 
 ---------------------------------------------------------------------
diff --git a/Development/Shake/TypeHash.hs b/Development/Shake/TypeHash.hs
deleted file mode 100644
--- a/Development/Shake/TypeHash.hs
+++ /dev/null
@@ -1,30 +0,0 @@
-{-# LANGUAGE CPP #-}
-
-{- |
-This module just contains the hash function on TypeRep. In future versions
-of the hashable package it is available in Data.Hashable.
--}
-module Development.Shake.TypeHash() where
-
-import Data.Hashable
-
-#if __GLASGOW_HASKELL__ < 702
-
-import Data.Typeable
-import System.IO.Unsafe
-
-typeHash x = unsafePerformIO $ typeRepKey x
-
-#else
-
-import GHC.Fingerprint.Type(Fingerprint(..))
-import Data.Typeable.Internal(TypeRep(..))
-
-typeHash (TypeRep (Fingerprint x _) _ _) = fromIntegral x
-
-#endif
-
-typeHash :: TypeRep -> Int
-
-instance Hashable TypeRep where
-    hash = typeHash
diff --git a/Development/Shake/Value.hs b/Development/Shake/Value.hs
--- a/Development/Shake/Value.hs
+++ b/Development/Shake/Value.hs
@@ -18,7 +18,6 @@
 import Data.IORef
 import Data.Maybe
 import qualified Data.HashMap.Strict as Map
-import Development.Shake.TypeHash()
 import System.IO.Unsafe
 
 
diff --git a/shake.cabal b/shake.cabal
--- a/shake.cabal
+++ b/shake.cabal
@@ -1,7 +1,7 @@
 cabal-version:      >= 1.6
 build-type:         Simple
 name:               shake
-version:            0.2.4
+version:            0.2.5
 license:            BSD3
 license-file:       LICENSE
 category:           Development
@@ -52,7 +52,7 @@
         base == 4.*,
         old-time,
         directory,
-        hashable,
+        hashable >= 1.1.2.3 && < 1.2,
         binary,
         filepath,
         process,
@@ -79,7 +79,6 @@
         Development.Shake.Locks
         Development.Shake.Oracle
         Development.Shake.Pool
-        Development.Shake.TypeHash
         Development.Shake.Rerun
         Development.Shake.Value
 
