diff --git a/bindings-gobject.cabal b/bindings-gobject.cabal
--- a/bindings-gobject.cabal
+++ b/bindings-gobject.cabal
@@ -1,38 +1,31 @@
-cabal-version: >= 1.2.3
+cabal-version: >= 1.6
 name: bindings-gobject
-homepage: http://bitbucket.org/mauricio/bindings-gobject
 synopsis:
   Low level bindings supporting GObject and derived libraries.
 description:
-  This package contains bindings to GObject library using
+  This package contains bindings to GObject library, using
   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. Besides
-  GObject functionality, it also provides a few macros
-  for easy mapping of code following recomended conventions.
-  You can find documentation at this package homepage:
-  .
-  <http://bitbucket.org/mauricio/bindings-gobject>
-version: 0.2.1
+  libraries making use of its type system.
+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-gobject/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:
     ForeignFunctionInterface
   build-depends:
     base >= 3 && < 5,
-    bindings-DSL >= 1.0.6 && < 1.1,
-    bindings-glib >= 0.1.3 && < 0.2
-  include-dirs: src
-  install-includes:
-    bindings-gobject.dsl.h
-    bindings-gobject.cmacros.h
+    bindings-DSL >= 1.0.8 && < 1.1,
+    bindings-glib >= 0.1.5 && < 0.2
   exposed-modules:
     Bindings.GObject
     Bindings.GObject.BaseObjectType
@@ -43,9 +36,12 @@
     Bindings.GObject.GParamSpec
     Bindings.GObject.GTypeModule
     Bindings.GObject.GTypePlugin
+    Bindings.GObject.ParametersAndValues
     Bindings.GObject.Signals
     Bindings.GObject.TypeInformation
     Bindings.GObject.ValueArrays
     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.hs b/src/Bindings/GObject.hs
--- a/src/Bindings/GObject.hs
+++ b/src/Bindings/GObject.hs
@@ -1,1 +1,28 @@
-module Bindings.GObject (module Bindings.GObject.BaseObjectType,module Bindings.GObject.BoxedTypes,module Bindings.GObject.Closures,module Bindings.GObject.EnumerationAndFlagTypes,module Bindings.GObject.GenericValues,module Bindings.GObject.GParamSpec,module Bindings.GObject.GTypeModule,module Bindings.GObject.GTypePlugin,module Bindings.GObject.Signals,module Bindings.GObject.TypeInformation,module Bindings.GObject.ValueArrays,module Bindings.GObject.Varargs) where {import Bindings.GObject.BaseObjectType;import Bindings.GObject.BoxedTypes;import Bindings.GObject.Closures;import Bindings.GObject.EnumerationAndFlagTypes;import Bindings.GObject.GenericValues;import Bindings.GObject.GParamSpec;import Bindings.GObject.GTypeModule;import Bindings.GObject.GTypePlugin;import Bindings.GObject.Signals;import Bindings.GObject.TypeInformation;import Bindings.GObject.ValueArrays;import Bindings.GObject.Varargs}
+module Bindings.GObject (
+   module Bindings.GObject.BaseObjectType,
+   module Bindings.GObject.BoxedTypes,
+   module Bindings.GObject.Closures,
+   module Bindings.GObject.EnumerationAndFlagTypes,
+   module Bindings.GObject.GenericValues,
+   module Bindings.GObject.GParamSpec,
+   module Bindings.GObject.GTypeModule,
+   module Bindings.GObject.GTypePlugin,
+   module Bindings.GObject.ParametersAndValues,
+   module Bindings.GObject.Signals,
+   module Bindings.GObject.TypeInformation,
+   module Bindings.GObject.ValueArrays,
+   module Bindings.GObject.Varargs
+ ) where
+import Bindings.GObject.BaseObjectType
+import Bindings.GObject.BoxedTypes
+import Bindings.GObject.Closures
+import Bindings.GObject.EnumerationAndFlagTypes
+import Bindings.GObject.GenericValues
+import Bindings.GObject.GParamSpec
+import Bindings.GObject.GTypeModule
+import Bindings.GObject.GTypePlugin
+import Bindings.GObject.ParametersAndValues
+import Bindings.GObject.Signals
+import Bindings.GObject.TypeInformation
+import Bindings.GObject.ValueArrays
+import Bindings.GObject.Varargs
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-gobject.dsl.h>
+#include <bindings.dsl.gobject.h>
 #include <glib-object.h>
 
 -- | <http://library.gnome.org/devel/gobject/stable/gobject-The-Base-Object-Type.html>
@@ -11,20 +11,37 @@
 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 constructor , FunPtr (<GType>, <guint>, Ptr <GObjectConstructParam> -> IO (Ptr <GObject>))
-#field set_property , FunPtr (Ptr <GObject>, <guint>, Ptr <GValue>, Ptr <GParamSpec> -> IO ())
-#field get_property , FunPtr (Ptr <GObject>, <guint>, Ptr <GValue>, Ptr <GParamSpec> -> IO ())
-#field dispose , FunPtr (Ptr <GObject> -> IO ())
-#field finalize , FunPtr (Ptr <GObject> -> IO ())
-#field dispatch_properties_changed , FunPtr (Ptr <GObject>, <guint>, Ptr (Ptr <GParamSpec>) -> IO ())
-#field notify , FunPtr (Ptr <GObject>, Ptr <GParamSpec> -> IO ())
-#field constructed , FunPtr (Ptr <GObject> -> IO ())
+#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
+
 #starttype GObjectConstructParam
 #field pspec , Ptr <GParamSpec>
 #field value , Ptr <GValue>
@@ -35,11 +52,6 @@
 #callback GObjectFinalizeFunc , Ptr <GObject> -> IO ()
 
 #cinline G_TYPE_IS_OBJECT , <GType> -> <gboolean>
-#cinline G_OBJECT , Ptr a -> Ptr <GObject>
-#cinline G_IS_OBJECT , Ptr a -> <gboolean>
-#cinline G_OBJECT_CLASS , Ptr a -> Ptr <GObjectClass>
-#cinline G_IS_OBJECT_CLASS , Ptr a -> <gboolean>
-#cinline G_OBJECT_GET_CLASS , Ptr a -> Ptr <GObjectClass>
 #cinline G_OBJECT_TYPE , Ptr a -> <GType>
 #cinline G_OBJECT_TYPE_NAME , Ptr a -> IO (Ptr <gchar>)
 #cinline G_OBJECT_CLASS_TYPE , Ptr a -> IO <GType>
diff --git a/src/Bindings/GObject/BoxedTypes.hsc b/src/Bindings/GObject/BoxedTypes.hsc
--- a/src/Bindings/GObject/BoxedTypes.hsc
+++ b/src/Bindings/GObject/BoxedTypes.hsc
@@ -1,4 +1,4 @@
-#include <bindings-gobject.dsl.h>
+#include <bindings.dsl.h>
 #include <glib-object.h>
 
 -- | <http://library.gnome.org/devel/gobject/stable/gobject-Boxed-Types.html>
