diff --git a/haskell-gi.cabal b/haskell-gi.cabal
--- a/haskell-gi.cabal
+++ b/haskell-gi.cabal
@@ -1,5 +1,5 @@
 name:                haskell-gi
-version:             0.10
+version:             0.10.1
 synopsis:            Generate Haskell bindings for GObject Introspection capable libraries
 description:         Generate Haskell bindings for GObject Introspection capable libraries. This includes most notably
                      Gtk+, but many other libraries in the GObject ecosystem provide introspection data too.
@@ -57,6 +57,7 @@
                        GI.GIR.Method,
                        GI.GIR.Object,
                        GI.GIR.Parser,
+                       GI.GIR.Property,
                        GI.GIR.Repository,
                        GI.GIR.Signal,
                        GI.GIR.Struct,
diff --git a/src/GI/GIR/Property.hs b/src/GI/GIR/Property.hs
new file mode 100644
--- /dev/null
+++ b/src/GI/GIR/Property.hs
@@ -0,0 +1,51 @@
+module GI.GIR.Property
+    ( Property(..)
+    , PropertyFlag(..)
+    , parseProperty
+    ) where
+
+import Data.Text (Text)
+import Data.Monoid ((<>))
+
+import GI.Type (Type)
+
+import GI.GIR.Arg (parseTransfer)
+import GI.GIR.BasicTypes (Transfer)
+import GI.GIR.Parser
+import GI.GIR.Type (parseType)
+
+data PropertyFlag = PropertyReadable
+                  | PropertyWritable
+                  | PropertyConstruct
+                  | PropertyConstructOnly
+                    deriving (Show,Eq)
+
+data Property = Property {
+        propName :: Text,
+        propType :: Type,
+        propFlags :: [PropertyFlag],
+        propTransfer :: Transfer,
+        propDeprecated :: Maybe DeprecationInfo
+    } deriving (Show, Eq)
+
+parseProperty :: Parser Property
+parseProperty = do
+  name <- getAttr "name"
+  t <- parseType
+  transfer <- parseTransfer
+  deprecated <- parseDeprecation
+  readable <- optionalAttr "readable" True parseBool
+  writable <- optionalAttr "writable" False parseBool
+  construct <- optionalAttr "construct" False parseBool
+  constructOnly <- optionalAttr "construct-only" False parseBool
+  let flags = (if readable then [PropertyReadable] else [])
+              <> (if writable then [PropertyWritable] else [])
+              <> (if construct then [PropertyConstruct] else [])
+              <> (if constructOnly then [PropertyConstructOnly] else [])
+  return $ Property {
+                  propName = name
+                , propType = t
+                , propFlags = flags
+                , propTransfer = transfer
+                , propDeprecated = deprecated
+                }
