diff --git a/GI/Pango/Callbacks.hs b/GI/Pango/Callbacks.hs
--- a/GI/Pango/Callbacks.hs
+++ b/GI/Pango/Callbacks.hs
@@ -116,7 +116,7 @@
     Int32 ->
     IO ()
 includedModuleListFieldCallbackWrapper funptrptr _cb engines nEngines = do
-    engines' <- (newPtr 40 EngineInfo) engines
+    engines' <- (newPtr EngineInfo) engines
     _cb  engines' nEngines
     maybeReleaseFunPtr funptrptr
 
@@ -238,7 +238,7 @@
     Ptr () ->
     IO CInt
 attrFilterFuncWrapper funptrptr _cb attribute _ = do
-    attribute' <- (newPtr 16 Attribute) attribute
+    attribute' <- (newPtr Attribute) attribute
     result <- _cb  attribute'
     maybeReleaseFunPtr funptrptr
     let result' = (fromIntegral . fromEnum) result
@@ -272,8 +272,8 @@
     Ptr Attribute ->
     IO CInt
 attrClassEqualFieldCallbackWrapper funptrptr _cb attr1 attr2 = do
-    attr1' <- (newPtr 16 Attribute) attr1
-    attr2' <- (newPtr 16 Attribute) attr2
+    attr1' <- (newPtr Attribute) attr1
+    attr2' <- (newPtr Attribute) attr2
     result <- _cb  attr1' attr2'
     maybeReleaseFunPtr funptrptr
     let result' = (fromIntegral . fromEnum) result
@@ -304,7 +304,7 @@
     Ptr Attribute ->
     IO ()
 attrClassDestroyFieldCallbackWrapper funptrptr _cb attr = do
-    attr' <- (newPtr 16 Attribute) attr
+    attr' <- (newPtr Attribute) attr
     _cb  attr'
     maybeReleaseFunPtr funptrptr
 
diff --git a/GI/Pango/Objects/Layout.hs b/GI/Pango/Objects/Layout.hs
--- a/GI/Pango/Objects/Layout.hs
+++ b/GI/Pango/Objects/Layout.hs
@@ -1094,7 +1094,7 @@
     nAttrs' <- peek nAttrs
     attrs' <- peek attrs
     attrs'' <- (unpackBlockArrayWithLength 52 nAttrs') attrs'
-    attrs''' <- mapM (newPtr 52 LogAttr) attrs''
+    attrs''' <- mapM (newPtr LogAttr) attrs''
     freeMem attrs'
     touchManagedPtr _obj
     freeMem attrs
@@ -1130,7 +1130,7 @@
     nAttrs' <- peek nAttrs
     checkUnexpectedReturnNULL "pango_layout_get_log_attrs_readonly" result
     result' <- (unpackBlockArrayWithLength 52 nAttrs') result
-    result'' <- mapM (newPtr 52 LogAttr) result'
+    result'' <- mapM (newPtr LogAttr) result'
     touchManagedPtr _obj
     freeMem nAttrs
     return result''
diff --git a/GI/Pango/Structs/Analysis.hs b/GI/Pango/Structs/Analysis.hs
--- a/GI/Pango/Structs/Analysis.hs
+++ b/GI/Pango/Structs/Analysis.hs
@@ -93,9 +93,14 @@
 import GI.Pango.Callbacks
 
 newtype Analysis = Analysis (ForeignPtr Analysis)
+instance WrappedPtr Analysis where
+    wrappedPtrCalloc = callocBytes 48
+    wrappedPtrCopy = copyPtr 48
+    wrappedPtrFree = Just ptr_to_g_free
+
 -- | Construct a `Analysis` struct initialized to zero.
 newZeroAnalysis :: MonadIO m => m Analysis
-newZeroAnalysis = liftIO $ callocBytes 48 >>= wrapPtr Analysis
+newZeroAnalysis = liftIO $ wrappedPtrCalloc >>= wrapPtr Analysis
 
 instance tag ~ 'AttrSet => Constructible Analysis tag where
     new _ attrs = do
diff --git a/GI/Pango/Structs/Analysis.hs-boot b/GI/Pango/Structs/Analysis.hs-boot
--- a/GI/Pango/Structs/Analysis.hs-boot
+++ b/GI/Pango/Structs/Analysis.hs-boot
@@ -8,3 +8,4 @@
 import qualified Data.Map as Map
 
 newtype Analysis = Analysis (ForeignPtr Analysis)
+instance WrappedPtr Analysis where
diff --git a/GI/Pango/Structs/AttrClass.hs b/GI/Pango/Structs/AttrClass.hs
--- a/GI/Pango/Structs/AttrClass.hs
+++ b/GI/Pango/Structs/AttrClass.hs
@@ -42,9 +42,14 @@
 import GI.Pango.Callbacks
 
 newtype AttrClass = AttrClass (ForeignPtr AttrClass)
+instance WrappedPtr AttrClass where
+    wrappedPtrCalloc = callocBytes 32
+    wrappedPtrCopy = copyPtr 32
+    wrappedPtrFree = Just ptr_to_g_free
+
 -- | Construct a `AttrClass` struct initialized to zero.
 newZeroAttrClass :: MonadIO m => m AttrClass
-newZeroAttrClass = liftIO $ callocBytes 32 >>= wrapPtr AttrClass
+newZeroAttrClass = liftIO $ wrappedPtrCalloc >>= wrapPtr AttrClass
 
 instance tag ~ 'AttrSet => Constructible AttrClass tag where
     new _ attrs = do
diff --git a/GI/Pango/Structs/AttrClass.hs-boot b/GI/Pango/Structs/AttrClass.hs-boot
--- a/GI/Pango/Structs/AttrClass.hs-boot
+++ b/GI/Pango/Structs/AttrClass.hs-boot
@@ -8,3 +8,4 @@
 import qualified Data.Map as Map
 
 newtype AttrClass = AttrClass (ForeignPtr AttrClass)
+instance WrappedPtr AttrClass where
diff --git a/GI/Pango/Structs/AttrColor.hs b/GI/Pango/Structs/AttrColor.hs
--- a/GI/Pango/Structs/AttrColor.hs
+++ b/GI/Pango/Structs/AttrColor.hs
@@ -48,9 +48,14 @@
 import GI.Pango.Callbacks
 
 newtype AttrColor = AttrColor (ForeignPtr AttrColor)