diff --git a/src/Bindings/GObject/Closures.hsc b/src/Bindings/GObject/Closures.hsc
--- a/src/Bindings/GObject/Closures.hsc
+++ b/src/Bindings/GObject/Closures.hsc
@@ -1,4 +1,4 @@
-#include <bindings-gobject.dsl.h>
+#include <bindings.dsl.h>
 #include <glib-object.h>
 
 -- | <http://library.gnome.org/devel/gobject/stable/gobject-Closures.html>
diff --git a/src/Bindings/GObject/EnumerationAndFlagTypes.hsc b/src/Bindings/GObject/EnumerationAndFlagTypes.hsc
--- a/src/Bindings/GObject/EnumerationAndFlagTypes.hsc
+++ b/src/Bindings/GObject/EnumerationAndFlagTypes.hsc
@@ -1,4 +1,4 @@
-#include <bindings-gobject.dsl.h>
+#include <bindings.dsl.h>
 #include <glib-object.h>
 
 -- | <http://library.gnome.org/devel/gobject/stable/gobject-Enumeration-and-Flag-Types.html>
@@ -8,26 +8,13 @@
 import Bindings.GLib
 import Bindings.GObject.TypeInformation
 
-#starttype GEnumClass
-#field g_type_class , <GTypeClass>
-#field minimum , <gint>
-#field maximum , <gint>
-#field n_values , <guint>
-#field values , Ptr <GEnumValue>
-#stoptype
-
-#starttype GFlagsClass
-#field g_type_class , <GTypeClass>
-#field mask , <guint>
-#field n_values , <guint>
-#field values , Ptr <GFlagsValue>
-#stoptype
-
+#opaque_t GEnumClass
+#opaque_t GFlagsClass
 #cinline G_ENUM_CLASS_TYPE , Ptr <GEnumClass> -> <GType>
-#cinline G_ENUM_CLASS_TYPE_NAME , Ptr <GEnumClass> -> IO (Ptr <gchar>)
-#cinline G_TYPE_IS_ENUM , <GType> -> IO <gboolean>
+#cinline G_ENUM_CLASS_TYPE_NAME , Ptr <GEnumClass> -> Ptr <gchar>
+#cinline G_TYPE_IS_ENUM , <GType> -> <gboolean>
 #cinline G_ENUM_CLASS , Ptr a -> Ptr <GEnumClass>
-#cinline G_IS_ENUM_CLASS , Ptr a -> IO <gboolean>
+#cinline G_IS_ENUM_CLASS , Ptr a -> <gboolean>
 #cinline G_TYPE_IS_FLAGS , <GType> -> IO <gboolean>
 #cinline G_FLAGS_CLASS , Ptr a -> Ptr <GFlagsClass>
 #cinline G_IS_FLAGS_CLASS , Ptr a -> <gboolean>
diff --git a/src/Bindings/GObject/GParamSpec.hsc b/src/Bindings/GObject/GParamSpec.hsc
--- a/src/Bindings/GObject/GParamSpec.hsc
+++ b/src/Bindings/GObject/GParamSpec.hsc
@@ -1,4 +1,4 @@
-#include <bindings-gobject.dsl.h>
+#include <bindings.dsl.h>
 #include <glib-object.h>
 
 -- | <http://library.gnome.org/devel/gobject/stable/gobject-GParamSpec.html>
@@ -8,6 +8,9 @@
 import Bindings.GLib
 import Bindings.GObject.TypeInformation
 
+#opaque_t GParamSpec
+#opaque_t GParamSpecClass
+
 #cinline G_TYPE_IS_PARAM , <GType> -> <gboolean>
 #cinline G_PARAM_SPEC , Ptr a -> Ptr <GParamSpec>
 #cinline G_IS_PARAM_SPEC , Ptr a -> <gboolean>
@@ -17,23 +20,6 @@
 #cinline G_PARAM_SPEC_TYPE , Ptr a -> <GType>
 #cinline G_PARAM_SPEC_TYPE_NAME , Ptr a -> IO (Ptr <gchar>)
 #cinline G_PARAM_SPEC_VALUE_TYPE , Ptr a -> <GType>
-
-#starttype GParamSpec
-#field g_type_instance , <GTypeInstance>
-#field name , Ptr <gchar>
-#field flags , <GParamFlags>
-#field value_type , <GType>
-#field owner_type , <GType>
-#stoptype
-
-#starttype GParamSpecClass
-#field g_type_class , <GTypeClass>
-#field value_type , <GType>
-#field finalize , FunPtr (Ptr <GParamSpec> -> IO ())
-#field value_set_default , FunPtr (Ptr <GParamSpec> -> Ptr <GValue> -> IO ())
-#field value_validate , FunPtr (Ptr <GParamSpec> -> Ptr <GValue> -> IO <gboolean>)
-#field values_cmp , FunPtr (Ptr <GParamSpec> -> Ptr <GValue> -> Ptr <GValue> -> IO <gint>)
-#stoptype
 
 #integral_t GParamFlags
 
diff --git a/src/Bindings/GObject/GTypeModule.hsc b/src/Bindings/GObject/GTypeModule.hsc
--- a/src/Bindings/GObject/GTypeModule.hsc
+++ b/src/Bindings/GObject/GTypeModule.hsc
@@ -1,4 +1,4 @@
-#include <bindings-gobject.dsl.h>
+#include <bindings.dsl.h>
 #include <glib-object.h>
 
 -- | <http://library.gnome.org/devel/gobject/stable/GTypeModule.html>
@@ -15,7 +15,6 @@
 #stoptype
 
 #starttype GTypeModuleClass
-#field parent_class , <GObjectClass>
 #field load , FunPtr (Ptr <GTypeModule> -> IO <gboolean>)
 #field unload , FunPtr (Ptr <GTypeModule> -> IO ())
 #stoptype
diff --git a/src/Bindings/GObject/GTypePlugin.hsc b/src/Bindings/GObject/GTypePlugin.hsc
--- a/src/Bindings/GObject/GTypePlugin.hsc
+++ b/src/Bindings/GObject/GTypePlugin.hsc
@@ -1,4 +1,4 @@
-#include <bindings-gobject.dsl.h>
+#include <bindings.dsl.h>
 #include <glib-object.h>
 
 -- | <http://library.gnome.org/devel/gobject/stable/GTypePlugin.html>
diff --git a/src/Bindings/GObject/GenericValues.hsc b/src/Bindings/GObject/GenericValues.hsc
--- a/src/Bindings/GObject/GenericValues.hsc
+++ b/src/Bindings/GObject/GenericValues.hsc
@@ -1,4 +1,4 @@
-#include <bindings-gobject.dsl.h>
+#include <bindings.dsl.h>
 #include <glib-object.h>
 
 -- | <http://library.gnome.org/devel/gobject/stable/gobject-Generic-values.html>
