diff --git a/ChangeLog b/ChangeLog
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,5 @@
+1.1.9 : Added NOINLINE pragma for KeyT
+
 1.1.8 : Added an Applicative instance for KeyT that is more non-strict than using the monad instance.
 
 1.1.7: Fixed example in docs.
diff --git a/Data/HKeyPrivate.hs b/Data/HKeyPrivate.hs
--- a/Data/HKeyPrivate.hs
+++ b/Data/HKeyPrivate.hs
@@ -157,9 +157,10 @@
 runKeyT (KeyT m) = loop m where
   loop :: TermM (GD T m) b -> m b
   loop = interpret bind return  where
+  {-# NOINLINE bind #-}
   bind :: Bind (GD T m) x (m x)
   bind (Lift m) c = m >>= loop . c
-  bind GetKey  c = loop (c $ unsafePerformIO $ createKey)
+  bind GetKey  c = unsafePerformIO (liftM (loop . c) createKey)
   bind (Split (KeyT m)) c = loop $ c $ loop m
 
 
diff --git a/HMap.cabal b/HMap.cabal
--- a/HMap.cabal
+++ b/HMap.cabal
@@ -1,5 +1,5 @@
 Name:                HMap
-Version:             1.1.8
+Version:             1.1.9
 Synopsis:	     Fast heterogeneous maps and unconstrained typeable like functionality.
 Description:         Fast heterogeneous maps based on Hashmaps and type-able like functionality for type that are not typeable.
 License:             BSD3
