diff --git a/bindings-gobject.cabal b/bindings-gobject.cabal
--- a/bindings-gobject.cabal
+++ b/bindings-gobject.cabal
@@ -3,7 +3,7 @@
 homepage: http://bitbucket.org/mauricio/bindings-gobject
 synopsis:
   Low level bindings to GObject.
-version: 0.1.1
+version: 0.2
 license: BSD3
 license-file: LICENSE
 maintainer: Maurício C. Antunes <mauricio.antunes@gmail.com>
@@ -33,8 +33,9 @@
     Bindings.GObject.GParamSpec
     Bindings.GObject.GTypeModule
     Bindings.GObject.GTypePlugin
+    Bindings.GObject.Signals
     Bindings.GObject.TypeInformation
     Bindings.GObject.ValueArrays
     Bindings.GObject.Varargs
   c-sources: src/inlines.c
-  pkgconfig-depends: gobject-2.0 >= 2.22.2
+  pkgconfig-depends: gobject-2.0 >= 2.24.1
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,1 @@
-module Bindings.GObject (module Bindings.GObject.BaseObjectType,module Bindings.GObject.BoxedTypes,module Bindings.GObject.EnumerationAndFlagTypes,module Bindings.GObject.GenericValues,module Bindings.GObject.GParamSpec,module Bindings.GObject.GTypeModule,module Bindings.GObject.GTypePlugin,module Bindings.GObject.TypeInformation,module Bindings.GObject.ValueArrays,module Bindings.GObject.Varargs) where {import Bindings.GObject.BaseObjectType;import Bindings.GObject.BoxedTypes;import Bindings.GObject.EnumerationAndFlagTypes;import Bindings.GObject.GenericValues;import Bindings.GObject.GParamSpec;import Bindings.GObject.GTypeModule;import Bindings.GObject.GTypePlugin;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.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}
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-gobject.dsl.h>
 #include <glib-object.h>
 
 -- | <http://library.gnome.org/devel/gobject/stable/gobject-The-Base-Object-Type.html>
@@ -34,16 +34,16 @@
 #callback GObjectSetPropertyFunc , Ptr <GObject> -> <guint> -> Ptr <GValue> -> Ptr <GParamSpec> -> IO ()
 #callback GObjectFinalizeFunc , Ptr <GObject> -> IO ()
 
-#cinline G_TYPE_IS_OBJECT , <GType> -> IO <gboolean>
-#cinline G_OBJECT , Ptr <GTypeInstance> -> IO (Ptr <GObject>)
-#cinline G_IS_OBJECT , Ptr <GTypeInstance> -> IO <gboolean>
-#cinline G_OBJECT_CLASS , Ptr <GTypeClass> -> IO (Ptr <GObjectClass>)
-#cinline G_IS_OBJECT_CLASS , Ptr <GTypeClass> -> IO <gboolean>
-#cinline G_OBJECT_GET_CLASS , Ptr <GTypeInstance> -> IO (Ptr <GObjectClass>)
-#cinline G_OBJECT_TYPE , Ptr <GTypeInstance> -> IO <GType>
-#cinline G_OBJECT_TYPE_NAME , Ptr <GTypeInstance> -> IO (Ptr <gchar>)
-#cinline G_OBJECT_CLASS_TYPE , Ptr <GTypeClass> -> IO <GType>
-#cinline G_OBJECT_CLASS_NAME , Ptr <GTypeClass> -> IO (Ptr <gchar>)
+#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>
+#cinline G_OBJECT_CLASS_NAME , Ptr a -> IO (Ptr <gchar>)
 
 #ccall g_object_class_install_property , Ptr <GObjectClass> -> <guint> -> Ptr <GParamSpec> -> IO ()
 #ccall g_object_class_find_property , Ptr <GObjectClass> -> Ptr <gchar> -> IO (Ptr <GParamSpec>)
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.dsl.h>
+#include <bindings-gobject.dsl.h>
 #include <glib-object.h>
 
 -- | <http://library.gnome.org/devel/gobject/stable/gobject-Boxed-Types.html>