+instance WrappedPtr AttrColor where
+    wrappedPtrCalloc = callocBytes 24
+    wrappedPtrCopy = copyPtr 24
+    wrappedPtrFree = Just ptr_to_g_free
+
 -- | Construct a `AttrColor` struct initialized to zero.
 newZeroAttrColor :: MonadIO m => m AttrColor
-newZeroAttrColor = liftIO $ callocBytes 24 >>= wrapPtr AttrColor
+newZeroAttrColor = liftIO $ wrappedPtrCalloc >>= wrapPtr AttrColor
 
 instance tag ~ 'AttrSet => Constructible AttrColor tag where
     new _ attrs = do
@@ -66,7 +71,7 @@
 attrColorReadAttr s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO (Ptr Attribute)
     result <- convertIfNonNull val $ \val' -> do
-        val'' <- (newPtr 16 Attribute) val'
+        val'' <- (newPtr Attribute) val'
         return val''
     return result
 
diff --git a/GI/Pango/Structs/AttrColor.hs-boot b/GI/Pango/Structs/AttrColor.hs-boot
--- a/GI/Pango/Structs/AttrColor.hs-boot
+++ b/GI/Pango/Structs/AttrColor.hs-boot
@@ -8,3 +8,4 @@
 import qualified Data.Map as Map
 
 newtype AttrColor = AttrColor (ForeignPtr AttrColor)
+instance WrappedPtr AttrColor where
diff --git a/GI/Pango/Structs/AttrFloat.hs b/GI/Pango/Structs/AttrFloat.hs
--- a/GI/Pango/Structs/AttrFloat.hs
+++ b/GI/Pango/Structs/AttrFloat.hs
@@ -47,9 +47,14 @@
 import GI.Pango.Callbacks
 
 newtype AttrFloat = AttrFloat (ForeignPtr AttrFloat)
+instance WrappedPtr AttrFloat where
+    wrappedPtrCalloc = callocBytes 24
+    wrappedPtrCopy = copyPtr 24
+    wrappedPtrFree = Just ptr_to_g_free
+
 -- | Construct a `AttrFloat` struct initialized to zero.
 newZeroAttrFloat :: MonadIO m => m AttrFloat
-newZeroAttrFloat = liftIO $ callocBytes 24 >>= wrapPtr AttrFloat
+newZeroAttrFloat = liftIO $ wrappedPtrCalloc >>= wrapPtr AttrFloat
 
 instance tag ~ 'AttrSet => Constructible AttrFloat tag where
     new _ attrs = do
@@ -65,7 +70,7 @@
 attrFloatReadAttr s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO (Ptr Attribute)
     result <- convertIfNonNull val $ \val' -> do
-        val'' <- (newPtr 16 Attribute) val'
+        val'' <- (newPtr Attribute) val'
         return val''
     return result
 
diff --git a/GI/Pango/Structs/AttrFloat.hs-boot b/GI/Pango/Structs/AttrFloat.hs-boot
--- a/GI/Pango/Structs/AttrFloat.hs-boot
+++ b/GI/Pango/Structs/AttrFloat.hs-boot
@@ -8,3 +8,4 @@
 import qualified Data.Map as Map
 
 newtype AttrFloat = AttrFloat (ForeignPtr AttrFloat)
+instance WrappedPtr AttrFloat where
diff --git a/GI/Pango/Structs/AttrFontDesc.hs b/GI/Pango/Structs/AttrFontDesc.hs
--- a/GI/Pango/Structs/AttrFontDesc.hs
+++ b/GI/Pango/Structs/AttrFontDesc.hs
@@ -55,9 +55,14 @@
 import GI.Pango.Callbacks
 
 newtype AttrFontDesc = AttrFontDesc (ForeignPtr AttrFontDesc)
+instance WrappedPtr AttrFontDesc where
+    wrappedPtrCalloc = callocBytes 24
+    wrappedPtrCopy = copyPtr 24
+    wrappedPtrFree = Just ptr_to_g_free
+
 -- | Construct a `AttrFontDesc` struct initialized to zero.
 newZeroAttrFontDesc :: MonadIO m => m AttrFontDesc
-newZeroAttrFontDesc = liftIO $ callocBytes 24 >>= wrapPtr AttrFontDesc
+newZeroAttrFontDesc = liftIO $ wrappedPtrCalloc >>= wrapPtr AttrFontDesc
 
 instance tag ~ 'AttrSet => Constructible AttrFontDesc tag where
     new _ attrs = do
@@ -73,7 +78,7 @@
 attrFontDescReadAttr s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO (Ptr Attribute)
     result <- convertIfNonNull val $ \val' -> do
-        val'' <- (newPtr 16 Attribute) val'
+        val'' <- (newPtr Attribute) val'
         return val''
     return result
 
diff --git a/GI/Pango/Structs/AttrFontDesc.hs-boot b/GI/Pango/Structs/AttrFontDesc.hs-boot
--- a/GI/Pango/Structs/AttrFontDesc.hs-boot
+++ b/GI/Pango/Structs/AttrFontDesc.hs-boot
@@ -8,3 +8,4 @@
 import qualified Data.Map as Map
 
 newtype AttrFontDesc = AttrFontDesc (ForeignPtr AttrFontDesc)
+instance WrappedPtr AttrFontDesc where
diff --git a/GI/Pango/Structs/AttrFontFeatures.hs b/GI/Pango/Structs/AttrFontFeatures.hs
--- a/GI/Pango/Structs/AttrFontFeatures.hs
+++ b/GI/Pango/Structs/AttrFontFeatures.hs
@@ -55,9 +55,14 @@
 import GI.Pango.Callbacks
 
 newtype AttrFontFeatures = AttrFontFeatures (ForeignPtr AttrFontFeatures)
+instance WrappedPtr AttrFontFeatures where
+    wrappedPtrCalloc = callocBytes 24
+    wrappedPtrCopy = copyPtr 24
+    wrappedPtrFree = Just ptr_to_g_free
+
 -- | Construct a `AttrFontFeatures` struct initialized to zero.
 newZeroAttrFontFeatures :: MonadIO m => m AttrFontFeatures
