diff --git a/ghcjs-dom.cabal b/ghcjs-dom.cabal
--- a/ghcjs-dom.cabal
+++ b/ghcjs-dom.cabal
@@ -1,5 +1,5 @@
 name: ghcjs-dom
-version: 0.0.10
+version: 0.1.0.0
 cabal-version: >=1.10
 build-type: Simple
 license: MIT
@@ -37,7 +37,10 @@
     Default: True
 
 library
-    build-depends: base <5, mtl -any
+    build-depends: base <5,
+                   mtl -any,
+                   text >= 1.1.1.3 && < 1.2
+
     default-language: Haskell2010
     exposed-modules:
           GHCJS.DOM
@@ -189,11 +192,12 @@
 --    if !impl(ghcjs) || flag(webkit)
     if !flag(ghcjs) || flag(webkit)
         cpp-options: -DUSE_WEBKIT
-        build-depends:  glib >=0.12.3.1 && <0.13, transformers >=0.3.0.0 && <0.5
+        build-depends: glib >=0.13.0.0 && <0.14,
+                       transformers >=0.3.0.0 && <0.5
         if flag(gtk3)
-            build-depends: gtk3 >=0.12.4 && <0.13, webkitgtk3 >=0.12.6.0 && <0.13
+            build-depends: gtk3 >=0.13.0.0 && <0.14, webkitgtk3 >=0.13.0.0 && <0.14
         else
-            build-depends: gtk >=0.12.4 && <0.13, webkit >=0.12.6.0 && <0.13
+            build-depends: gtk >=0.13.0.0 && <0.14, webkit >=0.13.0.0 && <0.14
         c-sources:      cbits/ghcjs_stubs.c
 
     hs-source-dirs: src
