diff --git a/ghcjs-dom-jsffi.cabal b/ghcjs-dom-jsffi.cabal
--- a/ghcjs-dom-jsffi.cabal
+++ b/ghcjs-dom-jsffi.cabal
@@ -1,5 +1,5 @@
 name: ghcjs-dom-jsffi
-version: 0.4.1.0
+version: 0.4.1.1
 cabal-version: >=1.24
 build-type: Simple
 license: MIT
diff --git a/src/GHCJS/DOM/Types.hs b/src/GHCJS/DOM/Types.hs
--- a/src/GHCJS/DOM/Types.hs
+++ b/src/GHCJS/DOM/Types.hs
@@ -7,7 +7,7 @@
   , DOMContext(..), DOM, askDOM, runDOM, MonadDOM(..), liftDOM
 
   -- * JavaScript Value
-  , JSVal(..), ToJSVal(..), FromJSVal(..)
+  , JSVal(..), ToJSVal(..), FromJSVal(..), PToJSVal(..), PFromJSVal(..)
 
   -- * JavaScript String
   , JSString(..), ToJSString(..), FromJSString(..)
@@ -22,7 +22,7 @@
   -- * Object
   , maybeJSNullOrUndefined, GType(..)
   , GObject(..), IsGObject, toGObject, castToGObject, gTypeGObject, unsafeCastGObject, isA, objectToString
-  , js_eq
+  , js_eq, strictEqual
 
   -- * Callbacks
   , AudioBufferCallback(..)
@@ -714,7 +714,7 @@
 liftJSM = liftIO
 
 -- | This is the same as 'liftJSM' except when using ghcjs-dom-webkit with GHC (instead of ghcjs-dom-jsaddle)
-liftDOM :: DOM a -> DOM a
+liftDOM :: MonadDOM m => DOM a -> m a
 liftDOM = liftIO
 
 -- | Gets the JavaScript context from the monad
@@ -743,6 +743,12 @@
 
 foreign import javascript unsafe
   "$1===$2" js_eq :: JSVal -> JSVal -> Bool
+
+strictEqual :: (ToJSVal a, ToJSVal b) => a -> b -> JSM Bool
+strictEqual a b = do
+    aval <- toJSVal a
+    bval <- toJSVal b
+    return $ js_eq aval bval
 
 foreign import javascript unsafe "h$isInstanceOf $1 $2"
     typeInstanceIsA' :: JSVal -> JSVal -> Bool
