diff --git a/Graphics/UI/Gtk/WebKit/DOM/EventM.hs b/Graphics/UI/Gtk/WebKit/DOM/EventM.hs
--- a/Graphics/UI/Gtk/WebKit/DOM/EventM.hs
+++ b/Graphics/UI/Gtk/WebKit/DOM/EventM.hs
@@ -59,6 +59,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad.Reader ( ReaderT, ask, runReaderT )
 import Control.Monad.Trans ( liftIO )
+import Control.Monad ( void )
 import Graphics.UI.Gtk.WebKit.Types
 import Graphics.UI.Gtk.WebKit.DOM.Event
 import Graphics.UI.Gtk.WebKit.DOM.UIEvent
@@ -66,7 +67,7 @@
 import Graphics.UI.Gtk.WebKit.DOM.EventTargetClosures
 import Data.Word (Word)
 
-type Signal target callback = target -> callback -> IO Bool
+type Signal target callback = target -> callback -> IO (IO ())
 
 type EventM e t a = ReaderT (t, e) IO a
 
@@ -258,6 +259,6 @@
 mouseToElement :: MouseEventClass e => EventM e t (Maybe Node)
 mouseToElement = event >>= (liftIO . mouseEventGetToElement)
 
-connect :: (GObjectClass t, EventClass e) => String -> t -> EventM e t () -> IO Bool
-connect eventName target callback =
+connect :: (GObjectClass t, EventClass e) => String -> t -> EventM e t () -> IO (IO ())
+connect eventName target callback = do
   eventTargetAddEventListener target eventName False $ curry (runReaderT callback)
diff --git a/Graphics/UI/Gtk/WebKit/DOM/EventTargetClosures.chs b/Graphics/UI/Gtk/WebKit/DOM/EventTargetClosures.chs
--- a/Graphics/UI/Gtk/WebKit/DOM/EventTargetClosures.chs
+++ b/Graphics/UI/Gtk/WebKit/DOM/EventTargetClosures.chs
@@ -2,11 +2,13 @@
 {-# CFILES events.c #-}
 module Graphics.UI.Gtk.WebKit.DOM.EventTargetClosures
        (eventTargetAddEventListener) where
-import System.Glib.FFI
+import System.Glib.FFI (newStablePtr, StablePtr, Ptr(..), toBool, CInt(..), CChar,
+        withForeignPtr, fromBool)
 import System.Glib.UTFString
 import Control.Applicative
 {#import Graphics.UI.Gtk.WebKit.Types#}
 import System.Glib.GError
+import Control.Monad (void)
 
 {# pointer *GClosure newtype #}
 
@@ -15,7 +17,7 @@
 
 eventTargetAddEventListener ::
                          (GObjectClass self, EventClass event) =>
-                           self -> String -> Bool -> (self -> event -> IO ()) -> IO Bool
+                           self -> String -> Bool -> (self -> event -> IO ()) -> IO (IO ())
 eventTargetAddEventListener self eventName bubble user = do
   sptr <- newStablePtr action
   gclosurePtr <- gtk2hs_closure_new sptr
@@ -26,6 +28,13 @@
         eventNamePtr
         (GClosure gclosurePtr)
         (fromBool bubble))
+  return . void $
+    withUTFString eventName $ \ eventNamePtr ->
+      {# call webkit_dom_event_target_remove_event_listener_closure #}
+        (unsafeCastGObject $ toGObject self)
+        eventNamePtr
+        (GClosure gclosurePtr)
+        (fromBool bubble)
   where action :: Ptr GObject -> Ptr GObject -> IO ()
         action obj1 obj2 =
           failOnGError $
diff --git a/Graphics/UI/Gtk/WebKit/DOM/hsevents.c b/Graphics/UI/Gtk/WebKit/DOM/hsevents.c
--- a/Graphics/UI/Gtk/WebKit/DOM/hsevents.c
+++ b/Graphics/UI/Gtk/WebKit/DOM/hsevents.c
@@ -65,3 +65,14 @@
     return webkit_dom_event_target_add_event_listener(
         WEBKIT_DOM_EVENT_TARGET (target), eventName, G_CALLBACK(webkit_gtk2hs_closure_callback), bubble, closure);
 }
+
+gboolean webkit_dom_event_target_remove_event_listener_closure(
+    WebKitDOMEventTarget *target,
+    const char           *eventName,
+    GClosure             *closure,
+    gboolean              bubble)
+{
+    WHEN_DEBUG(g_debug("webkit_dom_event_target_remove_event_listener_closure: about to run target %p, eventName=\"%s\", closure=%p (all closures for this target and eventName be removed)", target, eventName, closure));
+    return webkit_dom_event_target_remove_event_listener(
+        WEBKIT_DOM_EVENT_TARGET (target), eventName, G_CALLBACK(webkit_gtk2hs_closure_callback), bubble);
+}
diff --git a/Graphics/UI/Gtk/WebKit/Types.chs b/Graphics/UI/Gtk/WebKit/Types.chs
--- a/Graphics/UI/Gtk/WebKit/Types.chs
+++ b/Graphics/UI/Gtk/WebKit/Types.chs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 {-# OPTIONS_HADDOCK hide #-}
 -- -*-haskell-*-
 -- -------------------- automatically generated file - do not edit ----------
diff --git a/cbits/events.h b/cbits/events.h
--- a/cbits/events.h
+++ b/cbits/events.h
@@ -12,3 +12,9 @@
     const char           *eventName,
     GClosure             *closure,
     gboolean              bubble);
+
+gboolean webkit_dom_event_target_remove_event_listener_closure(
+    WebKitDOMEventTarget *target,
+    const char           *eventName,
+    GClosure             *closure,
+    gboolean              bubble);
diff --git a/webkit.cabal b/webkit.cabal
--- a/webkit.cabal
+++ b/webkit.cabal
@@ -1,5 +1,5 @@
 Name:           webkit
-Version:        0.12.5.3
+Version:        0.12.6.0
 License:        LGPL-2.1
 License-file:   COPYING
 Copyright:      (c) 2001-2013 The Gtk2Hs Team