-newZeroAttrFontFeatures = liftIO $ callocBytes 24 >>= wrapPtr AttrFontFeatures
+newZeroAttrFontFeatures = liftIO $ wrappedPtrCalloc >>= wrapPtr AttrFontFeatures
 
 instance tag ~ 'AttrSet => Constructible AttrFontFeatures tag where
     new _ attrs = do
@@ -73,7 +78,7 @@
 attrFontFeaturesReadAttr s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO (Ptr Attribute)
     result <- convertIfNonNull val $ \val' -> do
-        val'' <- (newPtr 16 Attribute) val'
+        val'' <- (newPtr Attribute) val'
         return val''
     return result
 
diff --git a/GI/Pango/Structs/AttrFontFeatures.hs-boot b/GI/Pango/Structs/AttrFontFeatures.hs-boot
--- a/GI/Pango/Structs/AttrFontFeatures.hs-boot
+++ b/GI/Pango/Structs/AttrFontFeatures.hs-boot
@@ -8,3 +8,4 @@
 import qualified Data.Map as Map
 
 newtype AttrFontFeatures = AttrFontFeatures (ForeignPtr AttrFontFeatures)
+instance WrappedPtr AttrFontFeatures where
diff --git a/GI/Pango/Structs/AttrInt.hs b/GI/Pango/Structs/AttrInt.hs
--- a/GI/Pango/Structs/AttrInt.hs
+++ b/GI/Pango/Structs/AttrInt.hs
@@ -47,9 +47,14 @@
 import GI.Pango.Callbacks
 
 newtype AttrInt = AttrInt (ForeignPtr AttrInt)
+instance WrappedPtr AttrInt where
+    wrappedPtrCalloc = callocBytes 24
+    wrappedPtrCopy = copyPtr 24
+    wrappedPtrFree = Just ptr_to_g_free
+
 -- | Construct a `AttrInt` struct initialized to zero.
 newZeroAttrInt :: MonadIO m => m AttrInt
-newZeroAttrInt = liftIO $ callocBytes 24 >>= wrapPtr AttrInt
+newZeroAttrInt = liftIO $ wrappedPtrCalloc >>= wrapPtr AttrInt
 
 instance tag ~ 'AttrSet => Constructible AttrInt tag where
     new _ attrs = do
@@ -65,7 +70,7 @@
 attrIntReadAttr s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO (Ptr Attribute)
     result <- convertIfNonNull val $ \val' -> do
-        val'' <- (newPtr 16 Attribute) val'
+        val'' <- (newPtr Attribute) val'
         return val''
     return result
 
diff --git a/GI/Pango/Structs/AttrInt.hs-boot b/GI/Pango/Structs/AttrInt.hs-boot
--- a/GI/Pango/Structs/AttrInt.hs-boot
+++ b/GI/Pango/Structs/AttrInt.hs-boot
@@ -8,3 +8,4 @@
 import qualified Data.Map as Map
 
 newtype AttrInt = AttrInt (ForeignPtr AttrInt)
+instance WrappedPtr AttrInt where
diff --git a/GI/Pango/Structs/AttrIterator.hs b/GI/Pango/Structs/AttrIterator.hs
--- a/GI/Pango/Structs/AttrIterator.hs
+++ b/GI/Pango/Structs/AttrIterator.hs
@@ -63,6 +63,12 @@
 import GI.Pango.Callbacks
 
 newtype AttrIterator = AttrIterator (ForeignPtr AttrIterator)
+-- XXX Wrapping a foreign struct/union with no known destructor or size, leak?
+instance WrappedPtr AttrIterator where
+    wrappedPtrCalloc = return nullPtr
+    wrappedPtrCopy = return
+    wrappedPtrFree = Nothing
+
 noAttrIterator :: Maybe AttrIterator
 noAttrIterator = Nothing
 
diff --git a/GI/Pango/Structs/AttrIterator.hs-boot b/GI/Pango/Structs/AttrIterator.hs-boot
--- a/GI/Pango/Structs/AttrIterator.hs-boot
+++ b/GI/Pango/Structs/AttrIterator.hs-boot
@@ -8,6 +8,7 @@
 import qualified Data.Map as Map
 
 newtype AttrIterator = AttrIterator (ForeignPtr AttrIterator)
+instance WrappedPtr AttrIterator where
 data AttrIteratorDestroyMethodInfo
 data AttrIteratorGetAttrsMethodInfo
 data AttrIteratorGetFontMethodInfo
diff --git a/GI/Pango/Structs/AttrLanguage.hs b/GI/Pango/Structs/AttrLanguage.hs
--- a/GI/Pango/Structs/AttrLanguage.hs
+++ b/GI/Pango/Structs/AttrLanguage.hs
@@ -55,9 +55,14 @@
 import GI.Pango.Callbacks
 
 newtype AttrLanguage = AttrLanguage (ForeignPtr AttrLanguage)
+instance WrappedPtr AttrLanguage where
+    wrappedPtrCalloc = callocBytes 24
+    wrappedPtrCopy = copyPtr 24
+    wrappedPtrFree = Just ptr_to_g_free
+
 -- | Construct a `AttrLanguage` struct initialized to zero.
 newZeroAttrLanguage :: MonadIO m => m AttrLanguage
-newZeroAttrLanguage = liftIO $ callocBytes 24 >>= wrapPtr AttrLanguage
+newZeroAttrLanguage = liftIO $ wrappedPtrCalloc >>= wrapPtr AttrLanguage
 
 instance tag ~ 'AttrSet => Constructible AttrLanguage tag where
     new _ attrs = do
@@ -73,7 +78,7 @@
 attrLanguageReadAttr s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO (Ptr Attribute)
     result <- convertIfNonNull val $ \val' -> do
-        val'' <- (newPtr 16 Attribute) val'
+        val'' <- (newPtr Attribute) val'
         return val''
     return result
 
diff --git a/GI/Pango/Structs/AttrLanguage.hs-boot b/GI/Pango/Structs/AttrLanguage.hs-boot
--- a/GI/Pango/Structs/AttrLanguage.hs-boot
+++ b/GI/Pango/Structs/AttrLanguage.hs-boot
@@ -8,3 +8,4 @@
 import qualified Data.Map as Map
 
 newtype AttrLanguage = AttrLanguage (ForeignPtr AttrLanguage)