diff --git a/src/Bindings/GObject/ParametersAndValues.hsc b/src/Bindings/GObject/ParametersAndValues.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/GObject/ParametersAndValues.hsc
@@ -0,0 +1,234 @@
+#include <bindings.dsl.h>
+#include <glib-object.h>
+
+-- | <http://library.gnome.org/devel/gobject/stable/gobject-Standard-Parameter-and-Value-Types.html>
+
+module Bindings.GObject.ParametersAndValues where
+#strict_import
+import Bindings.GLib
+import Bindings.GObject.TypeInformation
+import Bindings.GObject.GParamSpec
+
+#opaque_t GParamSpecBoolean
+#cinline G_IS_PARAM_SPEC_BOOLEAN , Ptr a -> <gboolean>
+#cinline G_PARAM_SPEC_BOOLEAN , Ptr a -> Ptr <GParamSpecBoolean>
+#cinline G_TYPE_PARAM_BOOLEAN , <GType>
+#cinline G_VALUE_HOLDS_BOOLEAN , Ptr <GValue> -> <gboolean>
+
+#ccall g_param_spec_boolean , Ptr <gchar> -> Ptr <gchar> -> Ptr <gchar> -> <gboolean> -> <GParamFlags> -> IO (Ptr <GParamSpec>)
+#ccall g_value_set_boolean , Ptr <GValue> -> <gboolean> -> IO ()
+#ccall g_value_get_boolean , Ptr <GValue> -> IO <gboolean>
+
+#cinline G_IS_PARAM_SPEC_CHAR , Ptr a -> <gboolean>
+#cinline G_PARAM_SPEC_CHAR , Ptr a -> Ptr <GParamSpecChar>
+#opaque_t GParamSpecChar
+#cinline G_TYPE_PARAM_CHAR , <GType>
+#cinline G_VALUE_HOLDS_CHAR , Ptr <GValue> -> <gboolean>
+
+#ccall g_param_spec_char , Ptr <gchar> -> Ptr <gchar> -> Ptr <gchar> -> <gint8> -> <gint8> -> <gint8> -> <GParamFlags> -> IO (Ptr <GParamSpec>)
+#ccall g_value_set_char , Ptr <GValue> -> <gchar> -> IO ()
+#ccall g_value_get_char , Ptr <GValue> -> IO <gchar>
+
+#cinline G_IS_PARAM_SPEC_UCHAR , Ptr a -> <gboolean>
+#cinline G_PARAM_SPEC_UCHAR , Ptr a -> Ptr <GParamSpecUChar>
+#opaque_t GParamSpecUChar
+#cinline G_TYPE_PARAM_UCHAR , <GType>
+#cinline G_VALUE_HOLDS_UCHAR , Ptr <GValue> -> <gboolean>
+
+#ccall g_param_spec_uchar , Ptr <gchar> -> Ptr <gchar> -> Ptr <gchar> -> <guint8> -> <guint8> -> <guint8> -> <GParamFlags> -> IO (Ptr <GParamSpec>)
+#ccall g_value_set_uchar , Ptr <GValue> -> <guchar> -> IO ()
+#ccall g_value_get_uchar , Ptr <GValue> -> IO <guchar>
+
+#cinline G_IS_PARAM_SPEC_INT , Ptr a -> <gboolean>
+#cinline G_PARAM_SPEC_INT , Ptr a -> Ptr <GParamSpecInt>
+#opaque_t GParamSpecInt
+#cinline G_TYPE_PARAM_INT , <GType>
+#cinline G_VALUE_HOLDS_INT , Ptr <GValue> -> <gboolean>
+
+#ccall g_param_spec_int , Ptr <gchar> -> Ptr <gchar> -> Ptr <gchar> -> <gint> -> <gint> -> <gint> -> <GParamFlags> -> IO (Ptr <GParamSpec>)
+#ccall g_value_set_int , Ptr <GValue> -> <gint> -> IO ()
+#ccall g_value_get_int , Ptr <GValue> -> IO <gint>
+
+#cinline G_IS_PARAM_SPEC_UINT , Ptr a -> <gboolean>
+#cinline G_PARAM_SPEC_UINT , Ptr a -> Ptr <GParamSpecUInt>
+#opaque_t GParamSpecUInt
+#cinline G_TYPE_PARAM_UINT , <GType>
+#cinline G_VALUE_HOLDS_UINT , Ptr <GValue> -> <gboolean>
+
+#ccall g_param_spec_uint , Ptr <gchar> -> Ptr <gchar> -> Ptr <gchar> -> <guint> -> <guint> -> <guint> -> <GParamFlags> -> IO (Ptr <GParamSpec>)
+#ccall g_value_set_uint , Ptr <GValue> -> <guint> -> IO ()
+#ccall g_value_get_uint , Ptr <GValue> -> IO <guint>
+
+#cinline G_IS_PARAM_SPEC_LONG , Ptr a -> <gboolean>
+#cinline G_PARAM_SPEC_LONG , Ptr a -> Ptr <GParamSpecLong>
+#opaque_t GParamSpecLong
+#cinline G_TYPE_PARAM_LONG , <GType>
+#cinline G_VALUE_HOLDS_LONG , Ptr <GValue> -> <gboolean>
+
+#ccall g_param_spec_long , Ptr <gchar> -> Ptr <gchar> -> Ptr <gchar> -> <glong> -> <glong> -> <glong> -> <GParamFlags> -> IO (Ptr <GParamSpec>)
+#ccall g_value_set_long , Ptr <GValue> -> <glong> -> IO ()
+#ccall g_value_get_long , Ptr <GValue> -> IO <glong>
+
+#cinline G_IS_PARAM_SPEC_ULONG , Ptr a -> <gboolean>
+#cinline G_PARAM_SPEC_ULONG , Ptr a -> Ptr <GParamSpecULong>
+#opaque_t GParamSpecULong
+#cinline G_TYPE_PARAM_ULONG , <GType>
+#cinline G_VALUE_HOLDS_ULONG , Ptr <GValue> -> <gboolean>
+
+#ccall g_param_spec_ulong , Ptr <gchar> -> Ptr <gchar> -> Ptr <gchar> -> <gulong> -> <gulong> -> <gulong> -> <GParamFlags> -> IO (Ptr <GParamSpec>)
+#ccall g_value_set_ulong , Ptr <GValue> -> <gulong> -> IO ()
+#ccall g_value_get_ulong , Ptr <GValue> -> IO <gulong>
+
+#cinline G_IS_PARAM_SPEC_INT64 , Ptr a -> <gboolean>
+#cinline G_PARAM_SPEC_INT64 , Ptr a -> Ptr <GParamSpecInt64>
+#opaque_t GParamSpecInt64
+#cinline G_TYPE_PARAM_INT64 , <GType>
+#cinline G_VALUE_HOLDS_INT64 , Ptr <GValue> -> <gboolean>
+
+#ccall g_param_spec_int64 , Ptr <gchar> -> Ptr <gchar> -> Ptr <gchar> -> <gint64> -> <gint64> -> <gint64> -> <GParamFlags> -> IO (Ptr <GParamSpec>)
+#ccall g_value_set_int64 , Ptr <GValue> -> <gint64> -> IO ()
+#ccall g_value_get_int64 , Ptr <GValue> -> IO <gint64>
+
+#cinline G_IS_PARAM_SPEC_UINT64 , Ptr a -> <gboolean>
+#cinline G_PARAM_SPEC_UINT64 , Ptr a -> Ptr <GParamSpecUInt64>
+#opaque_t GParamSpecUInt64
+#cinline G_TYPE_PARAM_UINT64 , <GType>
+#cinline G_VALUE_HOLDS_UINT64 , Ptr <GValue> -> <gboolean>
+
+#ccall g_param_spec_uint64 , Ptr <gchar> -> Ptr <gchar> -> Ptr <gchar> -> <guint64> -> <guint64> -> <guint64> -> <GParamFlags> -> IO (Ptr <GParamSpec>)
+#ccall g_value_set_uint64 , Ptr <GValue> -> <guint64> -> IO ()
+#ccall g_value_get_uint64 , Ptr <GValue> -> IO <guint64>
+
+#cinline G_IS_PARAM_SPEC_FLOAT , Ptr a -> <gboolean>
+#cinline G_PARAM_SPEC_FLOAT , Ptr a -> Ptr <GParamSpecFloat>
+#opaque_t GParamSpecFloat
+#cinline G_TYPE_PARAM_FLOAT , <GType>
+#cinline G_VALUE_HOLDS_FLOAT , Ptr <GValue> -> <gboolean>
+
+#ccall g_param_spec_float , Ptr <gchar> -> Ptr <gchar> -> Ptr <gchar> -> <gfloat> -> <gfloat> -> <gfloat> -> <GParamFlags> -> IO (Ptr <GParamSpec>)
+#ccall g_value_set_float , Ptr <GValue> -> <gfloat> -> IO ()
+#ccall g_value_get_float , Ptr <GValue> -> IO <gfloat>
+
+#cinline G_IS_PARAM_SPEC_DOUBLE , Ptr a -> <gboolean>
+#cinline G_PARAM_SPEC_DOUBLE , Ptr a -> Ptr <GParamSpecDouble>
+#opaque_t GParamSpecDouble
+#cinline G_TYPE_PARAM_DOUBLE , <GType>
+#cinline G_VALUE_HOLDS_DOUBLE , Ptr <GValue> -> <gboolean>
+
+#ccall g_param_spec_double , Ptr <gchar> -> Ptr <gchar> -> Ptr <gchar> -> <gdouble> -> <gdouble> -> <gdouble> -> <GParamFlags> -> IO (Ptr <GParamSpec>)
+#ccall g_value_set_double , Ptr <GValue> -> <gdouble> -> IO ()
+#ccall g_value_get_double , Ptr <GValue> -> IO <gdouble>
+
+#cinline G_IS_PARAM_SPEC_ENUM , Ptr a -> <gboolean>
+#cinline G_PARAM_SPEC_ENUM , Ptr a -> Ptr <GParamSpecEnum>
+#opaque_t GParamSpecEnum
+#cinline G_TYPE_PARAM_ENUM , <GType>
+#cinline G_VALUE_HOLDS_ENUM , Ptr <GValue> -> <gboolean>
+
+#ccall g_param_spec_enum , Ptr <gchar> -> Ptr <gchar> -> Ptr <gchar> -> <GType> -> <gint> -> <GParamFlags> -> IO (Ptr <GParamSpec>)
+#ccall g_value_set_enum , Ptr <GValue> -> <gint> -> IO ()
+#ccall g_value_get_enum , Ptr <GValue> -> IO <gint>
+
+#cinline G_IS_PARAM_SPEC_FLAGS , Ptr a -> <gboolean>
+#cinline G_PARAM_SPEC_FLAGS , Ptr a -> Ptr <GParamSpecFlags>
+#opaque_t GParamSpecFlags
+#cinline G_TYPE_PARAM_FLAGS , <GType>
+#cinline G_VALUE_HOLDS_FLAGS , Ptr <GValue> -> <gboolean>
+
+#ccall g_param_spec_flags , Ptr <gchar> -> Ptr <gchar> -> Ptr <gchar> -> <GType> -> <guint> -> <GParamFlags> -> IO (Ptr <GParamSpec>)
+#ccall g_value_set_flags , Ptr <GValue> -> <guint> -> IO ()
+#ccall g_value_get_flags , Ptr <GValue> -> IO <guint>
+
+#cinline G_IS_PARAM_SPEC_STRING , Ptr a -> <gboolean>
+#cinline G_PARAM_SPEC_STRING , Ptr a -> Ptr <GParamSpecString>
+#opaque_t GParamSpecString
+#cinline G_TYPE_PARAM_STRING , <GType>
+#cinline G_VALUE_HOLDS_STRING , Ptr <GValue> -> <gboolean>
+
+#synonym_t gchararray , Ptr <gchar>
+
+#ccall g_param_spec_string , Ptr <gchar> -> Ptr <gchar> -> Ptr <gchar> -> Ptr <gchar> -> <GParamFlags> -> IO (Ptr <GParamSpec>)
+#ccall g_value_set_string , Ptr <GValue> -> Ptr <gchar> -> IO ()
+#ccall g_value_set_static_string , Ptr <GValue> -> Ptr <gchar> -> IO ()
+#ccall g_value_take_string , Ptr <GValue> -> Ptr <gchar> -> IO ()
+#ccall g_value_get_string , Ptr <GValue> -> IO (Ptr <gchar>)
+#ccall g_value_dup_string , Ptr <GValue> -> IO (Ptr <gchar>)
+
+#cinline G_IS_PARAM_SPEC_PARAM , Ptr a -> <gboolean>
+#cinline G_PARAM_SPEC_PARAM , Ptr a -> Ptr <GParamSpecParam>
+#opaque_t GParamSpecParam
+#cinline G_TYPE_PARAM_PARAM , <GType>
+#cinline G_VALUE_HOLDS_PARAM , Ptr <GValue> -> <gboolean>
+
+#ccall g_param_spec_param , Ptr <gchar> -> Ptr <gchar> -> Ptr <gchar> -> <GType> -> <GParamFlags> -> IO (Ptr <GParamSpec>)
+#ccall g_value_set_param , Ptr <GValue> -> Ptr <GParamSpec> -> IO ()
+#ccall g_value_take_param , Ptr <GValue> -> Ptr <GParamSpec> -> IO ()
+#ccall g_value_get_param , Ptr <GValue> -> IO (Ptr <GParamSpec>)
+#ccall g_value_dup_param , Ptr <GValue> -> IO (Ptr <GParamSpec>)
+
+#cinline G_IS_PARAM_SPEC_BOXED , Ptr a -> <gboolean>
+#cinline G_PARAM_SPEC_BOXED , Ptr a -> Ptr <GParamSpecBoxed>
+#opaque_t GParamSpecBoxed
+#cinline G_TYPE_PARAM_BOXED , <GType>
+#cinline G_VALUE_HOLDS_BOXED , Ptr <GValue> -> <gboolean>
+
+#ccall g_param_spec_boxed , Ptr <gchar> -> Ptr <gchar> -> Ptr <gchar> -> <GType> -> <GParamFlags> -> IO (Ptr <GParamSpec>)
+#ccall g_value_set_boxed , Ptr <GValue> -> <gconstpointer> -> IO ()
+#ccall g_value_set_static_boxed , Ptr <GValue> -> <gconstpointer> -> IO ()
+#ccall g_value_take_boxed , Ptr <GValue> -> <gconstpointer> -> IO ()
+#ccall g_value_get_boxed , Ptr <GValue> -> IO <gpointer>
+#ccall g_value_dup_boxed , Ptr <GValue> -> IO <gpointer>
+
+#cinline G_IS_PARAM_SPEC_POINTER , Ptr a -> <gboolean>
+#cinline G_PARAM_SPEC_POINTER , Ptr a -> Ptr <GParamSpecPointer>
+#opaque_t GParamSpecPointer
+#cinline G_TYPE_PARAM_POINTER , <GType>
+#cinline G_VALUE_HOLDS_POINTER , Ptr <GValue> -> <gboolean>
+
+#ccall g_param_spec_pointer , Ptr <gchar> -> Ptr <gchar> -> Ptr <gchar> -> <GParamFlags> -> IO (Ptr <GParamSpec>)
+#ccall g_value_set_pointer , Ptr <GValue> -> <gpointer> -> IO ()
+#ccall g_value_get_pointer , Ptr <GValue> -> IO <gpointer>
+
+#cinline G_IS_PARAM_SPEC_OBJECT , Ptr a -> <gboolean>
+#cinline G_PARAM_SPEC_OBJECT , Ptr a -> Ptr <GParamSpecObject>
+#opaque_t GParamSpecObject
+#cinline G_TYPE_PARAM_OBJECT , <GType>
+#cinline G_VALUE_HOLDS_OBJECT , Ptr <GValue> -> <gboolean>
+
+#ccall g_param_spec_object , Ptr <gchar> -> Ptr <gchar> -> Ptr <gchar> -> <GType> -> <GParamFlags> -> IO (Ptr <GParamSpec>)
+#ccall g_value_set_object , Ptr <GValue> -> <gpointer> -> IO ()
+#ccall g_value_take_object , Ptr <GValue> -> <gpointer> -> IO ()
+#ccall g_value_get_object , Ptr <GValue> -> IO <gpointer>
+#ccall g_value_dup_object , Ptr <GValue> -> IO <gpointer>
+
+#cinline G_IS_PARAM_SPEC_UNICHAR , Ptr a -> <gboolean>
+#cinline G_PARAM_SPEC_UNICHAR , Ptr a -> Ptr <GParamSpecUnichar>
+#opaque_t GParamSpecUnichar
+#cinline G_TYPE_PARAM_UNICHAR , <GType>
+
+#ccall g_param_spec_unichar , Ptr <gchar> -> Ptr <gchar> -> Ptr <gchar> -> <gunichar> -> <GParamFlags> -> IO (Ptr <GParamSpec>)
+
+#cinline G_IS_PARAM_SPEC_VALUE_ARRAY , Ptr a -> <gboolean>
+#cinline G_PARAM_SPEC_VALUE_ARRAY , Ptr a -> Ptr <GParamSpecValueArray>
+#opaque_t GParamSpecValueArray
+#cinline G_TYPE_PARAM_VALUE_ARRAY , <GType>
+
+#ccall g_param_spec_value_array , Ptr <gchar> -> Ptr <gchar> -> Ptr <gchar> -> Ptr <GParamSpec> -> <GParamFlags> -> IO (Ptr <GParamSpec>)
+
+#cinline G_IS_PARAM_SPEC_OVERRIDE , Ptr a -> <gboolean>
+#cinline G_PARAM_SPEC_OVERRIDE , Ptr a -> Ptr <GParamSpecOverride>
+#opaque_t GParamSpecOverride
+#cinline G_TYPE_PARAM_OVERRIDE , <GType>
+
+#ccall g_param_spec_override , Ptr <gchar> -> Ptr <GParamSpec> -> IO (Ptr <GParamSpec>)
+
+#cinline G_IS_PARAM_SPEC_GTYPE , Ptr a -> <gboolean>
+#cinline G_PARAM_SPEC_GTYPE , Ptr a -> Ptr <GParamSpecGType>
+#opaque_t GParamSpecGType
+#cinline G_TYPE_PARAM_GTYPE , <GType>
+#cinline G_VALUE_HOLDS_GTYPE , Ptr <GValue> -> <gboolean>
+
+#ccall g_param_spec_gtype , Ptr <gchar> -> Ptr <gchar> -> Ptr <gchar> -> <GType> -> <GParamFlags> -> IO (Ptr <GParamSpec>)
+#ccall g_value_get_gtype , Ptr <GValue> -> IO <GType>
+#ccall g_value_set_gtype , Ptr <GValue> -> <GType> -> IO ()
+
diff --git a/src/Bindings/GObject/Signals.hsc b/src/Bindings/GObject/Signals.hsc
--- a/src/Bindings/GObject/Signals.hsc
+++ b/src/Bindings/GObject/Signals.hsc
@@ -1,4 +1,4 @@
-#include <bindings-gobject.dsl.h>
+#include <bindings.dsl.h>
 #include <glib-object.h>
 
 -- | <http://library.gnome.org/devel/gobject/stable/gobject-Signals.html>
