diff --git a/GI/Cairo.hs b/GI/Cairo.hs
--- a/GI/Cairo.hs
+++ b/GI/Cairo.hs
@@ -24,9 +24,9 @@
 import GI.Cairo.Functions
 import GI.Cairo.Structs
 
-import Prelude ()
 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
diff --git a/GI/Cairo/Callbacks.hs b/GI/Cairo/Callbacks.hs
--- a/GI/Cairo/Callbacks.hs
+++ b/GI/Cairo/Callbacks.hs
@@ -8,9 +8,9 @@
 
 module GI.Cairo.Callbacks () where
 
-import Prelude ()
 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
diff --git a/GI/Cairo/Enums.hs b/GI/Cairo/Enums.hs
--- a/GI/Cairo/Enums.hs
+++ b/GI/Cairo/Enums.hs
@@ -15,9 +15,9 @@
 
     ) where
 
-import Prelude ()
 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
diff --git a/GI/Cairo/Functions.hs b/GI/Cairo/Functions.hs
--- a/GI/Cairo/Functions.hs
+++ b/GI/Cairo/Functions.hs
@@ -18,9 +18,9 @@
 
     ) where
 
-import Prelude ()
 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
@@ -31,7 +31,7 @@
 -- function cairo_image_surface_create
 -- Args : []
 -- Lengths : []
--- returnType : TBasicType TVoid
+-- returnType : Nothing
 -- throws : False
 -- Skip return : False
 
diff --git a/GI/Cairo/Structs.hs b/GI/Cairo/Structs.hs
--- a/GI/Cairo/Structs.hs
+++ b/GI/Cairo/Structs.hs
@@ -34,9 +34,9 @@
 import GI.Cairo.Structs.ScaledFont
 import GI.Cairo.Structs.Surface
 
-import Prelude ()
 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
diff --git a/GI/Cairo/Structs/Context.hs b/GI/Cairo/Structs/Context.hs
--- a/GI/Cairo/Structs/Context.hs
+++ b/GI/Cairo/Structs/Context.hs
@@ -16,9 +16,9 @@
 
     ) where
 
-import Prelude ()
 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
@@ -35,6 +35,10 @@
 
 noContext :: Maybe Context
 noContext = Nothing
+
+
+type instance AttributeList Context = ContextAttributeList
+type ContextAttributeList = ('[ ] :: [(Symbol, *)])
 
 type family ResolveContextMethod (t :: Symbol) (o :: *) :: * where
     ResolveContextMethod l o = MethodResolutionFailed l o
diff --git a/GI/Cairo/Structs/Context.hs-boot b/GI/Cairo/Structs/Context.hs-boot
--- a/GI/Cairo/Structs/Context.hs-boot
+++ b/GI/Cairo/Structs/Context.hs-boot
@@ -1,8 +1,8 @@
 module GI.Cairo.Structs.Context where
 
-import Prelude ()
 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
diff --git a/GI/Cairo/Structs/FontFace.hs b/GI/Cairo/Structs/FontFace.hs
--- a/GI/Cairo/Structs/FontFace.hs
+++ b/GI/Cairo/Structs/FontFace.hs
@@ -16,9 +16,9 @@
 
     ) where
 
-import Prelude ()
 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
@@ -35,6 +35,10 @@
 
 noFontFace :: Maybe FontFace
 noFontFace = Nothing
+
+
+type instance AttributeList FontFace = FontFaceAttributeList
+type FontFaceAttributeList = ('[ ] :: [(Symbol, *)])
 
 type family ResolveFontFaceMethod (t :: Symbol) (o :: *) :: * where
     ResolveFontFaceMethod l o = MethodResolutionFailed l o
diff --git a/GI/Cairo/Structs/FontFace.hs-boot b/GI/Cairo/Structs/FontFace.hs-boot
--- a/GI/Cairo/Structs/FontFace.hs-boot
+++ b/GI/Cairo/Structs/FontFace.hs-boot
@@ -1,8 +1,8 @@
 module GI.Cairo.Structs.FontFace where
 
-import Prelude ()
 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
diff --git a/GI/Cairo/Structs/FontOptions.hs b/GI/Cairo/Structs/FontOptions.hs
--- a/GI/Cairo/Structs/FontOptions.hs
+++ b/GI/Cairo/Structs/FontOptions.hs
@@ -16,9 +16,9 @@
 
     ) where
 
-import Prelude ()
 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