+instance WrappedPtr AttrLanguage where
diff --git a/GI/Pango/Structs/AttrShape.hs b/GI/Pango/Structs/AttrShape.hs
--- a/GI/Pango/Structs/AttrShape.hs
+++ b/GI/Pango/Structs/AttrShape.hs
@@ -69,9 +69,14 @@
 import GI.Pango.Callbacks
 
 newtype AttrShape = AttrShape (ForeignPtr AttrShape)
+instance WrappedPtr AttrShape where
+    wrappedPtrCalloc = callocBytes 72
+    wrappedPtrCopy = copyPtr 72
+    wrappedPtrFree = Just ptr_to_g_free
+
 -- | Construct a `AttrShape` struct initialized to zero.
 newZeroAttrShape :: MonadIO m => m AttrShape
-newZeroAttrShape = liftIO $ callocBytes 72 >>= wrapPtr AttrShape
+newZeroAttrShape = liftIO $ wrappedPtrCalloc >>= wrapPtr AttrShape
 
 instance tag ~ 'AttrSet => Constructible AttrShape tag where
     new _ attrs = do
@@ -87,7 +92,7 @@
 attrShapeReadAttr s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO (Ptr Attribute)
     result <- convertIfNonNull val $ \val' -> do
-        val'' <- (newPtr 16 Attribute) val'
+        val'' <- (newPtr Attribute) val'
         return val''
     return result
 
@@ -119,7 +124,7 @@
 attrShapeReadInkRect s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 16) :: IO (Ptr Rectangle)
     result <- convertIfNonNull val $ \val' -> do
-        val'' <- (newPtr 16 Rectangle) val'
+        val'' <- (newPtr Rectangle) val'
         return val''
     return result
 
@@ -151,7 +156,7 @@
 attrShapeReadLogicalRect s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 32) :: IO (Ptr Rectangle)
     result <- convertIfNonNull val $ \val' -> do
-        val'' <- (newPtr 16 Rectangle) val'
+        val'' <- (newPtr Rectangle) val'
         return val''
     return result
 
diff --git a/GI/Pango/Structs/AttrShape.hs-boot b/GI/Pango/Structs/AttrShape.hs-boot
--- a/GI/Pango/Structs/AttrShape.hs-boot
+++ b/GI/Pango/Structs/AttrShape.hs-boot
@@ -8,3 +8,4 @@
 import qualified Data.Map as Map
 
 newtype AttrShape = AttrShape (ForeignPtr AttrShape)
+instance WrappedPtr AttrShape where
diff --git a/GI/Pango/Structs/AttrSize.hs b/GI/Pango/Structs/AttrSize.hs
--- a/GI/Pango/Structs/AttrSize.hs
+++ b/GI/Pango/Structs/AttrSize.hs
@@ -60,9 +60,14 @@
 import GI.Pango.Callbacks
 
 newtype AttrSize = AttrSize (ForeignPtr AttrSize)
+instance WrappedPtr AttrSize where
+    wrappedPtrCalloc = callocBytes 24
+    wrappedPtrCopy = copyPtr 24
+    wrappedPtrFree = Just ptr_to_g_free
+
 -- | Construct a `AttrSize` struct initialized to zero.
 newZeroAttrSize :: MonadIO m => m AttrSize
-newZeroAttrSize = liftIO $ callocBytes 24 >>= wrapPtr AttrSize
+newZeroAttrSize = liftIO $ wrappedPtrCalloc >>= wrapPtr AttrSize
 
 instance tag ~ 'AttrSet => Constructible AttrSize tag where
     new _ attrs = do
@@ -78,7 +83,7 @@
 attrSizeReadAttr s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO (Ptr Attribute)
     result <- convertIfNonNull val $ \val' -> do
-        val'' <- (newPtr 16 Attribute) val'
+        val'' <- (newPtr Attribute) val'
         return val''
     return result
 
diff --git a/GI/Pango/Structs/AttrSize.hs-boot b/GI/Pango/Structs/AttrSize.hs-boot
--- a/GI/Pango/Structs/AttrSize.hs-boot
+++ b/GI/Pango/Structs/AttrSize.hs-boot
@@ -8,3 +8,4 @@
 import qualified Data.Map as Map
 
 newtype AttrSize = AttrSize (ForeignPtr AttrSize)
+instance WrappedPtr AttrSize where
diff --git a/GI/Pango/Structs/AttrString.hs b/GI/Pango/Structs/AttrString.hs
--- a/GI/Pango/Structs/AttrString.hs
+++ b/GI/Pango/Structs/AttrString.hs
@@ -48,9 +48,14 @@
 import GI.Pango.Callbacks
 
 newtype AttrString = AttrString (ForeignPtr AttrString)
+instance WrappedPtr AttrString where
+    wrappedPtrCalloc = callocBytes 24
+    wrappedPtrCopy = copyPtr 24
+    wrappedPtrFree = Just ptr_to_g_free
+
 -- | Construct a `AttrString` struct initialized to zero.
 newZeroAttrString :: MonadIO m => m AttrString
-newZeroAttrString = liftIO $ callocBytes 24 >>= wrapPtr AttrString
+newZeroAttrString = liftIO $ wrappedPtrCalloc >>= wrapPtr AttrString
 
 instance tag ~ 'AttrSet => Constructible AttrString tag where
     new _ attrs = do
@@ -66,7 +71,7 @@
 attrStringReadAttr s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO (Ptr Attribute)
     result <- convertIfNonNull val $ \val' -> do
-        val'' <- (newPtr 16 Attribute) val'
+        val'' <- (newPtr Attribute) val'
         return val''
     return result
 
diff --git a/GI/Pango/Structs/AttrString.hs-boot b/GI/Pango/Structs/AttrString.hs-boot
--- a/GI/Pango/Structs/AttrString.hs-boot
+++ b/GI/Pango/Structs/AttrString.hs-boot
@@ -8,3 +8,4 @@
 import qualified Data.Map as Map
 
 newtype AttrString = AttrString (ForeignPtr AttrString)