@@ -16,14 +16,14 @@
 #ccall g_boxed_type_register_static , Ptr <gchar> -> <GBoxedCopyFunc> -> <GBoxedFreeFunc> -> IO <GType>
 #ccall g_pointer_type_register_static , Ptr <gchar> -> IO <GType>
 
-#cinline G_TYPE_HASH_TABLE , IO <GType>
-#cinline G_TYPE_DATE , IO <GType>
-#cinline G_TYPE_GSTRING , IO <GType>
-#cinline G_TYPE_STRV , IO <GType>
-#cinline G_TYPE_REGEX , IO <GType>
-#cinline G_TYPE_ARRAY , IO <GType>
-#cinline G_TYPE_BYTE_ARRAY , IO <GType>
-#cinline G_TYPE_PTR_ARRAY , IO <GType>
+#cinline G_TYPE_HASH_TABLE , <GType>
+#cinline G_TYPE_DATE , <GType>
+#cinline G_TYPE_GSTRING , <GType>
+#cinline G_TYPE_STRV , <GType>
+#cinline G_TYPE_REGEX , <GType>
+#cinline G_TYPE_ARRAY , <GType>
+#cinline G_TYPE_BYTE_ARRAY , <GType>
+#cinline G_TYPE_PTR_ARRAY , <GType>
 
 #synonym_t GStrv , Ptr (Ptr <gchar>)
 
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.dsl.h>
+#include <bindings-gobject.dsl.h>
 #include <glib-object.h>
 
 -- | <http://library.gnome.org/devel/gobject/stable/gobject-Closures.html>
@@ -14,35 +14,27 @@
 
 #cinline G_CCLOSURE_SWAP_DATA , Ptr <GClosure> -> <guint>
 
-#cinline G_CALLBACK , FunPtr () -> <GCallback>
+#cinline G_CALLBACK , FunPtr a -> <GCallback>
 
 #starttype GClosure
 #stoptype
 
-#starttype GClosureNotifyData
-#field data , <gpointer>
-#field notify , <GClosureNotify>
-#stoptype
-
 #callback GCallback , IO ()
 
 #callback GClosureNotify , <gpointer> -> Ptr <GClosure> -> IO ()
 
-#callback GClosureMarshal , Ptr <GClosure> -> Ptr <GValue> -> \
- <guint> -> Ptr <GValue> -> <gpointer> -> <gpointer> -> IO ()
-
-
 #starttype GCClosure
 #field closure , <GClosure>
 #field callback , <gpointer>
 #stoptype
 
+#callback GClosureMarshal , Ptr <GClosure> -> Ptr <GValue> -> <guint> -> \
+    Ptr <GValue> -> <gpointer> -> <gpointer> -> IO ()
+
 #ccall g_cclosure_new , <GCallback> -> <gpointer> -> \
   <GClosureNotify> -> IO (Ptr <GClosure>)
 #ccall g_cclosure_new_swap , <GCallback> -> <gpointer> -> \
   <GClosureNotify> -> IO (Ptr <GClosure>)
-#ccall g_signal_type_cclosure_new , <GType> -> <guint> -> \
-  IO (Ptr <GClosure>)
 #ccall g_closure_ref , Ptr <GClosure> -> IO (Ptr <GClosure>)
 #ccall g_closure_sink , Ptr <GClosure> -> IO ()
 #ccall g_closure_unref , Ptr <GClosure> -> IO ()
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.dsl.h>
+#include <bindings-gobject.dsl.h>
 #include <glib-object.h>
 
 -- | <http://library.gnome.org/devel/gobject/stable/gobject-Enumeration-and-Flag-Types.html>
@@ -23,15 +23,15 @@
 #field values , Ptr <GFlagsValue>
 #stoptype
 
-#cinline G_ENUM_CLASS_TYPE , Ptr <GEnumClass> -> IO <GType>
+#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 , Ptr <GTypeClass> -> IO (Ptr <GEnumClass>)
-#cinline G_IS_ENUM_CLASS , Ptr <GTypeClass> -> IO <gboolean>
+#cinline G_ENUM_CLASS , Ptr a -> Ptr <GEnumClass>
+#cinline G_IS_ENUM_CLASS , Ptr a -> IO <gboolean>
 #cinline G_TYPE_IS_FLAGS , <GType> -> IO <gboolean>
