diff --git a/bindings-gobject.cabal b/bindings-gobject.cabal
--- a/bindings-gobject.cabal
+++ b/bindings-gobject.cabal
@@ -1,4 +1,4 @@
-cabal-version: >= 1.2.3
+cabal-version: >= 1.6
 name: bindings-gobject
 synopsis:
   Low level bindings supporting GObject and derived libraries.
@@ -7,14 +7,17 @@
   bindings-DSL macros and style. Like GObject, it's
   not useful by itself, but as a foundation for other
   libraries making use of its type system.
-version: 0.3
+version: 0.4
 license: BSD3
 license-file: LICENSE
-maintainer: Maurício C. Antunes <mauricio.antunes@gmail.com>
+maintainer: Yuras Shumovich <shumovichy@gmail.com>
 author: Maurício C. Antunes
 build-type: Simple
 category: FFI
-bug-reports: http://bitbucket.org/mauricio/bindings-dsl/issues
+bug-reports: https://github.com/Yuras/bindings-gobject/issues
+source-repository head
+  type: git
+  location: https://github.com/Yuras/bindings-gobject
 library
   hs-source-dirs: src
   extensions:
@@ -40,3 +43,5 @@
     Bindings.GObject.Varargs
   c-sources: src/inlines.c
   pkgconfig-depends: gobject-2.0 >= 2.24.1
+  install-includes: bindings.dsl.gobject.h, bindings.cmacros.gobject.h
+  include-dirs: .
diff --git a/bindings.cmacros.gobject.h b/bindings.cmacros.gobject.h
new file mode 100644
--- /dev/null
+++ b/bindings.cmacros.gobject.h
@@ -0,0 +1,20 @@
+
+#ifndef __BINDINGS_CMACROS_GOBJECT_H__
+#define __BINDINGS_CMACROS_GOBJECT_H__
+
+#include <bindings.cmacros.h>
+
+#undef BC_GOBJECT_NOTCLASSED
+#define BC_GOBJECT_NOTCLASSED(prefix,object,CamelCase) \
+    BC_INLINE_(prefix##_TYPE_##object,GType) \
+    BC_INLINE1(prefix##_##object,void*,CamelCase*) \
+    BC_INLINE1(prefix##_IS_##object,void*,gboolean) \
+
+#undef BC_GOBJECT
+#define BC_GOBJECT(prefix,object,CamelCase) \
+    BC_GOBJECT_NOTCLASSED(prefix,object,CamelCase) \
+    BC_INLINE1(prefix##_##object##_CLASS,void*,CamelCase##Class*) \
+    BC_INLINE1(prefix##_IS_##object##_CLASS,void*,gboolean) \
+    BC_INLINE1(prefix##_##object##_GET_CLASS,void*,CamelCase##Class*) \
+
+#endif
diff --git a/bindings.dsl.gobject.h b/bindings.dsl.gobject.h
new file mode 100644
--- /dev/null
+++ b/bindings.dsl.gobject.h
@@ -0,0 +1,20 @@
+
+#ifndef __BINDINGS_DSL_GOBJECT_H__
+#define __BINDINGS_DSL_GOBJECT_H__
+
+#include <bindings.dsl.h>
+
+#undef hsc_gobject_notclassed
+#define hsc_gobject_notclassed(prefix,object,CamelCase) \
+    hsc_cinline(prefix##_TYPE_##object,<GType>) \
+    hsc_cinline(prefix##_##object,Ptr a -> Ptr <CamelCase>) \
+    hsc_cinline(prefix##_IS_##object,Ptr a -> <gboolean>) \
+
+#undef hsc_gobject
+#define hsc_gobject(prefix,object,CamelCase) \
+    hsc_gobject_notclassed(prefix,object,CamelCase) \
+    hsc_cinline(prefix##_##object##_CLASS,Ptr a -> Ptr <CamelCase##Class>) \
+    hsc_cinline(prefix##_IS_##object##_CLASS,Ptr a -> <gboolean>) \
+    hsc_cinline(prefix##_##object##_GET_CLASS,Ptr a -> Ptr <CamelCase##Class>) \
+
+#endif
diff --git a/src/Bindings/GObject/BaseObjectType.hsc b/src/Bindings/GObject/BaseObjectType.hsc
--- a/src/Bindings/GObject/BaseObjectType.hsc
+++ b/src/Bindings/GObject/BaseObjectType.hsc
@@ -1,4 +1,4 @@
-#include <bindings.dsl.h>
+#include <bindings.dsl.gobject.h>
 #include <glib-object.h>
 
 -- | <http://library.gnome.org/devel/gobject/stable/gobject-The-Base-Object-Type.html>
@@ -9,6 +9,36 @@
 import Bindings.GObject.TypeInformation
 import Bindings.GObject.GParamSpec
 import Bindings.GObject.Closures
+
+#starttype GObject
+#field g_type_instance , <GTypeInstance>
+#field ref_count , <guint>
+#field qdata , Ptr ()
+#stoptype
+
+#callback GObjectClass_constructor, <GType> -> <guint> -> Ptr <GObjectConstructParam> -> IO (Ptr <GObject>)
+#callback GObjectClass_set_property, Ptr <GObject> -> <guint> -> Ptr <GValue> -> Ptr <GParamSpec> -> IO ()
+#callback GObjectClass_get_property, Ptr <GObject> -> <guint> -> Ptr <GValue> -> Ptr <GParamSpec> -> IO ()
+#callback GObjectClass_dispose, Ptr <GObject> -> IO ()
+#callback GObjectClass_finalize, Ptr <GObject> -> IO ()
+#callback GObjectClass_dispatch_properties_changed, Ptr <GObject> -> <guint> -> Ptr (Ptr <GParamSpec>) -> IO ()
+#callback GObjectClass_notify, Ptr <GObject> -> Ptr <GParamSpec> -> IO ()
+#callback GObjectClass_constructed, Ptr <GObject> -> IO ()
+
+#starttype GObjectClass
+#field g_type_class , <GTypeClass>
+#field construct_properties, Ptr <GSList>
+#field constructor, <GObjectClass_constructor>
+#field set_property, <GObjectClass_set_property>
+#field get_property, <GObjectClass_get_property>
+#field dispose, <GObjectClass_dispose>
+#field finalize, <GObjectClass_finalize>
+#field dispatch_properties_changed, <GObjectClass_dispatch_properties_changed>
+#field notify, <GObjectClass_notify>
+#field constructed, <GObjectClass_constructed>
+#field flags, <gsize>
+#array_field pdummy, <gpointer>
+#stoptype
 
 #gobject G , OBJECT , GObject
 
diff --git a/src/inlines.c b/src/inlines.c
--- a/src/inlines.c
+++ b/src/inlines.c
@@ -1,5 +1,5 @@
 #include <glib-object.h>
-#include <bindings.cmacros.h>
+#include <bindings.cmacros.gobject.h>
 
 BC_GOBJECT(G,OBJECT,GObject)
 BC_INLINE1(G_TYPE_IS_OBJECT,GType,gboolean)