+instance WrappedPtr AttrString where
diff --git a/GI/Pango/Structs/Attribute.hs b/GI/Pango/Structs/Attribute.hs
--- a/GI/Pango/Structs/Attribute.hs
+++ b/GI/Pango/Structs/Attribute.hs
@@ -18,7 +18,6 @@
 
 -- * Exported types
     Attribute(..)                           ,
-    newZeroAttribute                        ,
     noAttribute                             ,
 
 
@@ -75,16 +74,14 @@
 import GI.Pango.Callbacks
 
 newtype Attribute = Attribute (ForeignPtr Attribute)
--- | Construct a `Attribute` struct initialized to zero.
-newZeroAttribute :: MonadIO m => m Attribute
-newZeroAttribute = liftIO $ callocBytes 16 >>= wrapPtr Attribute
+foreign import ccall "pango_attribute_copy" _Attribute_copy_pango_attribute_copy :: Ptr a -> IO (Ptr a)
 
-instance tag ~ 'AttrSet => Constructible Attribute tag where
-    new _ attrs = do
-        o <- newZeroAttribute
-        GI.Attributes.set o attrs
-        return o
+foreign import ccall "&pango_attribute_destroy" _Attribute_free_pango_attribute_destroy :: FunPtr (Ptr a -> IO ())
 
+instance WrappedPtr Attribute where
+    wrappedPtrCalloc = error "calloc not permitted for Attribute"
+    wrappedPtrCopy = _Attribute_copy_pango_attribute_copy
+    wrappedPtrFree = Just _Attribute_free_pango_attribute_destroy
 
 noAttribute :: Maybe Attribute
 noAttribute = Nothing
@@ -93,7 +90,7 @@
 attributeReadKlass s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO (Ptr AttrClass)
     result <- convertIfNonNull val $ \val' -> do
-        val'' <- (newPtr 32 AttrClass) val'
+        val'' <- (newPtr AttrClass) val'
         return val''
     return result
 
diff --git a/GI/Pango/Structs/Attribute.hs-boot b/GI/Pango/Structs/Attribute.hs-boot
--- a/GI/Pango/Structs/Attribute.hs-boot
+++ b/GI/Pango/Structs/Attribute.hs-boot
@@ -8,6 +8,7 @@
 import qualified Data.Map as Map
 
 newtype Attribute = Attribute (ForeignPtr Attribute)
+instance WrappedPtr Attribute where
 data AttributeDestroyMethodInfo
 data AttributeEqualMethodInfo
 data AttributeInitMethodInfo
diff --git a/GI/Pango/Structs/Coverage.hs b/GI/Pango/Structs/Coverage.hs
--- a/GI/Pango/Structs/Coverage.hs
+++ b/GI/Pango/Structs/Coverage.hs
@@ -58,6 +58,12 @@
 import GI.Pango.Callbacks
 
 newtype Coverage = Coverage (ForeignPtr Coverage)
+-- XXX Wrapping a foreign struct/union with no known destructor or size, leak?
+instance WrappedPtr Coverage where
+    wrappedPtrCalloc = return nullPtr
+    wrappedPtrCopy = return
+    wrappedPtrFree = Nothing
+
 noCoverage :: Maybe Coverage
 noCoverage = Nothing
 
diff --git a/GI/Pango/Structs/Coverage.hs-boot b/GI/Pango/Structs/Coverage.hs-boot
--- a/GI/Pango/Structs/Coverage.hs-boot
+++ b/GI/Pango/Structs/Coverage.hs-boot
@@ -8,6 +8,7 @@
 import qualified Data.Map as Map
 
 newtype Coverage = Coverage (ForeignPtr Coverage)
+instance WrappedPtr Coverage where
 data CoverageGetMethodInfo
 data CoverageMaxMethodInfo
 data CoverageSetMethodInfo
diff --git a/GI/Pango/Structs/EngineInfo.hs b/GI/Pango/Structs/EngineInfo.hs
--- a/GI/Pango/Structs/EngineInfo.hs
+++ b/GI/Pango/Structs/EngineInfo.hs
@@ -68,9 +68,14 @@
 import GI.Pango.Callbacks
 
 newtype EngineInfo = EngineInfo (ForeignPtr EngineInfo)
+instance WrappedPtr EngineInfo where
+    wrappedPtrCalloc = callocBytes 40
+    wrappedPtrCopy = copyPtr 40
+    wrappedPtrFree = Just ptr_to_g_free
+
 -- | Construct a `EngineInfo` struct initialized to zero.
 newZeroEngineInfo :: MonadIO m => m EngineInfo
-newZeroEngineInfo = liftIO $ callocBytes 40 >>= wrapPtr EngineInfo
+newZeroEngineInfo = liftIO $ wrappedPtrCalloc >>= wrapPtr EngineInfo
 
 instance tag ~ 'AttrSet => Constructible EngineInfo tag where
     new _ attrs = do
@@ -182,7 +187,7 @@
 engineInfoReadScripts s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 24) :: IO (Ptr EngineScriptInfo)
     result <- convertIfNonNull val $ \val' -> do
-        val'' <- (newPtr 16 EngineScriptInfo) val'
+        val'' <- (newPtr EngineScriptInfo) val'
         return val''
     return result
 
diff --git a/GI/Pango/Structs/EngineInfo.hs-boot b/GI/Pango/Structs/EngineInfo.hs-boot
--- a/GI/Pango/Structs/EngineInfo.hs-boot
+++ b/GI/Pango/Structs/EngineInfo.hs-boot
@@ -8,3 +8,4 @@
 import qualified Data.Map as Map
 
 newtype EngineInfo = EngineInfo (ForeignPtr EngineInfo)
+instance WrappedPtr EngineInfo where
diff --git a/GI/Pango/Structs/EngineScriptInfo.hs b/GI/Pango/Structs/EngineScriptInfo.hs
--- a/GI/Pango/Structs/EngineScriptInfo.hs
+++ b/GI/Pango/Structs/EngineScriptInfo.hs
@@ -47,9 +47,14 @@
 import GI.Pango.Callbacks
 
 newtype EngineScriptInfo = EngineScriptInfo (ForeignPtr EngineScriptInfo)