-#cinline G_FLAGS_CLASS , Ptr <GTypeClass> -> IO (Ptr <GFlagsClass>)
-#cinline G_IS_FLAGS_CLASS , Ptr <GTypeClass> -> IO <gboolean>
-#cinline G_FLAGS_CLASS_TYPE , Ptr <GFlagsClass> -> IO <GType>
+#cinline G_FLAGS_CLASS , Ptr a -> Ptr <GFlagsClass>
+#cinline G_IS_FLAGS_CLASS , Ptr a -> <gboolean>
+#cinline G_FLAGS_CLASS_TYPE , Ptr <GFlagsClass> -> <GType>
 #cinline G_FLAGS_CLASS_TYPE_NAME , Ptr <GFlagsClass> -> IO (Ptr <gchar>)
 
 #starttype GEnumValue
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.dsl.h>
+#include <bindings-gobject.dsl.h>
 #include <glib-object.h>
 
 -- | <http://library.gnome.org/devel/gobject/stable/gobject-GParamSpec.html>
@@ -8,15 +8,15 @@
 import Bindings.GLib
 import Bindings.GObject.TypeInformation
 
-#cinline G_TYPE_IS_PARAM , <GType> -> IO <gboolean>
-#cinline G_PARAM_SPEC , Ptr <GTypeInstance> -> IO (Ptr <GParamSpec>)
-#cinline G_IS_PARAM_SPEC , Ptr <GTypeInstance> -> IO <gboolean>
-#cinline G_PARAM_SPEC_CLASS , Ptr <GTypeClass> -> IO (Ptr <GParamSpecClass>)
-#cinline G_IS_PARAM_SPEC_CLASS , Ptr <GTypeClass> -> IO <gboolean>
-#cinline G_PARAM_SPEC_GET_CLASS , Ptr <GParamSpec> -> IO (Ptr <GParamSpecClass>)
-#cinline G_PARAM_SPEC_TYPE , Ptr <GParamSpec> -> IO <GType>
-#cinline G_PARAM_SPEC_TYPE_NAME , Ptr <GParamSpec> -> IO (Ptr <gchar>)
-#cinline G_PARAM_SPEC_VALUE_TYPE , Ptr <GParamSpec> -> IO <GType>
+#cinline G_TYPE_IS_PARAM , <GType> -> <gboolean>
+#cinline G_PARAM_SPEC , Ptr a -> Ptr <GParamSpec>
+#cinline G_IS_PARAM_SPEC , Ptr a -> <gboolean>
+#cinline G_PARAM_SPEC_CLASS , Ptr a -> Ptr <GParamSpecClass>
+#cinline G_IS_PARAM_SPEC_CLASS , Ptr a -> <gboolean>
+#cinline G_PARAM_SPEC_GET_CLASS , Ptr a -> Ptr <GParamSpecClass>
+#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>
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.dsl.h>
+#include <bindings-gobject.dsl.h>
 #include <glib-object.h>
 
 -- | <http://library.gnome.org/devel/gobject/stable/GTypeModule.html>
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.dsl.h>
+#include <bindings-gobject.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.dsl.h>
+#include <bindings-gobject.dsl.h>
 #include <glib-object.h>
 
 -- | <http://library.gnome.org/devel/gobject/stable/gobject-Generic-values.html>
@@ -8,12 +8,12 @@
 import Bindings.GLib
 import Bindings.GObject.TypeInformation
 