@@ -29,6 +29,10 @@
 newtype FontOptions = FontOptions (ForeignPtr FontOptions)
 noFontOptions :: Maybe FontOptions
 noFontOptions = Nothing
+
+
+type instance AttributeList FontOptions = FontOptionsAttributeList
+type FontOptionsAttributeList = ('[ ] :: [(Symbol, *)])
 
 type family ResolveFontOptionsMethod (t :: Symbol) (o :: *) :: * where
     ResolveFontOptionsMethod l o = MethodResolutionFailed l o
diff --git a/GI/Cairo/Structs/FontOptions.hs-boot b/GI/Cairo/Structs/FontOptions.hs-boot
--- a/GI/Cairo/Structs/FontOptions.hs-boot
+++ b/GI/Cairo/Structs/FontOptions.hs-boot
@@ -1,8 +1,8 @@
 module GI.Cairo.Structs.FontOptions where
 
-import Prelude ()
 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
diff --git a/GI/Cairo/Structs/FontType.hs b/GI/Cairo/Structs/FontType.hs
--- a/GI/Cairo/Structs/FontType.hs
+++ b/GI/Cairo/Structs/FontType.hs
@@ -16,9 +16,9 @@
 
     ) where
 
-import Prelude ()
 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
@@ -29,6 +29,10 @@
 newtype FontType = FontType (ForeignPtr FontType)
 noFontType :: Maybe FontType
 noFontType = Nothing
+
+
+type instance AttributeList FontType = FontTypeAttributeList
+type FontTypeAttributeList = ('[ ] :: [(Symbol, *)])
 
 type family ResolveFontTypeMethod (t :: Symbol) (o :: *) :: * where
     ResolveFontTypeMethod l o = MethodResolutionFailed l o
diff --git a/GI/Cairo/Structs/FontType.hs-boot b/GI/Cairo/Structs/FontType.hs-boot
--- a/GI/Cairo/Structs/FontType.hs-boot
+++ b/GI/Cairo/Structs/FontType.hs-boot
@@ -1,8 +1,8 @@
 module GI.Cairo.Structs.FontType where
 
-import Prelude ()
 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
diff --git a/GI/Cairo/Structs/Matrix.hs b/GI/Cairo/Structs/Matrix.hs
--- a/GI/Cairo/Structs/Matrix.hs
+++ b/GI/Cairo/Structs/Matrix.hs
@@ -16,9 +16,9 @@
 
     ) where
 
-import Prelude ()
 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
@@ -29,6 +29,10 @@
 newtype Matrix = Matrix (ForeignPtr Matrix)
 noMatrix :: Maybe Matrix
 noMatrix = Nothing
+
+
+type instance AttributeList Matrix = MatrixAttributeList
+type MatrixAttributeList = ('[ ] :: [(Symbol, *)])
 
 type family ResolveMatrixMethod (t :: Symbol) (o :: *) :: * where
     ResolveMatrixMethod l o = MethodResolutionFailed l o
diff --git a/GI/Cairo/Structs/Matrix.hs-boot b/GI/Cairo/Structs/Matrix.hs-boot
--- a/GI/Cairo/Structs/Matrix.hs-boot
+++ b/GI/Cairo/Structs/Matrix.hs-boot
@@ -1,8 +1,8 @@
 module GI.Cairo.Structs.Matrix where
 
-import Prelude ()
 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
diff --git a/GI/Cairo/Structs/Path.hs b/GI/Cairo/Structs/Path.hs
--- a/GI/Cairo/Structs/Path.hs
+++ b/GI/Cairo/Structs/Path.hs
@@ -16,9 +16,9 @@
 
     ) where
 
-import Prelude ()
 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
@@ -29,6 +29,10 @@
 newtype Path = Path (ForeignPtr Path)
 noPath :: Maybe Path
 noPath = Nothing
+
+
+type instance AttributeList Path = PathAttributeList
+type PathAttributeList = ('[ ] :: [(Symbol, *)])
 
 type family ResolvePathMethod (t :: Symbol) (o :: *) :: * where
     ResolvePathMethod l o = MethodResolutionFailed l o
diff --git a/GI/Cairo/Structs/Path.hs-boot b/GI/Cairo/Structs/Path.hs-boot
--- a/GI/Cairo/Structs/Path.hs-boot
+++ b/GI/Cairo/Structs/Path.hs-boot
@@ -1,8 +1,8 @@
 module GI.Cairo.Structs.Path where
 
-import Prelude ()
 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
diff --git a/GI/Cairo/Structs/Pattern.hs b/GI/Cairo/Structs/Pattern.hs
--- a/GI/Cairo/Structs/Pattern.hs
+++ b/GI/Cairo/Structs/Pattern.hs
@@ -16,9 +16,9 @@
 
     ) where
 