+instance WrappedPtr EngineScriptInfo where
+    wrappedPtrCalloc = callocBytes 16
+    wrappedPtrCopy = copyPtr 16
+    wrappedPtrFree = Just ptr_to_g_free
+
 -- | Construct a `EngineScriptInfo` struct initialized to zero.
 newZeroEngineScriptInfo :: MonadIO m => m EngineScriptInfo
-newZeroEngineScriptInfo = liftIO $ callocBytes 16 >>= wrapPtr EngineScriptInfo
+newZeroEngineScriptInfo = liftIO $ wrappedPtrCalloc >>= wrapPtr EngineScriptInfo
 
 instance tag ~ 'AttrSet => Constructible EngineScriptInfo tag where
     new _ attrs = do
diff --git a/GI/Pango/Structs/EngineScriptInfo.hs-boot b/GI/Pango/Structs/EngineScriptInfo.hs-boot
--- a/GI/Pango/Structs/EngineScriptInfo.hs-boot
+++ b/GI/Pango/Structs/EngineScriptInfo.hs-boot
@@ -8,3 +8,4 @@
 import qualified Data.Map as Map
 
 newtype EngineScriptInfo = EngineScriptInfo (ForeignPtr EngineScriptInfo)
+instance WrappedPtr EngineScriptInfo where
diff --git a/GI/Pango/Structs/GlyphGeometry.hs b/GI/Pango/Structs/GlyphGeometry.hs
--- a/GI/Pango/Structs/GlyphGeometry.hs
+++ b/GI/Pango/Structs/GlyphGeometry.hs
@@ -52,9 +52,14 @@
 import GI.Pango.Callbacks
 
 newtype GlyphGeometry = GlyphGeometry (ForeignPtr GlyphGeometry)
+instance WrappedPtr GlyphGeometry where
+    wrappedPtrCalloc = callocBytes 12
+    wrappedPtrCopy = copyPtr 12
+    wrappedPtrFree = Just ptr_to_g_free
+
 -- | Construct a `GlyphGeometry` struct initialized to zero.
 newZeroGlyphGeometry :: MonadIO m => m GlyphGeometry
-newZeroGlyphGeometry = liftIO $ callocBytes 12 >>= wrapPtr GlyphGeometry
+newZeroGlyphGeometry = liftIO $ wrappedPtrCalloc >>= wrapPtr GlyphGeometry
 
 instance tag ~ 'AttrSet => Constructible GlyphGeometry tag where
     new _ attrs = do
diff --git a/GI/Pango/Structs/GlyphGeometry.hs-boot b/GI/Pango/Structs/GlyphGeometry.hs-boot
--- a/GI/Pango/Structs/GlyphGeometry.hs-boot
+++ b/GI/Pango/Structs/GlyphGeometry.hs-boot
@@ -8,3 +8,4 @@
 import qualified Data.Map as Map
 
 newtype GlyphGeometry = GlyphGeometry (ForeignPtr GlyphGeometry)
+instance WrappedPtr GlyphGeometry where
diff --git a/GI/Pango/Structs/GlyphInfo.hs b/GI/Pango/Structs/GlyphInfo.hs
--- a/GI/Pango/Structs/GlyphInfo.hs
+++ b/GI/Pango/Structs/GlyphInfo.hs
@@ -55,9 +55,14 @@
 import GI.Pango.Callbacks
 
 newtype GlyphInfo = GlyphInfo (ForeignPtr GlyphInfo)
+instance WrappedPtr GlyphInfo where
+    wrappedPtrCalloc = callocBytes 20
+    wrappedPtrCopy = copyPtr 20
+    wrappedPtrFree = Just ptr_to_g_free
+
 -- | Construct a `GlyphInfo` struct initialized to zero.
 newZeroGlyphInfo :: MonadIO m => m GlyphInfo
-newZeroGlyphInfo = liftIO $ callocBytes 20 >>= wrapPtr GlyphInfo
+newZeroGlyphInfo = liftIO $ wrappedPtrCalloc >>= wrapPtr GlyphInfo
 
 instance tag ~ 'AttrSet => Constructible GlyphInfo tag where
     new _ attrs = do
@@ -98,7 +103,7 @@
 glyphInfoReadGeometry s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 4) :: IO (Ptr GlyphGeometry)
     result <- convertIfNonNull val $ \val' -> do
-        val'' <- (newPtr 12 GlyphGeometry) val'
+        val'' <- (newPtr GlyphGeometry) val'
         return val''
     return result
 
@@ -130,7 +135,7 @@
 glyphInfoReadAttr s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 16) :: IO (Ptr GlyphVisAttr)
     result <- convertIfNonNull val $ \val' -> do
-        val'' <- (newPtr 4 GlyphVisAttr) val'
+        val'' <- (newPtr GlyphVisAttr) val'
         return val''
     return result
 
diff --git a/GI/Pango/Structs/GlyphInfo.hs-boot b/GI/Pango/Structs/GlyphInfo.hs-boot
--- a/GI/Pango/Structs/GlyphInfo.hs-boot
+++ b/GI/Pango/Structs/GlyphInfo.hs-boot
@@ -8,3 +8,4 @@
 import qualified Data.Map as Map
 
 newtype GlyphInfo = GlyphInfo (ForeignPtr GlyphInfo)
+instance WrappedPtr GlyphInfo where
diff --git a/GI/Pango/Structs/GlyphVisAttr.hs b/GI/Pango/Structs/GlyphVisAttr.hs
--- a/GI/Pango/Structs/GlyphVisAttr.hs
+++ b/GI/Pango/Structs/GlyphVisAttr.hs
@@ -41,9 +41,14 @@
 import GI.Pango.Callbacks
 
 newtype GlyphVisAttr = GlyphVisAttr (ForeignPtr GlyphVisAttr)
+instance WrappedPtr GlyphVisAttr where
+    wrappedPtrCalloc = callocBytes 4
+    wrappedPtrCopy = copyPtr 4
+    wrappedPtrFree = Just ptr_to_g_free
+
 -- | Construct a `GlyphVisAttr` struct initialized to zero.
 newZeroGlyphVisAttr :: MonadIO m => m GlyphVisAttr