-#cinline G_VALUE_HOLDS , Ptr <GValue> -> <GType> -> IO <gboolean>
-#cinline G_VALUE_TYPE , Ptr <GValue> -> IO <GType>
-#cinline G_VALUE_TYPE_NAME , Ptr <GValue> -> IO (Ptr <gchar>)
-#cinline G_TYPE_IS_VALUE , <GType> -> IO <gboolean>
-#cinline G_TYPE_IS_VALUE_ABSTRACT , <GType> -> IO <gboolean>
-#cinline G_IS_VALUE , Ptr <GValue> -> IO <gboolean>
+#cinline G_VALUE_HOLDS , Ptr a -> <GType> -> <gboolean>
+#cinline G_VALUE_TYPE , Ptr a -> <GType>
+#cinline G_VALUE_TYPE_NAME , Ptr a -> IO (Ptr <gchar>)
+#cinline G_TYPE_IS_VALUE , <GType> -> <gboolean>
+#cinline G_TYPE_IS_VALUE_ABSTRACT , <GType> -> <gboolean>
+#cinline G_IS_VALUE , Ptr a -> <gboolean>
 
 #ccall g_value_init , Ptr <GValue> -> <GType> -> IO (Ptr <GValue>)
 #ccall g_value_copy , Ptr <GValue> -> Ptr <GValue> -> IO ()