-import Prelude ()
 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
@@ -35,6 +35,10 @@
 
 noPattern :: Maybe Pattern
 noPattern = Nothing
+
+
+type instance AttributeList Pattern = PatternAttributeList
+type PatternAttributeList = ('[ ] :: [(Symbol, *)])
 
 type family ResolvePatternMethod (t :: Symbol) (o :: *) :: * where
     ResolvePatternMethod l o = MethodResolutionFailed l o
diff --git a/GI/Cairo/Structs/Pattern.hs-boot b/GI/Cairo/Structs/Pattern.hs-boot
--- a/GI/Cairo/Structs/Pattern.hs-boot
+++ b/GI/Cairo/Structs/Pattern.hs-boot
@@ -1,8 +1,8 @@
 module GI.Cairo.Structs.Pattern where
 
-import Prelude ()
 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
diff --git a/GI/Cairo/Structs/RectangleInt.hs b/GI/Cairo/Structs/RectangleInt.hs
--- a/GI/Cairo/Structs/RectangleInt.hs
+++ b/GI/Cairo/Structs/RectangleInt.hs
@@ -17,28 +17,36 @@
 
  -- * Properties
 -- ** Height
+    rectangleIntHeight                      ,
     rectangleIntReadHeight                  ,
+    rectangleIntWriteHeight                 ,
 
 
 -- ** Width
     rectangleIntReadWidth                   ,
+    rectangleIntWidth                       ,
+    rectangleIntWriteWidth                  ,
 
 
 -- ** X
     rectangleIntReadX                       ,
+    rectangleIntWriteX                      ,
+    rectangleIntX                           ,
 
 
 -- ** Y
     rectangleIntReadY                       ,
+    rectangleIntWriteY                      ,
+    rectangleIntY                           ,
 
 
 
 
     ) where
 
-import Prelude ()
 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
@@ -57,28 +65,119 @@
 newZeroRectangleInt :: MonadIO m => m RectangleInt
 newZeroRectangleInt = liftIO $ callocBoxedBytes 16 >>= wrapBoxed RectangleInt
 
+instance tag ~ 'AttrSet => Constructible RectangleInt tag where
+    new _ attrs = do
+        o <- newZeroRectangleInt
+        GI.Attributes.set o attrs
+        return o
+
+
 noRectangleInt :: Maybe RectangleInt
 noRectangleInt = Nothing
 
-rectangleIntReadX :: RectangleInt -> IO Int32
-rectangleIntReadX s = withManagedPtr s $ \ptr -> do
+rectangleIntReadX :: MonadIO m => RectangleInt -> m Int32
+rectangleIntReadX s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 0) :: IO Int32
     return val
 
-rectangleIntReadY :: RectangleInt -> IO Int32
-rectangleIntReadY s = withManagedPtr s $ \ptr -> do
+rectangleIntWriteX :: MonadIO m => RectangleInt -> Int32 -> m ()
+rectangleIntWriteX s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 0) (val :: Int32)
+
+data RectangleIntXFieldInfo
+instance AttrInfo RectangleIntXFieldInfo where
+    type AttrAllowedOps RectangleIntXFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint RectangleIntXFieldInfo = (~) Int32
+    type AttrBaseTypeConstraint RectangleIntXFieldInfo = (~) RectangleInt
+    type AttrGetType RectangleIntXFieldInfo = Int32
+    type AttrLabel RectangleIntXFieldInfo = "x"
+    attrGet _ = rectangleIntReadX
+    attrSet _ = rectangleIntWriteX
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+rectangleIntX :: AttrLabelProxy "x"
+rectangleIntX = AttrLabelProxy
+
+
+rectangleIntReadY :: MonadIO m => RectangleInt -> m Int32
+rectangleIntReadY s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 4) :: IO Int32
     return val
 