-newZeroGlyphVisAttr = liftIO $ callocBytes 4 >>= wrapPtr GlyphVisAttr
+newZeroGlyphVisAttr = liftIO $ wrappedPtrCalloc >>= wrapPtr GlyphVisAttr
 
 instance tag ~ 'AttrSet => Constructible GlyphVisAttr tag where
     new _ attrs = do
diff --git a/GI/Pango/Structs/GlyphVisAttr.hs-boot b/GI/Pango/Structs/GlyphVisAttr.hs-boot
--- a/GI/Pango/Structs/GlyphVisAttr.hs-boot
+++ b/GI/Pango/Structs/GlyphVisAttr.hs-boot
@@ -8,3 +8,4 @@
 import qualified Data.Map as Map
 
 newtype GlyphVisAttr = GlyphVisAttr (ForeignPtr GlyphVisAttr)
+instance WrappedPtr GlyphVisAttr where
diff --git a/GI/Pango/Structs/IncludedModule.hs b/GI/Pango/Structs/IncludedModule.hs
--- a/GI/Pango/Structs/IncludedModule.hs
+++ b/GI/Pango/Structs/IncludedModule.hs
@@ -32,9 +32,14 @@
 import GI.Pango.Callbacks
 
 newtype IncludedModule = IncludedModule (ForeignPtr IncludedModule)
+instance WrappedPtr IncludedModule where
+    wrappedPtrCalloc = callocBytes 32
+    wrappedPtrCopy = copyPtr 32
+    wrappedPtrFree = Just ptr_to_g_free
+
 -- | Construct a `IncludedModule` struct initialized to zero.
 newZeroIncludedModule :: MonadIO m => m IncludedModule
-newZeroIncludedModule = liftIO $ callocBytes 32 >>= wrapPtr IncludedModule
+newZeroIncludedModule = liftIO $ wrappedPtrCalloc >>= wrapPtr IncludedModule
 
 instance tag ~ 'AttrSet => Constructible IncludedModule tag where
     new _ attrs = do
diff --git a/GI/Pango/Structs/IncludedModule.hs-boot b/GI/Pango/Structs/IncludedModule.hs-boot
--- a/GI/Pango/Structs/IncludedModule.hs-boot
+++ b/GI/Pango/Structs/IncludedModule.hs-boot
@@ -8,3 +8,4 @@
 import qualified Data.Map as Map
 
 newtype IncludedModule = IncludedModule (ForeignPtr IncludedModule)
+instance WrappedPtr IncludedModule where
diff --git a/GI/Pango/Structs/Item.hs b/GI/Pango/Structs/Item.hs
--- a/GI/Pango/Structs/Item.hs
+++ b/GI/Pango/Structs/Item.hs
@@ -179,7 +179,7 @@
 itemReadAnalysis s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 16) :: IO (Ptr Analysis)
     result <- convertIfNonNull val $ \val' -> do
-        val'' <- (newPtr 48 Analysis) val'
+        val'' <- (newPtr Analysis) val'
         return val''
     return result
 
diff --git a/GI/Pango/Structs/LogAttr.hs b/GI/Pango/Structs/LogAttr.hs
--- a/GI/Pango/Structs/LogAttr.hs
+++ b/GI/Pango/Structs/LogAttr.hs
@@ -112,9 +112,14 @@
 import GI.Pango.Callbacks
 
 newtype LogAttr = LogAttr (ForeignPtr LogAttr)
+instance WrappedPtr LogAttr where
+    wrappedPtrCalloc = callocBytes 52
+    wrappedPtrCopy = copyPtr 52
+    wrappedPtrFree = Just ptr_to_g_free
+
 -- | Construct a `LogAttr` struct initialized to zero.
 newZeroLogAttr :: MonadIO m => m LogAttr
-newZeroLogAttr = liftIO $ callocBytes 52 >>= wrapPtr LogAttr
+newZeroLogAttr = liftIO $ wrappedPtrCalloc >>= wrapPtr LogAttr
 
 instance tag ~ 'AttrSet => Constructible LogAttr tag where
     new _ attrs = do
diff --git a/GI/Pango/Structs/LogAttr.hs-boot b/GI/Pango/Structs/LogAttr.hs-boot
--- a/GI/Pango/Structs/LogAttr.hs-boot
+++ b/GI/Pango/Structs/LogAttr.hs-boot
@@ -8,3 +8,4 @@
 import qualified Data.Map as Map
 
 newtype LogAttr = LogAttr (ForeignPtr LogAttr)
+instance WrappedPtr LogAttr where
diff --git a/GI/Pango/Structs/Map.hs b/GI/Pango/Structs/Map.hs
--- a/GI/Pango/Structs/Map.hs
+++ b/GI/Pango/Structs/Map.hs
@@ -27,6 +27,12 @@
 import GI.Pango.Callbacks
 
 newtype Map = Map (ForeignPtr Map)
+-- XXX Wrapping a foreign struct/union with no known destructor or size, leak?
+instance WrappedPtr Map where
+    wrappedPtrCalloc = return nullPtr
+    wrappedPtrCopy = return
+    wrappedPtrFree = Nothing
+
 noMap :: Maybe Map
 noMap = Nothing
 
diff --git a/GI/Pango/Structs/Map.hs-boot b/GI/Pango/Structs/Map.hs-boot
--- a/GI/Pango/Structs/Map.hs-boot
+++ b/GI/Pango/Structs/Map.hs-boot
@@ -8,3 +8,4 @@
 import qualified Data.Map as Map
 
 newtype Map = Map (ForeignPtr Map)
+instance WrappedPtr Map where
diff --git a/GI/Pango/Structs/MapEntry.hs b/GI/Pango/Structs/MapEntry.hs
--- a/GI/Pango/Structs/MapEntry.hs
+++ b/GI/Pango/Structs/MapEntry.hs
@@ -27,6 +27,12 @@
 import GI.Pango.Callbacks
 
 newtype MapEntry = MapEntry (ForeignPtr MapEntry)
+-- XXX Wrapping a foreign struct/union with no known destructor or size, leak?
+instance WrappedPtr MapEntry where
+    wrappedPtrCalloc = return nullPtr
+    wrappedPtrCopy = return
+    wrappedPtrFree = Nothing
+
 noMapEntry :: Maybe MapEntry
 noMapEntry = Nothing
 