diff --git a/src/Bindings/GObject/Signals.hsc b/src/Bindings/GObject/Signals.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/GObject/Signals.hsc
@@ -0,0 +1,125 @@
+#include <bindings-gobject.dsl.h>
+#include <glib-object.h>
+
+-- | <http://library.gnome.org/devel/gobject/stable/gobject-Signals.html>
+
+module Bindings.GObject.Signals where
+#strict_import
+import Bindings.GLib
+import Bindings.GObject.TypeInformation
+import Bindings.GObject.Closures
+
+#starttype GSignalInvocationHint
+#field signal_id , <guint>
+#field detail , <GQuark>
+#field run_type , <GSignalFlags>
+#stoptype
+
+#callback GSignalAccumulator , Ptr <GSignalInvocationHint> -> \
+    Ptr <GValue> -> Ptr <GValue> -> <gpointer> -> IO <gboolean>
+
+#synonym_t GSignalCMarshaller , <GClosureMarshal>
+
+#callback GSignalEmissionHook , Ptr <GSignalInvocationHint> -> <guint> -> \
+    Ptr <GValue> -> <gpointer> -> IO <gboolean>
+
+#integral_t GSignalFlags
+#num G_SIGNAL_RUN_FIRST
+#num G_SIGNAL_RUN_LAST
+#num G_SIGNAL_RUN_CLEANUP
+#num G_SIGNAL_NO_RECURSE
+#num G_SIGNAL_DETAILED
+#num G_SIGNAL_ACTION
+#num G_SIGNAL_NO_HOOKS
+
+#integral_t GSignalMatchType
+#num G_SIGNAL_MATCH_ID
+#num G_SIGNAL_MATCH_DETAIL
+#num G_SIGNAL_MATCH_CLOSURE
+#num G_SIGNAL_MATCH_FUNC
+#num G_SIGNAL_MATCH_DATA
+#num G_SIGNAL_MATCH_UNBLOCKED
+
+#starttype GSignalQuery
+#field signal_id , <guint>
+#field signal_name , Ptr <gchar>
+#field itype , <GType>
+#field signal_flags , <GSignalFlags>
+#field return_type , <GType>
+#field n_params , <guint>
+#field param_types , Ptr <GType>
+#stoptype
+
+#num G_SIGNAL_TYPE_STATIC_SCOPE
+#num G_SIGNAL_MATCH_MASK
+#num G_SIGNAL_FLAGS_MASK
+
+#ccall g_signal_newv , Ptr <gchar> -> <GType> -> <GSignalFlags> -> \
+    Ptr <GClosure> -> <GSignalAccumulator> -> <gpointer> -> \
+    <GSignalCMarshaller> -> <GType> -> <guint> -> Ptr <GType> -> IO <guint>
+#ccall g_signal_query , <guint> -> Ptr <GSignalQuery> -> IO ()
+#ccall g_signal_lookup , Ptr <gchar> -> <GType> -> IO <guint>
+#ccall g_signal_name , <guint> -> IO (Ptr <gchar>)
+#ccall g_signal_list_ids , <GType> -> Ptr <guint> -> IO (Ptr <guint>)
+#ccall g_signal_emitv , Ptr <GValue> -> <guint> -> <GQuark> -> \
+    Ptr <GValue> -> IO ()
+
+#cinline g_signal_connect , <gpointer> -> Ptr <gchar> ->  <GCallback> -> <gpointer> -> IO <gulong>
+#cinline g_signal_connect_after ,  <gpointer> -> Ptr <gchar> -> <GCallback> -> <gpointer> -> IO <gulong>
+#cinline g_signal_connect_swapped , <gpointer> -> Ptr <gchar> -> <GCallback> -> <gpointer> -> IO <gulong>
+
+#ccall g_signal_connect_object , <gpointer> -> Ptr <gchar> -> \
+    <GCallback> -> <gpointer> -> <GConnectFlags> -> IO <gulong>
+
+#integral_t GConnectFlags
+#num G_CONNECT_AFTER
+#num G_CONNECT_SWAPPED
+
+#ccall g_signal_connect_data , <gpointer> -> Ptr <gchar> -> \
+    <GCallback> -> <gpointer> -> <GClosureNotify> -> \
+    <GConnectFlags> -> IO <gulong>
+#ccall g_signal_connect_closure , <gpointer> -> Ptr <gchar> -> \
+    Ptr <GClosure> -> <gboolean> -> IO <gulong>
+#ccall g_signal_connect_closure_by_id , <gpointer> -> <guint> -> \
+    <GQuark> -> Ptr <GClosure> -> <gboolean> -> IO <gulong>
+#ccall g_signal_handler_block , <gpointer> -> <gulong> -> IO ()
+#ccall g_signal_handler_unblock , <gpointer> -> <gulong> -> IO ()
+#ccall g_signal_handler_disconnect , <gpointer> -> <gulong> -> IO ()
+#ccall g_signal_handler_find , <gpointer> -> <GSignalMatchType> -> \
+    <guint> -> <GQuark> -> Ptr <GClosure> -> <gpointer> -> \
+    <gpointer> -> IO <gulong>
+#ccall g_signal_handlers_block_matched , <gpointer> -> \
+    <GSignalMatchType> -> <guint> -> <GQuark> -> Ptr <GClosure> -> \
+    <gpointer> ->  <gpointer> -> IO <guint>
+#ccall g_signal_handlers_unblock_matched , <gpointer> -> \
+    <GSignalMatchType> -> <guint> -> <GQuark> -> Ptr <GClosure> -> \
+    <gpointer> -> <gpointer> -> IO <guint>
+#ccall g_signal_handlers_disconnect_matched , <gpointer> -> \
+    <GSignalMatchType> -> <guint> -> <GQuark> -> Ptr <GClosure> -> \
+    <gpointer> -> <gpointer> -> IO <guint>
+#ccall g_signal_handler_is_connected , <gpointer> -> <gulong> -> IO <gboolean>
+
+#cinline g_signal_handlers_block_by_func , <gpointer> -> <gpointer> -> <gpointer> -> IO <guint>
+#cinline g_signal_handlers_unblock_by_func , <gpointer> -> <gpointer> -> <gpointer> -> IO <guint>
+#cinline g_signal_handlers_disconnect_by_func , <gpointer> -> <gpointer> -> <gpointer> -> IO <guint>
+
+#ccall g_signal_has_handler_pending , <gpointer> -> <guint> ->  <GQuark> -> \
+    <gboolean> -> IO <gboolean>
+#ccall g_signal_stop_emission , <gpointer> -> <guint> -> <GQuark> -> IO ()
+#ccall g_signal_stop_emission_by_name , <gpointer> -> Ptr <gchar> -> IO ()
+#ccall g_signal_override_class_closure , <guint> -> <GType> -> \
+    Ptr <GClosure> -> IO ()
+#ccall g_signal_chain_from_overridden , Ptr <GValue> -> Ptr <GValue> -> IO ()
+#ccall g_signal_override_class_handler , Ptr <gchar> -> <GType> -> \
+    <GCallback> -> IO ()
+#ccall g_signal_add_emission_hook , <guint> -> <GQuark> -> \
+    <GSignalEmissionHook> -> <gpointer> -> <GDestroyNotify> -> IO <gulong>
+#ccall g_signal_remove_emission_hook , <guint> -> <gulong> -> IO ()
+#ccall g_signal_parse_name , Ptr <gchar> -> <GType> -> Ptr <guint> -> \
+    Ptr <GQuark> -> <gboolean> -> IO <gboolean>
+#ccall g_signal_get_invocation_hint , <gpointer> -> \
+    IO (Ptr <GSignalInvocationHint>)
+#ccall g_signal_type_cclosure_new , <GType> -> <guint> -> IO (Ptr <GClosure>)
+#ccall g_signal_accumulator_true_handled , Ptr <GSignalInvocationHint> -> \
+    Ptr <GValue> -> Ptr <GValue> -> <gpointer> -> IO <gboolean>
+
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.dsl.h>
+#include <bindings-gobject.dsl.h>
 #include <glib-object.h>
 
 -- | <http://library.gnome.org/devel/gobject/stable/gobject-Type-Information.html>
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.dsl.h>
+#include <bindings-gobject.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.dsl.h>
+#include <bindings-gobject.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
--- a/src/bindings-gobject.cmacros.h
+++ b/src/bindings-gobject.cmacros.h
@@ -3,16 +3,16 @@
 
 #include <bindings.cmacros.h>
 
