diff --git a/GI/JavaScriptCore.hs b/GI/JavaScriptCore.hs
--- a/GI/JavaScriptCore.hs
+++ b/GI/JavaScriptCore.hs
@@ -1,55 +1,28 @@
--- Generated code.
 
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+-}
 
-{-# LANGUAGE ForeignFunctionInterface, ConstraintKinds,
-    TypeFamilies, MultiParamTypeClasses, KindSignatures,
-    FlexibleInstances, UndecidableInstances, DataKinds,
-    OverloadedStrings, NegativeLiterals, FlexibleContexts #-}
+module GI.JavaScriptCore
+    (     module GI.JavaScriptCore.Callbacks      ,
+    module GI.JavaScriptCore.Structs        ,
 
-module GI.JavaScriptCore where
 
+    ) where
+
+import GI.JavaScriptCore.Callbacks
+import GI.JavaScriptCore.Structs
+
 import Prelude ()
 import Data.GI.Base.ShortPrelude
-import Data.Char
-import Data.Int
-import Data.Word
+
+import qualified Data.Text as T
 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
-
-
--- struct GlobalContext
-newtype GlobalContext = GlobalContext (ForeignPtr GlobalContext)
-noGlobalContext :: Maybe GlobalContext
-noGlobalContext = Nothing
+import GI.JavaScriptCore.Types
+import GI.JavaScriptCore.Callbacks
 
--- struct Value
-newtype Value = Value (ForeignPtr Value)
-noValue :: Maybe Value
-noValue = Nothing
 
diff --git a/GI/JavaScriptCore/Callbacks.hs b/GI/JavaScriptCore/Callbacks.hs
new file mode 100644
--- /dev/null
+++ b/GI/JavaScriptCore/Callbacks.hs
@@ -0,0 +1,20 @@
+
+{- |
+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 Prelude ()
+import Data.GI.Base.ShortPrelude
+
+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
new file mode 100644
--- /dev/null
+++ b/GI/JavaScriptCore/Structs.hs
@@ -0,0 +1,28 @@
+
+{- |
+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 Prelude ()
+import Data.GI.Base.ShortPrelude
+
+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
new file mode 100644
--- /dev/null
+++ b/GI/JavaScriptCore/Structs/GlobalContext.hs
@@ -0,0 +1,32 @@
+
+{- |
+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 Prelude ()
+import Data.GI.Base.ShortPrelude
+
+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)
+noGlobalContext :: Maybe GlobalContext
+noGlobalContext = Nothing
+
+
diff --git a/GI/JavaScriptCore/Structs/GlobalContext.hs-boot b/GI/JavaScriptCore/Structs/GlobalContext.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/JavaScriptCore/Structs/GlobalContext.hs-boot
@@ -0,0 +1,10 @@
+module GI.JavaScriptCore.Structs.GlobalContext where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+newtype GlobalContext = GlobalContext (ForeignPtr GlobalContext)
diff --git a/GI/JavaScriptCore/Structs/Value.hs b/GI/JavaScriptCore/Structs/Value.hs
new file mode 100644
--- /dev/null
+++ b/GI/JavaScriptCore/Structs/Value.hs
@@ -0,0 +1,32 @@
+
+{- |
+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 Prelude ()
+import Data.GI.Base.ShortPrelude
+
+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)
+noValue :: Maybe Value
+noValue = Nothing
+
+
diff --git a/GI/JavaScriptCore/Structs/Value.hs-boot b/GI/JavaScriptCore/Structs/Value.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/JavaScriptCore/Structs/Value.hs-boot
@@ -0,0 +1,10 @@
+module GI.JavaScriptCore.Structs.Value where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+newtype Value = Value (ForeignPtr Value)
diff --git a/GI/JavaScriptCore/Types.hs b/GI/JavaScriptCore/Types.hs
new file mode 100644
--- /dev/null
+++ b/GI/JavaScriptCore/Types.hs
@@ -0,0 +1,12 @@
+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
deleted file mode 100644
--- a/GI/JavaScriptCoreAttributes.hs
+++ /dev/null
@@ -1,48 +0,0 @@
-{-# 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
deleted file mode 100644
--- a/GI/JavaScriptCoreSignals.hs
+++ /dev/null
@@ -1,16 +0,0 @@
--- 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.10.10
+version:            0.2.10.12
 synopsis:           JavaScriptCore bindings
 description:        Bindings for JavaScriptCore, autogenerated by haskell-gi.
 homepage:           https://github.com/haskell-gi/haskell-gi
@@ -14,10 +14,18 @@
 
 library
     default-language:   Haskell2010
-    exposed-modules:    GI.JavaScriptCore, GI.JavaScriptCoreAttributes, GI.JavaScriptCoreSignals
+    default-extensions: OverloadedStrings, NegativeLiterals, ConstraintKinds, TypeFamilies, MultiParamTypeClasses, KindSignatures, FlexibleInstances, UndecidableInstances, DataKinds, FlexibleContexts
+    other-extensions:   PatternSynonyms ScopedTypeVariables, 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-4.0 >= 2.10
     build-depends: base >= 4.7 && <5,
-        haskell-gi-base >= 0.10 && < 1,
+        haskell-gi-base >= 0.12 && < 1,
         bytestring >= 0.10,
         containers >= 0.5,
         text >= 1.0,