-rectangleIntReadWidth :: RectangleInt -> IO Int32
-rectangleIntReadWidth s = withManagedPtr s $ \ptr -> do
+rectangleIntWriteY :: MonadIO m => RectangleInt -> Int32 -> m ()
+rectangleIntWriteY s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 4) (val :: Int32)
+
+data RectangleIntYFieldInfo
+instance AttrInfo RectangleIntYFieldInfo where
+    type AttrAllowedOps RectangleIntYFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint RectangleIntYFieldInfo = (~) Int32
+    type AttrBaseTypeConstraint RectangleIntYFieldInfo = (~) RectangleInt
+    type AttrGetType RectangleIntYFieldInfo = Int32
+    type AttrLabel RectangleIntYFieldInfo = "y"
+    attrGet _ = rectangleIntReadY
+    attrSet _ = rectangleIntWriteY
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+rectangleIntY :: AttrLabelProxy "y"
+rectangleIntY = AttrLabelProxy
+
+
+rectangleIntReadWidth :: MonadIO m => RectangleInt -> m Int32
+rectangleIntReadWidth s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 8) :: IO Int32
     return val
 
-rectangleIntReadHeight :: RectangleInt -> IO Int32
-rectangleIntReadHeight s = withManagedPtr s $ \ptr -> do
+rectangleIntWriteWidth :: MonadIO m => RectangleInt -> Int32 -> m ()
+rectangleIntWriteWidth s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 8) (val :: Int32)
+
+data RectangleIntWidthFieldInfo
+instance AttrInfo RectangleIntWidthFieldInfo where
+    type AttrAllowedOps RectangleIntWidthFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint RectangleIntWidthFieldInfo = (~) Int32
+    type AttrBaseTypeConstraint RectangleIntWidthFieldInfo = (~) RectangleInt
+    type AttrGetType RectangleIntWidthFieldInfo = Int32
+    type AttrLabel RectangleIntWidthFieldInfo = "width"
+    attrGet _ = rectangleIntReadWidth
+    attrSet _ = rectangleIntWriteWidth
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+rectangleIntWidth :: AttrLabelProxy "width"
+rectangleIntWidth = AttrLabelProxy
+
+
+rectangleIntReadHeight :: MonadIO m => RectangleInt -> m Int32
+rectangleIntReadHeight s = liftIO $ withManagedPtr s $ \ptr -> do
     val <- peek (ptr `plusPtr` 12) :: IO Int32
     return val
+
+rectangleIntWriteHeight :: MonadIO m => RectangleInt -> Int32 -> m ()
+rectangleIntWriteHeight s val = liftIO $ withManagedPtr s $ \ptr -> do
+    poke (ptr `plusPtr` 12) (val :: Int32)
+
+data RectangleIntHeightFieldInfo
+instance AttrInfo RectangleIntHeightFieldInfo where
+    type AttrAllowedOps RectangleIntHeightFieldInfo = '[ 'AttrSet, 'AttrGet]
+    type AttrSetTypeConstraint RectangleIntHeightFieldInfo = (~) Int32
+    type AttrBaseTypeConstraint RectangleIntHeightFieldInfo = (~) RectangleInt
+    type AttrGetType RectangleIntHeightFieldInfo = Int32
+    type AttrLabel RectangleIntHeightFieldInfo = "height"
+    attrGet _ = rectangleIntReadHeight
+    attrSet _ = rectangleIntWriteHeight
+    attrConstruct = undefined
+    attrClear _ = undefined
+
+rectangleIntHeight :: AttrLabelProxy "height"
+rectangleIntHeight = AttrLabelProxy
+
+
+
+type instance AttributeList RectangleInt = RectangleIntAttributeList
+type RectangleIntAttributeList = ('[ '("x", RectangleIntXFieldInfo), '("y", RectangleIntYFieldInfo), '("width", RectangleIntWidthFieldInfo), '("height", RectangleIntHeightFieldInfo)] :: [(Symbol, *)])
 
 type family ResolveRectangleIntMethod (t :: Symbol) (o :: *) :: * where
     ResolveRectangleIntMethod l o = MethodResolutionFailed l o
diff --git a/GI/Cairo/Structs/RectangleInt.hs-boot b/GI/Cairo/Structs/RectangleInt.hs-boot
--- a/GI/Cairo/Structs/RectangleInt.hs-boot
+++ b/GI/Cairo/Structs/RectangleInt.hs-boot
@@ -1,8 +1,8 @@
 module GI.Cairo.Structs.RectangleInt where
 
-import Prelude ()
 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
diff --git a/GI/Cairo/Structs/Region.hs b/GI/Cairo/Structs/Region.hs
--- a/GI/Cairo/Structs/Region.hs
+++ b/GI/Cairo/Structs/Region.hs
@@ -16,9 +16,9 @@
 
     ) where
 
