diff --git a/Data/Interned/Internal.hs b/Data/Interned/Internal.hs
--- a/Data/Interned/Internal.hs
+++ b/Data/Interned/Internal.hs
@@ -37,7 +37,6 @@
 mkCache = result where
   result = Cache $ unsafePerformIO $ newMVar $ CacheState (seedIdentity result) HashMap.empty
 
-
 type Id = Int
 
 class ( Eq (Description t)
@@ -50,13 +49,15 @@
   identity :: t -> Id
   seedIdentity :: p t -> Id
   seedIdentity _ = 0
+  modifyAdvice :: IO t -> IO t
+  modifyAdvice = id
   cache        :: Cache t
 
 class Interned t => Uninternable t where
   unintern :: t -> Uninterned t
 
 intern :: Interned t => Uninterned t -> t
-intern bt = unsafeDupablePerformIO $ modifyMVar (getCache cache) go 
+intern bt = unsafeDupablePerformIO $ modifyAdvice $ modifyMVar (getCache cache) go
   where
   dt = describe bt
   go (CacheState i m) = case HashMap.lookup dt m of
diff --git a/Setup.hs b/Setup.hs
deleted file mode 100644
--- a/Setup.hs
+++ /dev/null
@@ -1,2 +0,0 @@
-import Distribution.Simple
-main = defaultMain
diff --git a/Setup.lhs b/Setup.lhs
new file mode 100644
--- /dev/null
+++ b/Setup.lhs
@@ -0,0 +1,7 @@
+#!/usr/bin/runhaskell
+> module Main (main) where
+
+> import Distribution.Simple
+
+> main :: IO ()
+> main = defaultMain
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.0
+version:       0.5.1
 license:       BSD3
 cabal-version: >= 1.6
 license-file:  LICENSE