diff --git a/src/Bindings/GObject/TypeInformation.hsc b/src/Bindings/GObject/TypeInformation.hsc
--- a/src/Bindings/GObject/TypeInformation.hsc
+++ b/src/Bindings/GObject/TypeInformation.hsc
@@ -1,4 +1,4 @@
-#include <bindings-gobject.dsl.h>
+#include <bindings.dsl.h>
 #include <glib-object.h>
 
 -- | <http://library.gnome.org/devel/gobject/stable/gobject-Type-Information.html>
@@ -165,16 +165,13 @@
 #num G_TYPE_ULONG
 #num G_TYPE_INT64
 #num G_TYPE_UINT64
-#num G_TYPE_ENUM
-#num G_TYPE_FLAGS
 #num G_TYPE_FLOAT
 #num G_TYPE_DOUBLE
 #num G_TYPE_STRING
 #num G_TYPE_POINTER
 #num G_TYPE_BOXED
 #num G_TYPE_PARAM
-#num G_TYPE_OBJECT
--- G_TYPE_GTYPE
+#cinline G_TYPE_GTYPE , IO <GType>
 #num G_TYPE_RESERVED_GLIB_FIRST
 #num G_TYPE_RESERVED_GLIB_LAST
 #num G_TYPE_RESERVED_BSE_FIRST
