diff --git a/ChangeLog b/ChangeLog
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,5 @@
+1.2.2: Added runKey utility function
+
 1.2.1 : Fixed: now exports purge
 
 1.2.0 : Added MonadFix instance for KeyT
diff --git a/Data/HKeyPrivate.hs b/Data/HKeyPrivate.hs
--- a/Data/HKeyPrivate.hs
+++ b/Data/HKeyPrivate.hs
@@ -88,7 +88,12 @@
   return = Return
   (>>=)  = Bind
 
+instance Functor (TermM f) where
+  fmap  = liftM
 
+instance Applicative (TermM f) where
+  pure = return
+  (<*>) = ap 
 
 type Bind f a v = (forall w. f w -> (w -> TermM f a) -> v)
 
@@ -158,6 +163,10 @@
 instance MonadTrans (KeyT s) where
   lift m = KeyT (Prim (Lift m))
 
+type Key s = KeyT s Identity
+
+runKey :: (forall s. Key s a) -> a 
+runKey m = runIdentity (runKeyT m)
 
 -- | Run a key monad. Existential type makes sure keys cannot escape.
 runKeyT :: forall m a. Monad m => (forall s. KeyT s m a) -> m a
diff --git a/Data/HMap.hs b/Data/HMap.hs
--- a/Data/HMap.hs
+++ b/Data/HMap.hs
@@ -164,10 +164,10 @@
 
             -- ** Intersection
             , intersection
-            -- * Garbage collection
-            , purge
             -- * Key reexports
             , module Data.HKey
+            -- * Garbage collection
+            ,purge
             ) 
 
 where
diff --git a/HMap.cabal b/HMap.cabal
--- a/HMap.cabal
+++ b/HMap.cabal
@@ -1,5 +1,5 @@
 Name:                HMap
-Version:             1.2.1
+Version:             1.2.2
 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