-#define BC_STANDARD_MACROS_NONCLASSED(prefix,object,CamelCase) \
+#define BC_STANDARD_MACROS_NOTCLASSED(prefix,object,CamelCase) \
     BC_INLINE_(prefix##_TYPE_##object,GType) \
-    BC_INLINE1(prefix##_##object,GTypeInstance*,CamelCase*) \
-    BC_INLINE1(prefix##_IS_##object,GTypeInstance*,gboolean) \
+    BC_INLINE1(prefix##_##object,void*,CamelCase*) \
+    BC_INLINE1(prefix##_IS_##object,void*,gboolean) \
 
 #define BC_STANDARD_MACROS(prefix,object,CamelCase) \
-    BC_STANDARD_MACROS_NONCLASSED(prefix,object,CamelCase) \
-    BC_INLINE1(prefix##_##object##_CLASS,GTypeClass*,CamelCase##Class*) \
-    BC_INLINE1(prefix##_IS_##object##_CLASS,GTypeClass*,gboolean) \
-    BC_INLINE1(prefix##_##object##_GET_CLASS,GTypeInstance*,CamelCase##Class*) \
+    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
--- a/src/bindings-gobject.dsl.h
+++ b/src/bindings-gobject.dsl.h
@@ -3,18 +3,18 @@
 
 #include <bindings.dsl.h>
 
-#define hsc_standard_macros_nonclassed(prefix,object,CamelCase) \
+#define hsc_standard_macros_notclassed(prefix,object,CamelCase) \
     hsc_opaque_t(CamelCase) \
-    hsc_cinline(prefix##_TYPE_##object,IO <GType>) \
-    hsc_cinline(prefix##_##object,Ptr <GTypeInstance> -> IO (Ptr <CamelCase>)) \
-    hsc_cinline(prefix##_IS_##object,Ptr <GTypeInstance> -> IO <gboolean>) \
+    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_nonclassed(prefix,object,CamelCase) \
-    hsc_cinline(prefix##_##object##_CLASS,Ptr <GTypeClass> -> IO (Ptr <CamelCase##Class>)) \
-    hsc_cinline(prefix##_IS_##object##_CLASS,Ptr <GTypeClass> -> IO <gboolean>) \
-    hsc_cinline(prefix##_##object##_GET_CLASS,Ptr <GTypeInstance> -> IO (Ptr <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,7 +1,6 @@
 #include<glib-object.h>
 #include<bindings-gobject.cmacros.h>
 
-BC_INLINE4(g_signal_connect,gpointer,gchar*,GCallback,gpointer,gulong)
 BC_INLINE1(G_TYPE_FUNDAMENTAL,GType,GType)
 BC_INLINE1(G_TYPE_MAKE_FUNDAMENTAL,GType,GType)
 BC_INLINE1(G_TYPE_IS_ABSTRACT,GType,gboolean)
@@ -69,4 +68,10 @@
 BC_INLINE1(G_PARAM_SPEC_TYPE_NAME,GParamSpec*,const gchar*)
 BC_INLINE1(G_PARAM_SPEC_VALUE_TYPE,GParamSpec*,GType)
 
+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)
 
