diff --git a/GI/JavaScriptCore.hs b/GI/JavaScriptCore.hs
--- a/GI/JavaScriptCore.hs
+++ b/GI/JavaScriptCore.hs
@@ -1,34 +1,55 @@
-
-
-{- |
-Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
-License    : LGPL-2.1
-Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
--}
-
-module GI.JavaScriptCore
-    (     module GI.JavaScriptCore.Callbacks      ,
-    module GI.JavaScriptCore.Structs        ,
-
-
-
-    module Data.GI.Base                     ,
+-- Generated code.
 
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
 
-    ) where
+{-# LANGUAGE ForeignFunctionInterface, ConstraintKinds,
+    TypeFamilies, MultiParamTypeClasses, KindSignatures,
+    FlexibleInstances, UndecidableInstances, DataKinds,
+    OverloadedStrings, NegativeLiterals, FlexibleContexts #-}
 
-import GI.JavaScriptCore.Callbacks
-import GI.JavaScriptCore.Structs
+module GI.JavaScriptCore where
 
+import Prelude ()
 import Data.GI.Base.ShortPrelude
-
-import qualified Data.GI.Base.Attributes as GI.Attributes
-import qualified Data.Text as T
+import Data.Char
+import Data.Int
+import Data.Word
 import qualified Data.ByteString.Char8 as B
+import Data.ByteString.Char8 (ByteString)
 import qualified Data.Map as Map
+import Foreign.C
+import Foreign.Ptr
+import Foreign.ForeignPtr
+import Foreign.ForeignPtr.Unsafe (unsafeForeignPtrToPtr)
+import Foreign.Storable (peek, poke, sizeOf)
+import Control.Applicative ((<$>))
+import Control.Exception (onException)
+import Control.Monad.IO.Class
+import qualified Data.Text as T
 
-import GI.JavaScriptCore.Types
-import GI.JavaScriptCore.Callbacks
+import Data.GI.Base.Attributes hiding (get, set)
+import Data.GI.Base.BasicTypes
+import Data.GI.Base.BasicConversions
+import Data.GI.Base.Closure
+import Data.GI.Base.GError
+import Data.GI.Base.GHashTable
+import Data.GI.Base.GParamSpec
+import Data.GI.Base.GVariant
+import Data.GI.Base.GValue
+import Data.GI.Base.ManagedPtr
+import Data.GI.Base.Overloading
+import Data.GI.Base.Properties hiding (new)
+import Data.GI.Base.Signals (SignalConnectMode(..), connectSignalFunPtr, SignalHandlerId)
+import Data.GI.Base.Utils
 
-import Data.GI.Base
+
+-- struct GlobalContext
+newtype GlobalContext = GlobalContext (ForeignPtr GlobalContext)
+noGlobalContext :: Maybe GlobalContext
+noGlobalContext = Nothing
+
+-- struct Value
+newtype Value = Value (ForeignPtr Value)
+noValue :: Maybe Value
+noValue = Nothing
 
diff --git a/GI/JavaScriptCore/Callbacks.hs b/GI/JavaScriptCore/Callbacks.hs
deleted file mode 100644
--- a/GI/JavaScriptCore/Callbacks.hs
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-{- |
-Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
-License    : LGPL-2.1
-Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
--}
-
-module GI.JavaScriptCore.Callbacks () where
-
-import Data.GI.Base.ShortPrelude
-
-import qualified Data.GI.Base.Attributes as GI.Attributes
-import qualified Data.Text as T
-import qualified Data.ByteString.Char8 as B
-import qualified Data.Map as Map
-
-import GI.JavaScriptCore.Types
-
-
-
diff --git a/GI/JavaScriptCore/Structs.hs b/GI/JavaScriptCore/Structs.hs
deleted file mode 100644
--- a/GI/JavaScriptCore/Structs.hs
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-{- |
-Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
-License    : LGPL-2.1
-Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
--}
-
-module GI.JavaScriptCore.Structs
-    (     module GI.JavaScriptCore.Structs.GlobalContext,
-    module GI.JavaScriptCore.Structs.Value  ,
-
-
-    ) where
-
-import GI.JavaScriptCore.Structs.GlobalContext
-import GI.JavaScriptCore.Structs.Value
-
-import Data.GI.Base.ShortPrelude
-
-import qualified Data.GI.Base.Attributes as GI.Attributes
-import qualified Data.Text as T
-import qualified Data.ByteString.Char8 as B
-import qualified Data.Map as Map
-
-import GI.JavaScriptCore.Types
-import GI.JavaScriptCore.Callbacks
-
-
diff --git a/GI/JavaScriptCore/Structs/GlobalContext.hs b/GI/JavaScriptCore/Structs/GlobalContext.hs
deleted file mode 100644
--- a/GI/JavaScriptCore/Structs/GlobalContext.hs
+++ /dev/null
@@ -1,54 +0,0 @@
-
-
-{- |
-Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
-License    : LGPL-2.1
-Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
--}
-
-module GI.JavaScriptCore.Structs.GlobalContext
-    ( 
-
--- * Exported types
-    GlobalContext(..)                       ,
-    noGlobalContext                         ,
-
-
-    ) where
-
-import Data.GI.Base.ShortPrelude
-
-import qualified Data.GI.Base.Attributes as GI.Attributes
-import qualified Data.Text as T
-import qualified Data.ByteString.Char8 as B
-import qualified Data.Map as Map
-
-import GI.JavaScriptCore.Types
-import GI.JavaScriptCore.Callbacks
-
-newtype GlobalContext = GlobalContext (ForeignPtr GlobalContext)
--- XXX Wrapping a foreign struct/union with no known destructor or size, leak?
-instance WrappedPtr GlobalContext where
-    wrappedPtrCalloc = return nullPtr
-    wrappedPtrCopy = return
-    wrappedPtrFree = Nothing
-
-noGlobalContext :: Maybe GlobalContext
-noGlobalContext = Nothing
-
-
-type instance AttributeList GlobalContext = GlobalContextAttributeList
-type GlobalContextAttributeList = ('[ ] :: [(Symbol, *)])
-
-type family ResolveGlobalContextMethod (t :: Symbol) (o :: *) :: * where
-    ResolveGlobalContextMethod l o = MethodResolutionFailed l o
-
-instance (info ~ ResolveGlobalContextMethod t GlobalContext, MethodInfo info GlobalContext p) => IsLabelProxy t (GlobalContext -> p) where
-    fromLabelProxy _ = overloadedMethod (MethodProxy :: MethodProxy info)
-
-#if MIN_VERSION_base(4,9,0)
-instance (info ~ ResolveGlobalContextMethod t GlobalContext, MethodInfo info GlobalContext p) => IsLabel t (GlobalContext -> p) where
-    fromLabel _ = overloadedMethod (MethodProxy :: MethodProxy info)
-#endif
-
-
diff --git a/GI/JavaScriptCore/Structs/GlobalContext.hs-boot b/GI/JavaScriptCore/Structs/GlobalContext.hs-boot
deleted file mode 100644
--- a/GI/JavaScriptCore/Structs/GlobalContext.hs-boot
+++ /dev/null
@@ -1,11 +0,0 @@
-module GI.JavaScriptCore.Structs.GlobalContext where
-
-import Data.GI.Base.ShortPrelude
-
-import qualified Data.GI.Base.Attributes as GI.Attributes
-import qualified Data.Text as T
-import qualified Data.ByteString.Char8 as B
-import qualified Data.Map as Map
-
-newtype GlobalContext = GlobalContext (ForeignPtr GlobalContext)
-instance WrappedPtr GlobalContext where
diff --git a/GI/JavaScriptCore/Structs/Value.hs b/GI/JavaScriptCore/Structs/Value.hs
deleted file mode 100644
--- a/GI/JavaScriptCore/Structs/Value.hs
+++ /dev/null
@@ -1,54 +0,0 @@
-
-
-{- |
-Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
-License    : LGPL-2.1
-Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
--}
-
-module GI.JavaScriptCore.Structs.Value
-    ( 
-
--- * Exported types
-    Value(..)                               ,
-    noValue                                 ,
-
-
-    ) where
-
-import Data.GI.Base.ShortPrelude
-
-import qualified Data.GI.Base.Attributes as GI.Attributes
-import qualified Data.Text as T
-import qualified Data.ByteString.Char8 as B
-import qualified Data.Map as Map
-
-import GI.JavaScriptCore.Types
-import GI.JavaScriptCore.Callbacks
-
-newtype Value = Value (ForeignPtr Value)
--- XXX Wrapping a foreign struct/union with no known destructor or size, leak?
-instance WrappedPtr Value where
-    wrappedPtrCalloc = return nullPtr
-    wrappedPtrCopy = return
-    wrappedPtrFree = Nothing
-
-noValue :: Maybe Value
-noValue = Nothing
-
-
-type instance AttributeList Value = ValueAttributeList
-type ValueAttributeList = ('[ ] :: [(Symbol, *)])
-
-type family ResolveValueMethod (t :: Symbol) (o :: *) :: * where
-    ResolveValueMethod l o = MethodResolutionFailed l o
-
-instance (info ~ ResolveValueMethod t Value, MethodInfo info Value p) => IsLabelProxy t (Value -> p) where
-    fromLabelProxy _ = overloadedMethod (MethodProxy :: MethodProxy info)
-
-#if MIN_VERSION_base(4,9,0)
-instance (info ~ ResolveValueMethod t Value, MethodInfo info Value p) => IsLabel t (Value -> p) where
-    fromLabel _ = overloadedMethod (MethodProxy :: MethodProxy info)
-#endif
-
-
diff --git a/GI/JavaScriptCore/Structs/Value.hs-boot b/GI/JavaScriptCore/Structs/Value.hs-boot
deleted file mode 100644
--- a/GI/JavaScriptCore/Structs/Value.hs-boot
+++ /dev/null
@@ -1,11 +0,0 @@
-module GI.JavaScriptCore.Structs.Value where
-
-import Data.GI.Base.ShortPrelude
-
-import qualified Data.GI.Base.Attributes as GI.Attributes
-import qualified Data.Text as T
-import qualified Data.ByteString.Char8 as B
-import qualified Data.Map as Map
-
-newtype Value = Value (ForeignPtr Value)
-instance WrappedPtr Value where
diff --git a/GI/JavaScriptCore/Types.hs b/GI/JavaScriptCore/Types.hs
deleted file mode 100644
--- a/GI/JavaScriptCore/Types.hs
+++ /dev/null
@@ -1,12 +0,0 @@
-module GI.JavaScriptCore.Types
-    (     module GI.JavaScriptCore.Structs.GlobalContext,
-    module GI.JavaScriptCore.Structs.Value  ,
-
-
-    ) where
-
-
-import {-# SOURCE #-} GI.JavaScriptCore.Structs.GlobalContext
-import {-# SOURCE #-} GI.JavaScriptCore.Structs.Value
-
-
diff --git a/GI/JavaScriptCoreAttributes.hs b/GI/JavaScriptCoreAttributes.hs
new file mode 100644
--- /dev/null
+++ b/GI/JavaScriptCoreAttributes.hs
@@ -0,0 +1,48 @@
+{-# OPTIONS_GHC -fno-warn-orphans -fno-warn-unused-imports #-}
+
+-- Generated code.
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+{-# LANGUAGE ForeignFunctionInterface, ConstraintKinds,
+    TypeFamilies, MultiParamTypeClasses, KindSignatures,
+    FlexibleInstances, UndecidableInstances, DataKinds,
+    OverloadedStrings, NegativeLiterals, FlexibleContexts #-}
+
+module GI.JavaScriptCoreAttributes where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+import Data.Char
+import Data.Int
+import Data.Word
+import qualified Data.ByteString.Char8 as B
+import Data.ByteString.Char8 (ByteString)
+import qualified Data.Map as Map
+import Foreign.C
+import Foreign.Ptr
+import Foreign.ForeignPtr
+import Foreign.ForeignPtr.Unsafe (unsafeForeignPtrToPtr)
+import Foreign.Storable (peek, poke, sizeOf)
+import Control.Applicative ((<$>))
+import Control.Exception (onException)
+import Control.Monad.IO.Class
+import qualified Data.Text as T
+
+import Data.GI.Base.Attributes hiding (get, set)
+import Data.GI.Base.BasicTypes
+import Data.GI.Base.BasicConversions
+import Data.GI.Base.Closure
+import Data.GI.Base.GError
+import Data.GI.Base.GHashTable
+import Data.GI.Base.GParamSpec
+import Data.GI.Base.GVariant
+import Data.GI.Base.GValue
+import Data.GI.Base.ManagedPtr
+import Data.GI.Base.Overloading
+import Data.GI.Base.Properties hiding (new)
+import Data.GI.Base.Signals (SignalConnectMode(..), connectSignalFunPtr, SignalHandlerId)
+import Data.GI.Base.Utils
+
+import GI.JavaScriptCore
+
diff --git a/GI/JavaScriptCoreSignals.hs b/GI/JavaScriptCoreSignals.hs
new file mode 100644
--- /dev/null
+++ b/GI/JavaScriptCoreSignals.hs
@@ -0,0 +1,16 @@
+-- Generated code.
+
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+
+{-# LANGUAGE DataKinds,    FlexibleInstances,
+             TypeFamilies, MultiParamTypeClasses,
+               TypeOperators #-}
+
+module GI.JavaScriptCoreSignals where
+
+import Data.GI.Base.Properties (GObjectNotifySignalInfo)
+import Data.GI.Base.Signals
+import Data.GI.Base.Overloading
+
+import GI.JavaScriptCore
+
diff --git a/gi-javascriptcore.cabal b/gi-javascriptcore.cabal
--- a/gi-javascriptcore.cabal
+++ b/gi-javascriptcore.cabal
@@ -1,6 +1,6 @@
 -- Autogenerated, do not edit.
 name:               gi-javascriptcore
-version:            0.2.4.15
+version:            0.2.8.11
 synopsis:           JavaScriptCore bindings
 description:        Bindings for JavaScriptCore, autogenerated by haskell-gi.
 homepage:           https://github.com/haskell-gi/haskell-gi
@@ -14,18 +14,10 @@
 
 library
     default-language:   Haskell2010
-    default-extensions: NoImplicitPrelude, ScopedTypeVariables, CPP, OverloadedStrings, NegativeLiterals, ConstraintKinds, TypeFamilies, MultiParamTypeClasses, KindSignatures, FlexibleInstances, UndecidableInstances, DataKinds, FlexibleContexts
-    other-extensions:   PatternSynonyms ViewPatterns
-    ghc-options:        -fno-warn-unused-imports -fno-warn-warnings-deprecations
-    exposed-modules:    GI.JavaScriptCore.Types
-                        GI.JavaScriptCore
-                        GI.JavaScriptCore.Callbacks
-                        GI.JavaScriptCore.Structs
-                        GI.JavaScriptCore.Structs.GlobalContext
-                        GI.JavaScriptCore.Structs.Value
-    pkgconfig-depends:  javascriptcoregtk-3.0 >= 2.4
+    exposed-modules:    GI.JavaScriptCore, GI.JavaScriptCoreAttributes, GI.JavaScriptCoreSignals
+    pkgconfig-depends:  javascriptcoregtk-4.0 >= 2.8
     build-depends: base >= 4.7 && <5,
-        haskell-gi-base >= 0.15 && < 1,
+        haskell-gi-base >= 0.11 && < 1,
         bytestring >= 0.10,
         containers >= 0.5,
         text >= 1.0,