diff --git a/src/GHCJS/DOM.hs b/src/GHCJS/DOM.hs
--- a/src/GHCJS/DOM.hs
+++ b/src/GHCJS/DOM.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE CPP, ForeignFunctionInterface #-}
+{-# LANGUAGE CPP, ForeignFunctionInterface, OverloadedStrings #-}
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
 {-# LANGUAGE JavaScriptFFI #-}
 #endif
@@ -12,6 +12,8 @@
 , postGUIAsync
 ) where
 
+import qualified Data.Text as T
+import Data.Monoid ((<>))
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
 import GHCJS.Types (JSRef(..))
 import Control.Applicative ((<$>))
@@ -88,7 +90,7 @@
 runWebGUI :: (WebView -> IO ()) -> IO ()
 runWebGUI = runWebGUI' "GHCJS"
 
-runWebGUI' :: String -> (WebView -> IO ()) -> IO ()
+runWebGUI' :: T.Text -> (WebView -> IO ()) -> IO ()
 runWebGUI' userAgentKey main = do
   -- Are we in a java script inside some kind of browser
   mbWindow <- currentWindow
@@ -97,11 +99,11 @@
       -- Check if we are running in javascript inside the the native version
       Just n <- domWindowGetNavigator window
       agent <- navigatorGetUserAgent n
-      unless ((" " ++ userAgentKey) `isSuffixOf` agent) $ main (castToWebView window)
+      unless ((" " <> userAgentKey) `T.isSuffixOf` agent) $ main (castToWebView window)
     Nothing -> do
       makeDefaultWebView userAgentKey main
 
-makeDefaultWebView :: String -> (WebView -> IO ()) -> IO ()
+makeDefaultWebView :: T.Text -> (WebView -> IO ()) -> IO ()
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
 makeDefaultWebView _ _ = error "Unsupported makeDefaultWebView"
 #else
@@ -115,7 +117,7 @@
   webView <- webViewNew
   settings <- webViewGetWebSettings webView
   userAgent <- settings `get` webSettingsUserAgent
-  settings `set` [webSettingsUserAgent := userAgent ++ " " ++ userAgentKey]
+  settings `set` [webSettingsUserAgent := userAgent <> " " <> userAgentKey]
   webViewSetWebSettings webView settings
   window `containerAdd` scrollWin
   scrollWin `containerAdd` webView
@@ -125,7 +127,7 @@
     main webView
   args <- getArgs
   case args of
-    uri:_ -> webViewLoadUri webView uri
+    uri:_ -> webViewLoadUri webView (T.pack uri)
     []    -> do
       main webView
   mainGUI
diff --git a/src/GHCJS/DOM/EventM.hs b/src/GHCJS/DOM/EventM.hs
--- a/src/GHCJS/DOM/EventM.hs
+++ b/src/GHCJS/DOM/EventM.hs
@@ -259,6 +259,6 @@
 mouseToElement :: IsMouseEvent e => EventM e t (Maybe Node)
 mouseToElement = event >>= (liftIO . mouseEventGetToElement)
 
-connect :: (GObjectClass t, IsEvent e) => String -> t -> EventM e t () -> IO (IO ())
+connect :: (GObjectClass t, IsEvent e, ToDOMString string) => string -> t -> EventM e t () -> IO (IO ())
 connect eventName target callback =
   eventTargetAddEventListener target eventName False $ curry (runReaderT callback)
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
@@ -1,12 +1,14 @@
+{-# LANGUAGE UndecidableInstances #-}
+{-# LANGUAGE FlexibleInstances #-}
 {-# LANGUAGE CPP #-}
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE JavaScriptFFI, ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI, ForeignFunctionInterface, ConstraintKinds #-}
 #else
 {-# LANGUAGE ConstraintKinds #-}
 #endif
 module GHCJS.DOM.Types (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-    maybeJSNull, propagateGError, GType(..)
+    maybeJSNull, propagateGError, GType(..), DOMString(..), ToDOMString(..), FromDOMString(..)
   , GObject(..), GObjectClass, toGObject, unGObject, castToGObject, gTypeGObject, unsafeCastGObject
 
 -- AUTO GENERATION STARTS HERE
@@ -143,7 +145,7 @@
   , XPathResult(XPathResult), unXPathResult, IsXPathResult, toXPathResult, castToXPathResult, gTypeXPathResult
 -- AUTO GENERATION ENDS HERE
 #else
-    propagateGError, GType(..)
+    propagateGError, GType(..), DOMString(..), ToDOMString(..), FromDOMString(..)
   , module Graphics.UI.Gtk.WebKit.Types
   , IsDOMAttr
   , IsBlob
@@ -273,12 +275,18 @@
 #endif
   ) where
 
-
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-import GHCJS.Types (JSRef(..), castRef, isNull)
+import GHCJS.Types (JSRef(..), castRef, nullRef, isNull, JSString(..))
+import GHCJS.Foreign (ToJSString(..), FromJSString(..))
 #else
+import Control.Applicative ((<$>))
+import qualified Data.Text as T (Text)
+import Data.Maybe (isNothing)
+import Foreign.C (CString)
 import Graphics.UI.Gtk.WebKit.Types
 import System.Glib (propagateGError, GType(..))
+import System.Glib.UTFString
+       (readUTFString, GlibString(..))
 #endif
 
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
@@ -335,6 +343,25 @@
 gTypeGObject' = error "gTypeGObject': only available in JavaScript"
 #endif
 gTypeGObject = GType gTypeGObject'
+
+#ifdef ghcjs_HOST_OS
+-- | Fastest string type to use when you just
+--   want to take a string from the DOM then
+--   give it back as is.
+type DOMString = JSString
+
+type ToDOMString s = ToJSString s
+type FromDOMString s = FromJSString s
+#endif
+
+#else
+-- | Fastest string type to use when you just
+--   want to take a string from the DOM then
+--   give it back as is.
+type DOMString = T.Text
+
+type ToDOMString s = GlibString s
+type FromDOMString s = GlibString s
 #endif
 
 -- AUTO GENERATION STARTS HERE