diff --git a/src/Bindings/GObject/ValueArrays.hsc b/src/Bindings/GObject/ValueArrays.hsc
--- a/src/Bindings/GObject/ValueArrays.hsc
+++ b/src/Bindings/GObject/ValueArrays.hsc
@@ -1,4 +1,4 @@
-#include <bindings-gobject.dsl.h>
+#include <bindings.dsl.h>
 #include <glib-object.h>
 
 -- | <http://library.gnome.org/devel/gobject/stable/gobject-Value-arrays.html>
diff --git a/src/Bindings/GObject/Varargs.hsc b/src/Bindings/GObject/Varargs.hsc
--- a/src/Bindings/GObject/Varargs.hsc
+++ b/src/Bindings/GObject/Varargs.hsc
@@ -1,4 +1,4 @@
-#include <bindings-gobject.dsl.h>
+#include <bindings.dsl.h>
 #include <gobject/gvaluecollector.h>
 
 -- | <http://library.gnome.org/devel/gobject/stable/gobject-Varargs-Value-Collection.html>
diff --git a/src/bindings-gobject.cmacros.h b/src/bindings-gobject.cmacros.h
deleted file mode 100644
--- a/src/bindings-gobject.cmacros.h
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifndef __BINDINGS_GOBJECT_CMACROS_H__
-#define __BINDINGS_GOBJECT_CMACROS_H__
-
-#include <bindings.cmacros.h>
-
-#define BC_STANDARD_MACROS_NOTCLASSED(prefix,object,CamelCase) \
-    BC_INLINE_(prefix##_TYPE_##object,GType) \
-    BC_INLINE1(prefix##_##object,void*,CamelCase*) \
-    BC_INLINE1(prefix##_IS_##object,void*,gboolean) \
-
-#define BC_STANDARD_MACROS(prefix,object,CamelCase) \
-    BC_STANDARD_MACROS_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 /* __BINDINGS_GOBJECT_CMACROS_H__ */
-
diff --git a/src/bindings-gobject.dsl.h b/src/bindings-gobject.dsl.h
deleted file mode 100644
--- a/src/bindings-gobject.dsl.h
+++ /dev/null
@@ -1,20 +0,0 @@
-#ifndef __BINDINGS_GOBJECT_DSL_H__
-#define __BINDINGS_GOBJECT_DSL_H__
-
-#include <bindings.dsl.h>
-
-#define hsc_standard_macros_notclassed(prefix,object,CamelCase) \
-    hsc_opaque_t(CamelCase) \
-    hsc_cinline(prefix##_TYPE_##object,<GType>) \
-    hsc_cinline(prefix##_##object,Ptr a -> Ptr <CamelCase>) \
-    hsc_cinline(prefix##_IS_##object,Ptr a -> <gboolean>) \
-
-#define hsc_standard_macros(prefix,object,CamelCase) \
-    hsc_opaque_t(CamelCase##Class) \
-    hsc_standard_macros_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 /* __BINDINGS_GOBJECT_DSL_H__ */
-
diff --git a/src/inlines.c b/src/inlines.c
--- a/src/inlines.c
+++ b/src/inlines.c
@@ -1,43 +1,14 @@
-#include<glib-object.h>
-#include<bindings-gobject.cmacros.h>
-
-BC_INLINE1(G_TYPE_FUNDAMENTAL,GType,GType)
-BC_INLINE1(G_TYPE_MAKE_FUNDAMENTAL,GType,GType)
-BC_INLINE1(G_TYPE_IS_ABSTRACT,GType,gboolean)
-BC_INLINE1(G_TYPE_IS_DERIVED,GType,gboolean)
-BC_INLINE1(G_TYPE_IS_FUNDAMENTAL,GType,gboolean)
-BC_INLINE1(G_TYPE_IS_VALUE_TYPE,GType,gboolean)
-BC_INLINE1(G_TYPE_HAS_VALUE_TABLE,GType,gboolean)
-BC_INLINE1(G_TYPE_IS_CLASSED,GType,gboolean)
-BC_INLINE1(G_TYPE_IS_INSTANTIATABLE,GType,gboolean)
-BC_INLINE1(G_TYPE_IS_DERIVABLE,GType,gboolean)
-BC_INLINE1(G_TYPE_IS_DEEP_DERIVABLE,GType,gboolean)
-BC_INLINE1(G_TYPE_IS_INTERFACE,GType,gboolean)
-BC_INLINE2(G_VALUE_HOLDS,GValue*,GType,gboolean)
-BC_INLINE1(G_VALUE_TYPE,GValue*,GType)
-BC_INLINE1(G_VALUE_TYPE_NAME,GValue*,const gchar*)
-BC_INLINE1(G_TYPE_IS_VALUE,GType,gboolean)
-BC_INLINE1(G_TYPE_IS_VALUE_ABSTRACT,GType,gboolean)
-BC_INLINE1(G_IS_VALUE,GValue*,gboolean)
-BC_INLINE1(G_CALLBACK,void*,GCallback)
-
-BC_INLINE1(G_CLOSURE_NEEDS_MARSHAL,GClosure*,int)
-BC_INLINE1(G_CLOSURE_N_NOTIFIERS,GClosure*,guint)
-BC_INLINE1(G_CCLOSURE_SWAP_DATA,GClosure*,guint)
+#include <glib-object.h>
+#include <bindings.cmacros.gobject.h>
 
+BC_GOBJECT(G,OBJECT,GObject)
 BC_INLINE1(G_TYPE_IS_OBJECT,GType,gboolean)
-BC_INLINE1(G_OBJECT,GTypeInstance*,GObject*)
-BC_INLINE1(G_IS_OBJECT,GTypeInstance*,gboolean)
-BC_INLINE1(G_OBJECT_CLASS,GTypeClass*,GObjectClass*)
-BC_INLINE1(G_IS_OBJECT_CLASS,GTypeClass*,gboolean)
-BC_INLINE1(G_OBJECT_GET_CLASS,GTypeInstance*,GObjectClass*)
-BC_INLINE1(G_OBJECT_TYPE,GTypeInstance*,GType)
-BC_INLINE1(G_OBJECT_TYPE_NAME,GTypeInstance*,const gchar*)
-BC_INLINE1(G_OBJECT_CLASS_TYPE,GTypeClass*,GType)
-BC_INLINE1(G_OBJECT_CLASS_NAME,GTypeClass*,const gchar*)
+BC_INLINE1(G_OBJECT_TYPE,void*,GType)
+BC_INLINE1(G_OBJECT_TYPE_NAME,void*,const gchar*)
+BC_INLINE1(G_OBJECT_CLASS_TYPE,void*,GType)
+BC_INLINE1(G_OBJECT_CLASS_NAME,void*,const gchar*)
 BC_INLINE_(G_TYPE_INITIALLY_UNOWNED,GType)
 BC_INLINE3VOID(G_OBJECT_WARN_INVALID_PROPERTY_ID,GObject*,guint,GParamSpec*)
-
 BC_INLINE_(G_TYPE_HASH_TABLE,GType)
 BC_INLINE_(G_TYPE_DATE,GType)
 BC_INLINE_(G_TYPE_GSTRING,GType)
@@ -46,32 +17,137 @@
 BC_INLINE_(G_TYPE_ARRAY,GType)
 BC_INLINE_(G_TYPE_BYTE_ARRAY,GType)
 BC_INLINE_(G_TYPE_PTR_ARRAY,GType)
-
+BC_INLINE1(G_CLOSURE_NEEDS_MARSHAL,GClosure*,int)
+BC_INLINE1(G_CLOSURE_N_NOTIFIERS,GClosure*,guint)
+BC_INLINE1(G_CCLOSURE_SWAP_DATA,GClosure*,guint)
+BC_INLINE1(G_CALLBACK,void*,GCallback)
 BC_INLINE1(G_ENUM_CLASS_TYPE,GEnumClass*,GType)
 BC_INLINE1(G_ENUM_CLASS_TYPE_NAME,GEnumClass*,const gchar*)
 BC_INLINE1(G_TYPE_IS_ENUM,GType,gboolean)
-BC_INLINE1(G_ENUM_CLASS,GTypeClass*,GEnumClass*)
-BC_INLINE1(G_IS_ENUM_CLASS,GTypeClass*,gboolean)
+BC_INLINE1(G_ENUM_CLASS,void*,GEnumClass*)
+BC_INLINE1(G_IS_ENUM_CLASS,void*,gboolean)
+BC_INLINE1(G_FLAGS_CLASS,void*,GFlagsClass*)
+BC_INLINE1(G_IS_FLAGS_CLASS,void*,gboolean)
 BC_INLINE1(G_TYPE_IS_FLAGS,GType,gboolean)
-BC_INLINE1(G_FLAGS_CLASS,GTypeClass*,GFlagsClass*)
-BC_INLINE1(G_IS_FLAGS_CLASS,GTypeClass*,gboolean)
 BC_INLINE1(G_FLAGS_CLASS_TYPE,GFlagsClass*,GType)
 BC_INLINE1(G_FLAGS_CLASS_TYPE_NAME,GFlagsClass*,const gchar*)
-
+BC_INLINE2(G_VALUE_HOLDS,void*,GType,gboolean)
+BC_INLINE1(G_VALUE_TYPE,void*,GType)
+BC_INLINE1(G_VALUE_TYPE_NAME,void*,const gchar*)
+BC_INLINE1(G_TYPE_IS_VALUE,GType,gboolean)
+BC_INLINE1(G_TYPE_IS_VALUE_ABSTRACT,GType,gboolean)
+BC_INLINE1(G_IS_VALUE,void*,gboolean)
 BC_INLINE1(G_TYPE_IS_PARAM,GType,gboolean)
-BC_INLINE1(G_PARAM_SPEC,GTypeInstance*,GParamSpec*)
-BC_INLINE1(G_IS_PARAM_SPEC,GTypeInstance*,gboolean)
-BC_INLINE1(G_PARAM_SPEC_CLASS,GTypeClass*,GParamSpecClass*)
-BC_INLINE1(G_IS_PARAM_SPEC_CLASS,GTypeClass*,gboolean)
-BC_INLINE1(G_PARAM_SPEC_GET_CLASS,GParamSpec*,GParamSpecClass*)
-BC_INLINE1(G_PARAM_SPEC_TYPE,GParamSpec*,GType)
-BC_INLINE1(G_PARAM_SPEC_TYPE_NAME,GParamSpec*,const gchar*)
-BC_INLINE1(G_PARAM_SPEC_VALUE_TYPE,GParamSpec*,GType)
-
+BC_INLINE1(G_PARAM_SPEC,void*,GParamSpec*)
+BC_INLINE1(G_IS_PARAM_SPEC,void*,gboolean)
+BC_INLINE1(G_PARAM_SPEC_CLASS,void*,GParamSpecClass*)
+BC_INLINE1(G_IS_PARAM_SPEC_CLASS,void*,gboolean)
+BC_INLINE1(G_PARAM_SPEC_GET_CLASS,void*,GParamSpecClass*)
+BC_INLINE1(G_PARAM_SPEC_TYPE,void*,GType)
+BC_INLINE1(G_PARAM_SPEC_TYPE_NAME,void*,const gchar*)
+BC_INLINE1(G_PARAM_SPEC_VALUE_TYPE,void*,GType)
+BC_INLINE1(G_IS_PARAM_SPEC_BOOLEAN,void*,gboolean)
+BC_INLINE1(G_PARAM_SPEC_BOOLEAN,void*,GParamSpecBoolean*)
+BC_INLINE_(G_TYPE_PARAM_BOOLEAN,GType)
+BC_INLINE1(G_VALUE_HOLDS_BOOLEAN,GValue*,gboolean)
+BC_INLINE1(G_IS_PARAM_SPEC_CHAR,void*,gboolean)
+BC_INLINE1(G_PARAM_SPEC_CHAR,void*,GParamSpecChar*)
+BC_INLINE_(G_TYPE_PARAM_CHAR,GType)
+BC_INLINE1(G_VALUE_HOLDS_CHAR,GValue*,gboolean)
+BC_INLINE1(G_IS_PARAM_SPEC_UCHAR,void*,gboolean)
+BC_INLINE1(G_PARAM_SPEC_UCHAR,void*,GParamSpecUChar*)
+BC_INLINE_(G_TYPE_PARAM_UCHAR,GType)
+BC_INLINE1(G_VALUE_HOLDS_UCHAR,GValue*,gboolean)
+BC_INLINE1(G_IS_PARAM_SPEC_INT,void*,gboolean)
+BC_INLINE1(G_PARAM_SPEC_INT,void*,GParamSpecInt*)
+BC_INLINE_(G_TYPE_PARAM_INT,GType)
+BC_INLINE1(G_VALUE_HOLDS_INT,GValue*,gboolean)
+BC_INLINE1(G_IS_PARAM_SPEC_UINT,void*,gboolean)
+BC_INLINE1(G_PARAM_SPEC_UINT,void*,GParamSpecUInt*)
+BC_INLINE_(G_TYPE_PARAM_UINT,GType)
+BC_INLINE1(G_VALUE_HOLDS_UINT,GValue*,gboolean)
+BC_INLINE1(G_IS_PARAM_SPEC_LONG,void*,gboolean)
+BC_INLINE1(G_PARAM_SPEC_LONG,void*,GParamSpecLong*)
+BC_INLINE_(G_TYPE_PARAM_LONG,GType)
+BC_INLINE1(G_VALUE_HOLDS_LONG,GValue*,gboolean)
+BC_INLINE1(G_IS_PARAM_SPEC_ULONG,void*,gboolean)
+BC_INLINE1(G_PARAM_SPEC_ULONG,void*,GParamSpecULong*)
+BC_INLINE_(G_TYPE_PARAM_ULONG,GType)
+BC_INLINE1(G_VALUE_HOLDS_ULONG,GValue*,gboolean)
+BC_INLINE1(G_IS_PARAM_SPEC_INT64,void*,gboolean)
+BC_INLINE1(G_PARAM_SPEC_INT64,void*,GParamSpecInt64*)
+BC_INLINE_(G_TYPE_PARAM_INT64,GType)
+BC_INLINE1(G_VALUE_HOLDS_INT64,GValue*,gboolean)
+BC_INLINE1(G_IS_PARAM_SPEC_UINT64,void*,gboolean)
+BC_INLINE1(G_PARAM_SPEC_UINT64,void*,GParamSpecUInt64*)
+BC_INLINE_(G_TYPE_PARAM_UINT64,GType)
+BC_INLINE1(G_VALUE_HOLDS_UINT64,GValue*,gboolean)
+BC_INLINE1(G_IS_PARAM_SPEC_FLOAT,void*,gboolean)
+BC_INLINE1(G_PARAM_SPEC_FLOAT,void*,GParamSpecFloat*)
+BC_INLINE_(G_TYPE_PARAM_FLOAT,GType)
+BC_INLINE1(G_VALUE_HOLDS_FLOAT,GValue*,gboolean)
+BC_INLINE1(G_IS_PARAM_SPEC_DOUBLE,void*,gboolean)
+BC_INLINE1(G_PARAM_SPEC_DOUBLE,void*,GParamSpecDouble*)
+BC_INLINE_(G_TYPE_PARAM_DOUBLE,GType)
+BC_INLINE1(G_VALUE_HOLDS_DOUBLE,GValue*,gboolean)
+BC_INLINE1(G_IS_PARAM_SPEC_ENUM,void*,gboolean)
+BC_INLINE1(G_PARAM_SPEC_ENUM,void*,GParamSpecEnum*)
+BC_INLINE_(G_TYPE_PARAM_ENUM,GType)
+BC_INLINE1(G_VALUE_HOLDS_ENUM,GValue*,gboolean)
+BC_INLINE1(G_IS_PARAM_SPEC_FLAGS,void*,gboolean)
+BC_INLINE1(G_PARAM_SPEC_FLAGS,void*,GParamSpecFlags*)
+BC_INLINE_(G_TYPE_PARAM_FLAGS,GType)
+BC_INLINE1(G_VALUE_HOLDS_FLAGS,GValue*,gboolean)
+BC_INLINE1(G_IS_PARAM_SPEC_STRING,void*,gboolean)
+BC_INLINE1(G_PARAM_SPEC_STRING,void*,GParamSpecString*)
+BC_INLINE_(G_TYPE_PARAM_STRING,GType)
+BC_INLINE1(G_VALUE_HOLDS_STRING,GValue*,gboolean)
+BC_INLINE1(G_IS_PARAM_SPEC_PARAM,void*,gboolean)
+BC_INLINE1(G_PARAM_SPEC_PARAM,void*,GParamSpecParam*)
+BC_INLINE_(G_TYPE_PARAM_PARAM,GType)
+BC_INLINE1(G_VALUE_HOLDS_PARAM,GValue*,gboolean)
+BC_INLINE1(G_IS_PARAM_SPEC_BOXED,void*,gboolean)
+BC_INLINE1(G_PARAM_SPEC_BOXED,void*,GParamSpecBoxed*)
+BC_INLINE_(G_TYPE_PARAM_BOXED,GType)
+BC_INLINE1(G_VALUE_HOLDS_BOXED,GValue*,gboolean)
+BC_INLINE1(G_IS_PARAM_SPEC_POINTER,void*,gboolean)
+BC_INLINE1(G_PARAM_SPEC_POINTER,void*,GParamSpecPointer*)
+BC_INLINE_(G_TYPE_PARAM_POINTER,GType)
+BC_INLINE1(G_VALUE_HOLDS_POINTER,GValue*,gboolean)
+BC_INLINE1(G_IS_PARAM_SPEC_OBJECT,void*,gboolean)
+BC_INLINE1(G_PARAM_SPEC_OBJECT,void*,GParamSpecObject*)
+BC_INLINE_(G_TYPE_PARAM_OBJECT,GType)
+BC_INLINE1(G_VALUE_HOLDS_OBJECT,GValue*,gboolean)
+BC_INLINE1(G_IS_PARAM_SPEC_UNICHAR,void*,gboolean)
+BC_INLINE1(G_PARAM_SPEC_UNICHAR,void*,GParamSpecUnichar*)
+BC_INLINE_(G_TYPE_PARAM_UNICHAR,GType)
+BC_INLINE1(G_IS_PARAM_SPEC_VALUE_ARRAY,void*,gboolean)
+BC_INLINE1(G_PARAM_SPEC_VALUE_ARRAY,void*,GParamSpecValueArray*)
+BC_INLINE_(G_TYPE_PARAM_VALUE_ARRAY,GType)
+BC_INLINE1(G_IS_PARAM_SPEC_OVERRIDE,void*,gboolean)
+BC_INLINE1(G_PARAM_SPEC_OVERRIDE,void*,GParamSpecOverride*)
+BC_INLINE_(G_TYPE_PARAM_OVERRIDE,GType)
+BC_INLINE1(G_IS_PARAM_SPEC_GTYPE,void*,gboolean)
+BC_INLINE1(G_PARAM_SPEC_GTYPE,void*,GParamSpecGType*)
+BC_INLINE_(G_TYPE_PARAM_GTYPE,GType)
+BC_INLINE1(G_VALUE_HOLDS_GTYPE,GValue*,gboolean)
 BC_INLINE4(g_signal_connect,gpointer,gchar*,GCallback,gpointer,gulong)
 BC_INLINE4(g_signal_connect_after,gpointer,gchar*,GCallback,gpointer,gulong)
 BC_INLINE4(g_signal_connect_swapped,gpointer,gchar*,GCallback,gpointer,gulong)
 BC_INLINE3(g_signal_handlers_block_by_func,gpointer,gpointer,gpointer,guint)
 BC_INLINE3(g_signal_handlers_unblock_by_func,gpointer,gpointer,gpointer,guint)
 BC_INLINE3(g_signal_handlers_disconnect_by_func,gpointer,gpointer,gpointer,guint)
+BC_INLINE1(G_TYPE_FUNDAMENTAL,GType,GType)
+BC_INLINE1(G_TYPE_MAKE_FUNDAMENTAL,GType,GType)
+BC_INLINE1(G_TYPE_IS_ABSTRACT,GType,gboolean)
+BC_INLINE1(G_TYPE_IS_DERIVED,GType,gboolean)
+BC_INLINE1(G_TYPE_IS_FUNDAMENTAL,GType,gboolean)
+BC_INLINE1(G_TYPE_IS_VALUE_TYPE,GType,gboolean)
+BC_INLINE1(G_TYPE_HAS_VALUE_TABLE,GType,gboolean)
+BC_INLINE1(G_TYPE_IS_CLASSED,GType,gboolean)
+BC_INLINE1(G_TYPE_IS_INSTANTIATABLE,GType,gboolean)
+BC_INLINE1(G_TYPE_IS_DERIVABLE,GType,gboolean)
+BC_INLINE1(G_TYPE_IS_DEEP_DERIVABLE,GType,gboolean)
+BC_INLINE1(G_TYPE_IS_INTERFACE,GType,gboolean)
+BC_INLINE_(G_TYPE_GTYPE,GType)
 