diff --git a/GI/Pango/Structs/MapEntry.hs-boot b/GI/Pango/Structs/MapEntry.hs-boot
--- a/GI/Pango/Structs/MapEntry.hs-boot
+++ b/GI/Pango/Structs/MapEntry.hs-boot
@@ -8,3 +8,4 @@
 import qualified Data.Map as Map
 
 newtype MapEntry = MapEntry (ForeignPtr MapEntry)
+instance WrappedPtr MapEntry where
diff --git a/GI/Pango/Structs/Rectangle.hs b/GI/Pango/Structs/Rectangle.hs
--- a/GI/Pango/Structs/Rectangle.hs
+++ b/GI/Pango/Structs/Rectangle.hs
@@ -59,9 +59,14 @@
 import GI.Pango.Callbacks
 
 newtype Rectangle = Rectangle (ForeignPtr Rectangle)
+instance WrappedPtr Rectangle where
+    wrappedPtrCalloc = callocBytes 16
+    wrappedPtrCopy = copyPtr 16
+    wrappedPtrFree = Just ptr_to_g_free
+
 -- | Construct a `Rectangle` struct initialized to zero.
 newZeroRectangle :: MonadIO m => m Rectangle
-newZeroRectangle = liftIO $ callocBytes 16 >>= wrapPtr Rectangle
+newZeroRectangle = liftIO $ wrappedPtrCalloc >>= wrapPtr Rectangle
 
 instance tag ~ 'AttrSet => Constructible Rectangle tag where
     new _ attrs = do
diff --git a/GI/Pango/Structs/Rectangle.hs-boot b/GI/Pango/Structs/Rectangle.hs-boot
--- a/GI/Pango/Structs/Rectangle.hs-boot
+++ b/GI/Pango/Structs/Rectangle.hs-boot
@@ -8,3 +8,4 @@
 import qualified Data.Map as Map
 
 newtype Rectangle = Rectangle (ForeignPtr Rectangle)
+instance WrappedPtr Rectangle where
diff --git a/GI/Pango/Structs/ScriptForLang.hs b/GI/Pango/Structs/ScriptForLang.hs
--- a/GI/Pango/Structs/ScriptForLang.hs
+++ b/GI/Pango/Structs/ScriptForLang.hs
@@ -28,9 +28,14 @@
 import GI.Pango.Callbacks
 
 newtype ScriptForLang = ScriptForLang (ForeignPtr ScriptForLang)
+instance WrappedPtr ScriptForLang where
+    wrappedPtrCalloc = callocBytes 20
+    wrappedPtrCopy = copyPtr 20
+    wrappedPtrFree = Just ptr_to_g_free
+
 -- | Construct a `ScriptForLang` struct initialized to zero.
 newZeroScriptForLang :: MonadIO m => m ScriptForLang
-newZeroScriptForLang = liftIO $ callocBytes 20 >>= wrapPtr ScriptForLang
+newZeroScriptForLang = liftIO $ wrappedPtrCalloc >>= wrapPtr ScriptForLang
 
 instance tag ~ 'AttrSet => Constructible ScriptForLang tag where
     new _ attrs = do
diff --git a/GI/Pango/Structs/ScriptForLang.hs-boot b/GI/Pango/Structs/ScriptForLang.hs-boot
--- a/GI/Pango/Structs/ScriptForLang.hs-boot
+++ b/GI/Pango/Structs/ScriptForLang.hs-boot
@@ -8,3 +8,4 @@
 import qualified Data.Map as Map
 
 newtype ScriptForLang = ScriptForLang (ForeignPtr ScriptForLang)
+instance WrappedPtr ScriptForLang where
diff --git a/GI/Pango/Structs/ScriptIter.hs b/GI/Pango/Structs/ScriptIter.hs
--- a/GI/Pango/Structs/ScriptIter.hs
+++ b/GI/Pango/Structs/ScriptIter.hs
@@ -48,6 +48,12 @@
 import GI.Pango.Callbacks
 
 newtype ScriptIter = ScriptIter (ForeignPtr ScriptIter)
+-- XXX Wrapping a foreign struct/union with no known destructor or size, leak?
+instance WrappedPtr ScriptIter where
+    wrappedPtrCalloc = return nullPtr
+    wrappedPtrCopy = return
+    wrappedPtrFree = Nothing
+
 noScriptIter :: Maybe ScriptIter
 noScriptIter = Nothing
 
diff --git a/GI/Pango/Structs/ScriptIter.hs-boot b/GI/Pango/Structs/ScriptIter.hs-boot
--- a/GI/Pango/Structs/ScriptIter.hs-boot
+++ b/GI/Pango/Structs/ScriptIter.hs-boot
@@ -8,6 +8,7 @@
 import qualified Data.Map as Map
 
 newtype ScriptIter = ScriptIter (ForeignPtr ScriptIter)
+instance WrappedPtr ScriptIter where
 data ScriptIterFreeMethodInfo
 data ScriptIterGetRangeMethodInfo
 data ScriptIterNextMethodInfo
diff --git a/gi-pango.cabal b/gi-pango.cabal
--- a/gi-pango.cabal
+++ b/gi-pango.cabal
@@ -1,6 +1,6 @@
 -- Autogenerated, do not edit.
 name:               gi-pango
-version:            0.1.38.14
+version:            0.1.38.15
 synopsis:           Pango bindings
 description:        Bindings for Pango, autogenerated by haskell-gi.
 homepage:           https://github.com/haskell-gi/haskell-gi
@@ -79,9 +79,9 @@
                         GI.Pango.Structs.TabArray
     pkgconfig-depends:  pango >= 1.38
     build-depends: base >= 4.7 && <5,
-        haskell-gi-base >= 0.14 && < 1,
-        gi-glib >= 0.2.46.14 && < 0.2.47,
-        gi-gobject >= 0.2.46.14 && < 0.2.47,
+        haskell-gi-base >= 0.15 && < 1,
+        gi-glib >= 0.2.46.15 && < 0.2.47,
+        gi-gobject >= 0.2.46.15 && < 0.2.47,
         bytestring >= 0.10,
         containers >= 0.5,
         text >= 1.0,
