diff --git a/jsaddle.cabal b/jsaddle.cabal
--- a/jsaddle.cabal
+++ b/jsaddle.cabal
@@ -1,5 +1,5 @@
 name: jsaddle
-version: 0.6.0.0
+version: 0.6.0.1
 cabal-version: >=1.10
 build-type: Simple
 license: MIT
@@ -27,7 +27,6 @@
     else
         build-depends:
             aeson >=0.8.0.2 && <1.1,
-            bytestring >=0.10.6.0 && <0.11,
             containers >=0.5.6.2 && <0.6,
             filepath >=1.4.0.0 && <1.5,
             http-types >=0.8.6 && <0.10,
@@ -52,6 +51,7 @@
         Language.Javascript.JSaddle.Types
     build-depends:
         base <5,
+        bytestring >=0.10.6.0 && <0.11,
         lens >=3.8.5 && <4.16,
         primitive >=0.6.1.0 && <0.7,
         template-haskell -any,
diff --git a/src/Language/Javascript/JSaddle/Evaluate.hs b/src/Language/Javascript/JSaddle/Evaluate.hs
--- a/src/Language/Javascript/JSaddle/Evaluate.hs
+++ b/src/Language/Javascript/JSaddle/Evaluate.hs
@@ -2,6 +2,7 @@
 {-# LANGUAGE FlexibleInstances #-}
 #ifdef ghcjs_HOST_OS
 {-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# OPTIONS_GHC -Wno-dodgy-exports -Wno-dodgy-imports #-}
 #endif
 -----------------------------------------------------------------------------
 --
@@ -23,8 +24,6 @@
 import Language.Javascript.JSaddle.Types (JSVal)
 #ifdef ghcjs_HOST_OS
 import Control.Monad.IO.Class (MonadIO(..))
-import GHCJS.Types (nullRef)
-import GHCJS.Marshal.Pure (pFromJSVal)
 import Language.Javascript.JSaddle.Types (JSString)
 #else
 import Language.Javascript.JSaddle.Native
diff --git a/src/Language/Javascript/JSaddle/Monad.hs b/src/Language/Javascript/JSaddle/Monad.hs
--- a/src/Language/Javascript/JSaddle/Monad.hs
+++ b/src/Language/Javascript/JSaddle/Monad.hs
@@ -1,5 +1,8 @@
 {-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+#ifdef ghcjs_HOST_OS
+{-# OPTIONS_GHC -Wno-dodgy-exports -Wno-dodgy-imports #-}
+#endif
 -----------------------------------------------------------------------------
 --
 -- Module      :  Language.Javascript.JSaddle.Monad
@@ -36,7 +39,9 @@
 ) where
 
 import Prelude hiding (read)
+#ifndef ghcjs_HOST_OS
 import Control.Monad.Trans.Reader (runReaderT, ask, ReaderT(..))
+#endif
 import Control.Monad.IO.Class (MonadIO(..))
 import qualified Control.Exception as E (Exception, catch, bracket)
 import Language.Javascript.JSaddle.Types (JSM(..), MonadJSM, liftJSM, JSContextRef(..))
diff --git a/src/Language/Javascript/JSaddle/Object.hs b/src/Language/Javascript/JSaddle/Object.hs
--- a/src/Language/Javascript/JSaddle/Object.hs
+++ b/src/Language/Javascript/JSaddle/Object.hs
@@ -6,6 +6,7 @@
 #ifdef ghcjs_HOST_OS
 {-# LANGUAGE ForeignFunctionInterface #-}
 {-# LANGUAGE JavaScriptFFI #-}
+{-# OPTIONS_GHC -Wno-dodgy-exports -Wno-dodgy-imports #-}
 #endif
 {-# OPTIONS_GHC -fno-warn-orphans #-}
 -----------------------------------------------------------------------------
@@ -91,11 +92,7 @@
 
 import Control.Applicative
 import Prelude hiding ((!!))
-import Language.Javascript.JSaddle.Types
-       (JSString, Object(..),
-        JSVal(..), JSCallAsFunction, JSContextRef(..))
 #ifdef ghcjs_HOST_OS
-import Control.Monad.Trans.Reader (runReaderT)
 import GHCJS.Types (nullRef, jsval)
 import GHCJS.Foreign.Callback
        (releaseCallback, syncCallback2, OnBlocked(..), Callback)
@@ -104,19 +101,25 @@
 import qualified JavaScript.Array as Array (toListIO, fromListIO)
 import JavaScript.Array.Internal (SomeJSArray(..))
 import qualified JavaScript.Object as Object (create)
-import Control.Monad (liftM)
 import Data.Coerce (coerce)
+import Language.Javascript.JSaddle.Monad (JSM)
+import Language.Javascript.JSaddle.Types
+       (JSString, Object(..),
+        JSVal(..), JSCallAsFunction)
 #else
 import Language.Javascript.JSaddle.Native
        (wrapJSString, withJSVals, withObject)
 import Language.Javascript.JSaddle.Run
        (Command(..), AsyncCommand(..), Result(..), sendCommand, sendLazyCommand)
+import Language.Javascript.JSaddle.Monad (askJSM, JSM)
+import Language.Javascript.JSaddle.Types
+       (JSString, Object(..),
+        JSVal(..), JSCallAsFunction, JSContextRef(..))
 #endif
 import Language.Javascript.JSaddle.Value (valToObject)
 import Language.Javascript.JSaddle.Classes
        (ToJSVal(..), ToJSString(..), MakeObject(..))
 import Language.Javascript.JSaddle.Arguments (MakeArgs(..))
-import Language.Javascript.JSaddle.Monad (askJSM, JSM)
 import Control.Monad.IO.Class (MonadIO(..))
 import Language.Javascript.JSaddle.Properties
 import Control.Lens (IndexPreservingGetter, to)
diff --git a/src/Language/Javascript/JSaddle/Run.hs b/src/Language/Javascript/JSaddle/Run.hs
--- a/src/Language/Javascript/JSaddle/Run.hs
+++ b/src/Language/Javascript/JSaddle/Run.hs
@@ -15,13 +15,13 @@
 
 module Language.Javascript.JSaddle.Run (
   -- * Running JSM
-    runJavaScript
-  , syncPoint
+    syncPoint
   , syncAfter
   , waitForAnimationFrame
   , nextAnimationFrame
 #ifndef ghcjs_HOST_OS
   -- * Functions used to implement JSaddle using JSON messaging
+  , runJavaScript
   , AsyncCommand(..)
   , Command(..)
   , Result(..)
diff --git a/src/Language/Javascript/JSaddle/String.hs b/src/Language/Javascript/JSaddle/String.hs
--- a/src/Language/Javascript/JSaddle/String.hs
+++ b/src/Language/Javascript/JSaddle/String.hs
@@ -1,6 +1,9 @@
 {-# LANGUAGE CPP #-}
 {-# LANGUAGE FlexibleInstances #-}
 {-# LANGUAGE TypeSynonymInstances #-}
+#ifdef ghcjs_HOST_OS
+{-# OPTIONS_GHC -Wno-dodgy-imports #-}
+#endif
 -----------------------------------------------------------------------------
 --
 -- Module      :  Language.Javascript.JSaddle.String
@@ -26,8 +29,6 @@
 import Language.Javascript.JSaddle.Types (JSString(..))
 #ifdef ghcjs_HOST_OS
 import Data.JSString.Text (textFromJSString, textToJSString)
-import GHCJS.Marshal.Internal (PFromJSVal(..))
-import GHCJS.Types (nullRef)
 #endif
 import Language.Javascript.JSaddle.Classes (ToJSString(..))
 
diff --git a/src/Language/Javascript/JSaddle/Types.hs b/src/Language/Javascript/JSaddle/Types.hs
--- a/src/Language/Javascript/JSaddle/Types.hs
+++ b/src/Language/Javascript/JSaddle/Types.hs
@@ -1,6 +1,7 @@
 {-# LANGUAGE CPP                        #-}
 #ifdef ghcjs_HOST_OS
 {-# LANGUAGE ConstraintKinds            #-}
+{-# OPTIONS_GHC -Wno-dodgy-exports      #-}
 #else
 {-# LANGUAGE TypeFamilies               #-}
 {-# LANGUAGE UndecidableInstances       #-}
@@ -55,7 +56,6 @@
 import GHCJS.Types
 import JavaScript.Object.Internal (Object(..))
 import JavaScript.Array (MutableJSArray)
-import Data.Word (Word(..))
 import GHCJS.Nullable (Nullable(..))
 #else
 import Control.Monad.Trans.Reader (ReaderT(..))
@@ -101,8 +101,6 @@
 -- > runJSM jsmFunction javaScriptContext
 #ifdef ghcjs_HOST_OS
 type JSM = IO
-runJSM :: JSM a -> JSContextRef -> IO a
-runJSM f = const f
 #else
 newtype JSM a = JSM { unJSM :: ReaderT JSContextRef IO a }
     deriving (Functor, Applicative, Monad, MonadIO, MonadFix)
diff --git a/src/Language/Javascript/JSaddle/Value.hs b/src/Language/Javascript/JSaddle/Value.hs
--- a/src/Language/Javascript/JSaddle/Value.hs
+++ b/src/Language/Javascript/JSaddle/Value.hs
@@ -5,6 +5,7 @@
 {-# LANGUAGE LambdaCase #-}
 #ifdef ghcjs_HOST_OS
 {-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# OPTIONS_GHC -Wno-dodgy-exports -Wno-dodgy-imports #-}
 #endif
 {-# OPTIONS_GHC -fno-warn-orphans #-}
 -----------------------------------------------------------------------------
@@ -74,14 +75,14 @@
        (Object(..), JSString(..), JSVal(..))
 #ifdef ghcjs_HOST_OS
 import Control.Monad.IO.Class (MonadIO(..))
-import Language.Javascript.JSaddle.Types
-       (MutableJSArray)
-import GHCJS.Types (JSVal(..), isNull, isUndefined)
+import GHCJS.Types (isNull, isUndefined)
 import GHCJS.Foreign (toJSBool, isTruthy, jsNull, jsUndefined)
 import qualified GHCJS.Marshal as GHCJS (toJSVal)
 import GHCJS.Marshal.Pure (pToJSVal)
 import Data.JSString.Text (textToJSString)
+import qualified Data.Text as T (pack)
 #else
+import qualified Data.Text as T (pack, unpack)
 import Language.Javascript.JSaddle.Native
        (wrapJSString, withJSVal, withObject, withJSString,
         withToJSVal)
@@ -91,7 +92,6 @@
 #endif
 import Language.Javascript.JSaddle.Monad (JSM)
 import Data.Text (Text)
-import qualified Data.Text as T (pack, unpack)
 import Language.Javascript.JSaddle.Classes
        (MakeObject(..), ToJSString(..), ToJSVal(..))
 import Language.Javascript.JSaddle.String (strToText, textToStr)
@@ -550,6 +550,7 @@
         3 -> ValNumber <$> valToNumber valref
         4 -> ValString <$> valToText valref
         5 -> ValObject <$> valToObject valref
+        _ -> error "Unexpected result dereferencing JSaddle value"
 foreign import javascript unsafe "$r = ($1 === undefined)?0:\
                                        ($1===null)?1:\
                                        (typeof $1===\"boolean\")?2:\