-import Prelude ()
 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
@@ -35,6 +35,10 @@
 
 noRegion :: Maybe Region
 noRegion = Nothing
+
+
+type instance AttributeList Region = RegionAttributeList
+type RegionAttributeList = ('[ ] :: [(Symbol, *)])
 
 type family ResolveRegionMethod (t :: Symbol) (o :: *) :: * where
     ResolveRegionMethod l o = MethodResolutionFailed l o
diff --git a/GI/Cairo/Structs/Region.hs-boot b/GI/Cairo/Structs/Region.hs-boot
--- a/GI/Cairo/Structs/Region.hs-boot
+++ b/GI/Cairo/Structs/Region.hs-boot
@@ -1,8 +1,8 @@
 module GI.Cairo.Structs.Region where
 
-import Prelude ()
 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
diff --git a/GI/Cairo/Structs/ScaledFont.hs b/GI/Cairo/Structs/ScaledFont.hs
--- a/GI/Cairo/Structs/ScaledFont.hs
+++ b/GI/Cairo/Structs/ScaledFont.hs
@@ -16,9 +16,9 @@
 
     ) where
 
-import Prelude ()
 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
@@ -35,6 +35,10 @@
 
 noScaledFont :: Maybe ScaledFont
 noScaledFont = Nothing
+
+
+type instance AttributeList ScaledFont = ScaledFontAttributeList
+type ScaledFontAttributeList = ('[ ] :: [(Symbol, *)])
 
 type family ResolveScaledFontMethod (t :: Symbol) (o :: *) :: * where
     ResolveScaledFontMethod l o = MethodResolutionFailed l o
diff --git a/GI/Cairo/Structs/ScaledFont.hs-boot b/GI/Cairo/Structs/ScaledFont.hs-boot
--- a/GI/Cairo/Structs/ScaledFont.hs-boot
+++ b/GI/Cairo/Structs/ScaledFont.hs-boot
@@ -1,8 +1,8 @@
 module GI.Cairo.Structs.ScaledFont where
 
-import Prelude ()
 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
diff --git a/GI/Cairo/Structs/Surface.hs b/GI/Cairo/Structs/Surface.hs
--- a/GI/Cairo/Structs/Surface.hs
+++ b/GI/Cairo/Structs/Surface.hs
@@ -16,9 +16,9 @@
 
     ) where
 
-import Prelude ()
 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
@@ -35,6 +35,10 @@
 
 noSurface :: Maybe Surface
 noSurface = Nothing
+
+
+type instance AttributeList Surface = SurfaceAttributeList
+type SurfaceAttributeList = ('[ ] :: [(Symbol, *)])
 
 type family ResolveSurfaceMethod (t :: Symbol) (o :: *) :: * where
     ResolveSurfaceMethod l o = MethodResolutionFailed l o
diff --git a/GI/Cairo/Structs/Surface.hs-boot b/GI/Cairo/Structs/Surface.hs-boot
--- a/GI/Cairo/Structs/Surface.hs-boot
+++ b/GI/Cairo/Structs/Surface.hs-boot
@@ -1,8 +1,8 @@
 module GI.Cairo.Structs.Surface where
 
-import Prelude ()
 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
diff --git a/gi-cairo.cabal b/gi-cairo.cabal
--- a/gi-cairo.cabal
+++ b/gi-cairo.cabal
@@ -1,6 +1,6 @@
 -- Autogenerated, do not edit.
 name:               gi-cairo
-version:            0.1.14.13
+version:            0.1.14.14
 synopsis:           cairo bindings
 description:        Bindings for cairo, autogenerated by haskell-gi.
 homepage:           https://github.com/haskell-gi/haskell-gi
@@ -14,7 +14,7 @@
 
 library
     default-language:   Haskell2010
-    default-extensions: ScopedTypeVariables, CPP, OverloadedStrings, NegativeLiterals, ConstraintKinds, TypeFamilies, MultiParamTypeClasses, KindSignatures, FlexibleInstances, UndecidableInstances, DataKinds, FlexibleContexts
+    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.Cairo.Types
@@ -36,7 +36,7 @@
                         GI.Cairo.Structs.Surface
     pkgconfig-depends:  cairo-gobject >= 1.14
     build-depends: base >= 4.7 && <5,
-        haskell-gi-base >= 0.13 && < 1,
+        haskell-gi-base >= 0.14 && < 1,
         bytestring >= 0.10,
         containers >= 0.5,
         text >= 1.0,
