diff --git a/Data/Interned/Internal.hs b/Data/Interned/Internal.hs
--- a/Data/Interned/Internal.hs
+++ b/Data/Interned/Internal.hs
@@ -1,6 +1,7 @@
 {-# LANGUAGE TypeFamilies
            , FlexibleInstances
            , FlexibleContexts
+           , BangPatterns
            , GeneralizedNewtypeDeriving #-}
 
 module Data.Interned.Internal
@@ -57,9 +58,9 @@
   unintern :: t -> Uninterned t
 
 intern :: Interned t => Uninterned t -> t
-intern bt = unsafeDupablePerformIO $ modifyAdvice $ modifyMVar (getCache cache) go
+intern !bt = unsafeDupablePerformIO $ modifyAdvice $ modifyMVar (getCache cache) go
   where
-  dt = describe bt
+  !dt = describe bt
   go (CacheState i m) = case HashMap.lookup dt m of
     Nothing -> k i m
     Just wt -> do
@@ -75,7 +76,7 @@
 
 -- given a description, go hunting for an entry in the cache
 recover :: Interned t => Description t -> IO (Maybe t)
-recover dt = do
+recover !dt = do
   CacheState _ m <- readMVar $ getCache cache
   case HashMap.lookup dt m of
     Nothing -> return Nothing
diff --git a/intern.cabal b/intern.cabal
--- a/intern.cabal
+++ b/intern.cabal
@@ -1,6 +1,6 @@
 name:          intern
 category:      Data, Data Structures
-version:       0.5.1
+version:       0.5.1.1
 license:       BSD3
 cabal-version: >= 1.6
 license-file:  LICENSE
