diff --git a/bindings-glib.cabal b/bindings-glib.cabal
--- a/bindings-glib.cabal
+++ b/bindings-glib.cabal
@@ -1,23 +1,32 @@
-cabal-version: >= 1.4
+cabal-version: >= 1.10
 name: bindings-glib
 synopsis:
-  Low level bindings to GLib.
-version: 0.1.5
+  Project bindings-* raw interface to GLib
+description:
+  Low level bindings to GLib, part
+  of the @bindings-*@ project. See:
+  .
+  <https://github.com/rethab/bindings-dsl>
+  .
+  <https://developer.gnome.org/glib>
+version: 0.1.7
 license: BSD3
 license-file: LICENSE
-maintainer: Maurício C. Antunes <mauricio.antunes@gmail.com>
+maintainer: Reto <rethab@protonmail.ch>
 author: Maurício C. Antunes
 build-type: Simple
 category: FFI
-bug-reports: http://bitbucket.org/mauricio/bindings-dsl/issues
+bug-reports: https://github.com/rethab/bindings-dsl/issues
 library
   hs-source-dirs: src
-  extensions:
+  default-language:
+    Haskell2010
+  default-extensions:
     ForeignFunctionInterface
   build-depends:
     base >= 3 && < 5,
-    bindings-DSL >= 1.0.7 && < 1.1
-  pkgconfig-depends: glib-2.0 >= 2.22.2, gthread-2.0 >= 2.22.2
+    bindings-DSL >= 1.0.16 && < 1.2
+  pkgconfig-depends: glib-2.0 >= 2.36.3, gthread-2.0 >= 2.36.3
   exposed-modules:
     Bindings.GLib
     Bindings.GLib.Fundamentals
@@ -65,3 +74,8 @@
     src/datatypes.singlylinkedlists.c
     src/inlines.c
     src/utilities.unicodemanipulation.c
+source-repository head
+  type: git
+  location: https://github.com/rethab/bindings-dsl
+  branch: master
+  subdir: bindings-glib
diff --git a/gen_cabal.sh b/gen_cabal.sh
deleted file mode 100644
--- a/gen_cabal.sh
+++ /dev/null
@@ -1,59 +0,0 @@
-#!/bin/sh
-
-cat <<-"(head-end)"
-	cabal-version: >= 1.4
-	name: bindings-glib
-	synopsis:
-	  Low level bindings to GLib.
-	version: 0.1.5
-	license: BSD3
-	license-file: LICENSE
-	maintainer: Maurício C. Antunes <mauricio.antunes@gmail.com>
-	author: Maurício C. Antunes
-	build-type: Simple
-	category: FFI
-	bug-reports: http://bitbucket.org/mauricio/bindings-dsl/issues
-	library
-	  hs-source-dirs: src
-	  extensions:
-	    ForeignFunctionInterface
-	  build-depends:
-	    base >= 3 && < 5,
-	    bindings-DSL >= 1.0.7 && < 1.1
-	  pkgconfig-depends: glib-2.0 >= 2.22.2, gthread-2.0 >= 2.22.2
-(head-end)
-
-printf "  exposed-modules:\n    Bindings.GLib\n"
-
-base="\
-	Fundamentals:library.gnome.org/devel/glib/stable/glib-fundamentals.html \
-	CoreApplicationSupport:library.gnome.org/devel/glib/stable/glib-core.html \
-	Utilities:library.gnome.org/devel/glib/stable/glib-utilities.html \
-	DataTypes:library.gnome.org/devel/glib/stable/glib-data-types.html"
-
-imports=$(mktemp)
-
-for b in $base ; do
-	module=$(printf "%s" $b | cut -d ':' -f 1)
-	printf "    Bindings.GLib.%s\n" $module
-	dir=src/Bindings/GLib/$module
-	doc=$(printf "%s" $b | cut -d ':' -f 2)
-	printf -- "-- | <http://%s>\nmodule Bindings.GLib.%s (\n" $doc $module > $dir.hs
-	printf " ) where\n" > $imports
-	sub=$(ls -1 $dir | grep '.hsc$' | sed 's/\.hsc$//')
-	for s in $sub ; do
-		printf "    Bindings.GLib.%s.%s\n" $module $s
-		printf "  module Bindings.GLib.%s.%s,\n" $module $s >> $dir.hs
-		printf "import Bindings.GLib.%s.%s\n" $module $s >> $imports
-	done
-	cat $imports >> $dir.hs
-done
-
-rm $imports
-
-printf "  c-sources:\n"
-
-for f in $(ls -1 src/*.c) ; do
-	printf "    %s\n" $f
-done
-
diff --git a/src/Bindings/GLib/CoreApplicationSupport/MainEventLoop.hsc b/src/Bindings/GLib/CoreApplicationSupport/MainEventLoop.hsc
--- a/src/Bindings/GLib/CoreApplicationSupport/MainEventLoop.hsc
+++ b/src/Bindings/GLib/CoreApplicationSupport/MainEventLoop.hsc
@@ -49,7 +49,7 @@
 #ccall g_main_context_set_poll_func , Ptr <GMainContext> -> <GPollFunc> -> IO ()
 #ccall g_main_context_get_poll_func , Ptr <GMainContext> -> IO <GPollFunc>
 
-#callback GPollFunc , Ptr <GPollFD> -> <guint> -> <gint> -> IO <gint>
+#callback_t GPollFunc , Ptr <GPollFD> -> <guint> -> <gint> -> IO <gint>
 
 #ccall g_main_context_add_poll , Ptr <GMainContext> -> Ptr <GPollFD> -> <gint> -> IO ()
 #ccall g_main_context_remove_poll , Ptr <GMainContext> -> Ptr <GPollFD> -> IO ()
@@ -74,7 +74,7 @@
 
 #integral_t GPid
 
-#callback GChildWatchFunc , <GPid> -> <gint> -> <gpointer> -> IO ()
+#callback_t GChildWatchFunc , <GPid> -> <gint> -> <gpointer> -> IO ()
 
 #ccall g_child_watch_source_new , <GPid> -> IO (Ptr <GSource>)
 #ccall g_child_watch_add , <GPid> -> <GChildWatchFunc> -> <gpointer> -> IO <guint>
@@ -89,7 +89,7 @@
 
 #opaque_t GSource
 
-#callback GSourceDummyMarshal , IO ()
+#callback_t GSourceDummyMarshal , IO ()
 
 #starttype GSourceFuncs
 #field prepare , FunPtr (Ptr <GSource> -> Ptr <gint> -> IO <gboolean>)
@@ -121,7 +121,7 @@
 #ccall g_source_get_context , Ptr <GSource> -> IO (Ptr <GMainContext>)
 #ccall g_source_set_callback , Ptr <GSource> -> <GSourceFunc> -> <gpointer> -> <GDestroyNotify> -> IO ()
 
-#callback GSourceFunc , <gpointer> -> IO <gboolean>
+#callback_t GSourceFunc , <gpointer> -> IO <gboolean>
 
 #ccall g_source_set_callback_indirect , Ptr <GSource> -> <gpointer> -> Ptr <GSourceCallbackFuncs> -> IO ()
 #ccall g_source_add_poll , Ptr <GSource> -> Ptr <GPollFD> -> IO ()
diff --git a/src/Bindings/GLib/CoreApplicationSupport/MessageLogging.hsc b/src/Bindings/GLib/CoreApplicationSupport/MessageLogging.hsc
--- a/src/Bindings/GLib/CoreApplicationSupport/MessageLogging.hsc
+++ b/src/Bindings/GLib/CoreApplicationSupport/MessageLogging.hsc
@@ -11,7 +11,7 @@
 #num G_LOG_FATAL_MASK
 #num G_LOG_LEVEL_USER_SHIFT
 
-#callback GLogFunc , Ptr <gchar> -> <GLogLevelFlags> -> Ptr <gchar> -> <gpointer> -> IO ()
+#callback_t GLogFunc , Ptr <gchar> -> <GLogLevelFlags> -> Ptr <gchar> -> <gpointer> -> IO ()
 
 #integral_t GLogLevelFlags
 
diff --git a/src/Bindings/GLib/CoreApplicationSupport/MessageOutputAndDebuggingFunctions.hsc b/src/Bindings/GLib/CoreApplicationSupport/MessageOutputAndDebuggingFunctions.hsc
--- a/src/Bindings/GLib/CoreApplicationSupport/MessageOutputAndDebuggingFunctions.hsc
+++ b/src/Bindings/GLib/CoreApplicationSupport/MessageOutputAndDebuggingFunctions.hsc
@@ -9,7 +9,7 @@
 
 #ccall g_set_print_handler , Ptr <GPrintFunc> -> IO <GPrintFunc>
 
-#callback GPrintFunc , Ptr <gchar> -> IO ()
+#callback_t GPrintFunc , Ptr <gchar> -> IO ()
 
 #ccall g_set_printerr_handler , <GPrintFunc> -> IO <GPrintFunc>
 
diff --git a/src/Bindings/GLib/CoreApplicationSupport/Threads.hsc b/src/Bindings/GLib/CoreApplicationSupport/Threads.hsc
--- a/src/Bindings/GLib/CoreApplicationSupport/Threads.hsc
+++ b/src/Bindings/GLib/CoreApplicationSupport/Threads.hsc
@@ -45,7 +45,7 @@
 #cinline g_thread_supported , IO <gboolean>
 #ccall g_thread_get_initialized , IO <gboolean>
 
-#callback GThreadFunc , <gpointer> -> IO <gpointer>
+#callback_t GThreadFunc , <gpointer> -> IO <gpointer>
 
 #integral_t GThreadPriority
 
diff --git a/src/Bindings/GLib/DataTypes/BalancedBinaryTrees.hsc b/src/Bindings/GLib/DataTypes/BalancedBinaryTrees.hsc
--- a/src/Bindings/GLib/DataTypes/BalancedBinaryTrees.hsc
+++ b/src/Bindings/GLib/DataTypes/BalancedBinaryTrees.hsc
@@ -25,7 +25,7 @@
 #ccall g_tree_foreach , Ptr <GTree> -> <GTraverseFunc> -> <gpointer> -> IO ()
 #ccall g_tree_traverse , Ptr <GTree> -> <GTraverseFunc> -> <GTraverseType> -> <gpointer> -> IO ()
 
-#callback GTraverseFunc , <gpointer> -> <gpointer> -> <gpointer> -> IO <gboolean> 
+#callback_t GTraverseFunc , <gpointer> -> <gpointer> -> <gpointer> -> IO <gboolean> 
 
 #integral_t GTraverseType
 #num G_IN_ORDER
diff --git a/src/Bindings/GLib/DataTypes/Datasets.hsc b/src/Bindings/GLib/DataTypes/Datasets.hsc
--- a/src/Bindings/GLib/DataTypes/Datasets.hsc
+++ b/src/Bindings/GLib/DataTypes/Datasets.hsc
@@ -11,7 +11,7 @@
 #cinline g_dataset_id_set_data , <gconstpointer> -> <GQuark> -> <gpointer> -> IO ()
 #ccall g_dataset_id_set_data_full , <gconstpointer> -> <GQuark> -> <gpointer> -> <GDestroyNotify> -> IO ()
 
-#callback GDestroyNotify , <gpointer> -> IO ()
+#callback_t GDestroyNotify , <gpointer> -> IO ()
 
 #ccall g_dataset_id_get_data , <gconstpointer> -> <GQuark> -> IO <gpointer>
 #cinline g_dataset_id_remove_data , <gconstpointer> -> <GQuark> -> IO ()
@@ -25,7 +25,7 @@
 
 #ccall g_dataset_foreach , <gconstpointer> -> <GDataForeachFunc> -> <gpointer> -> IO ()
 
-#callback GDataForeachFunc , <GQuark> -> <gpointer> -> <gpointer> -> IO ()
+#callback_t GDataForeachFunc , <GQuark> -> <gpointer> -> <gpointer> -> IO ()
 
 #ccall g_dataset_destroy , <gconstpointer> -> IO ()
 
diff --git a/src/Bindings/GLib/DataTypes/DoublyLinkedLists.hsc b/src/Bindings/GLib/DataTypes/DoublyLinkedLists.hsc
--- a/src/Bindings/GLib/DataTypes/DoublyLinkedLists.hsc
+++ b/src/Bindings/GLib/DataTypes/DoublyLinkedLists.hsc
@@ -33,17 +33,17 @@
 #ccall g_list_reverse , Ptr <GList> -> IO (Ptr <GList>)
 #ccall g_list_sort , Ptr <GList> -> <GCompareFunc> -> IO (Ptr <GList>)
 
-#callback GCompareFunc , <gconstpointer> -> <gconstpointer> -> IO <gint>
+#callback_t GCompareFunc , <gconstpointer> -> <gconstpointer> -> IO <gint>
 
 #ccall g_list_insert_sorted_with_data , Ptr <GList> -> <gpointer> -> <GCompareDataFunc> -> <gpointer> -> IO (Ptr <GList>)
 #ccall g_list_sort_with_data , Ptr <GList> -> <GCompareDataFunc> -> <gpointer> -> IO (Ptr <GList>)
 
-#callback GCompareDataFunc , <gconstpointer> -> <gconstpointer> -> <gpointer> -> IO <gint>
+#callback_t GCompareDataFunc , <gconstpointer> -> <gconstpointer> -> <gpointer> -> IO <gint>
 
 #ccall g_list_concat , Ptr <GList> -> Ptr <GList> -> IO (Ptr <GList>)
 #ccall g_list_foreach , Ptr <GList> -> <GFunc> -> <gpointer> -> IO ()
 
-#callback GFunc , <gpointer> -> <gpointer> -> IO ()
+#callback_t GFunc , <gpointer> -> <gpointer> -> IO ()
 
 #ccall g_list_first , Ptr <GList> -> IO (Ptr <GList>)
 #ccall g_list_last , Ptr <GList> -> IO (Ptr <GList>)
diff --git a/src/Bindings/GLib/DataTypes/HashTables.hsc b/src/Bindings/GLib/DataTypes/HashTables.hsc
--- a/src/Bindings/GLib/DataTypes/HashTables.hsc
+++ b/src/Bindings/GLib/DataTypes/HashTables.hsc
@@ -14,8 +14,8 @@
 #ccall g_hash_table_new , <GHashFunc> -> <GEqualFunc> -> IO (Ptr <GHashTable>)
 #ccall g_hash_table_new_full , <GHashFunc> -> <GEqualFunc> -> <GDestroyNotify> -> <GDestroyNotify> -> IO (Ptr <GHashTable>)
 
-#callback GHashFunc , <gconstpointer> -> IO <guint>
-#callback GEqualFunc , <gconstpointer> -> <gconstpointer> -> IO <gboolean>
+#callback_t GHashFunc , <gconstpointer> -> IO <guint>
+#callback_t GEqualFunc , <gconstpointer> -> <gconstpointer> -> IO <gboolean>
 
 #ccall g_hash_table_insert , Ptr <GHashTable> -> <gpointer> -> <gpointer> -> IO ()
 #ccall g_hash_table_replace , Ptr <GHashTable> -> <gpointer> -> <gpointer> -> IO ()
@@ -25,7 +25,7 @@
 #ccall g_hash_table_foreach , Ptr <GHashTable> -> <GHFunc> -> <gpointer> -> IO ()
 #ccall g_hash_table_find , Ptr <GHashTable> -> <GHRFunc> -> <gpointer> -> IO <gpointer>
 
-#callback GHFunc , <gpointer> -> <gpointer> -> <gpointer> -> IO ()
+#callback_t GHFunc , <gpointer> -> <gpointer> -> <gpointer> -> IO ()
 
 #ccall g_hash_table_remove , Ptr <GHashTable> -> <gconstpointer> -> IO <gboolean>
 #ccall g_hash_table_steal , Ptr <GHashTable> -> <gconstpointer> -> IO <gboolean>
@@ -36,7 +36,7 @@
 #ccall g_hash_table_get_keys , Ptr <GHashTable> -> IO (Ptr <GList>)
 #ccall g_hash_table_get_values , Ptr <GHashTable> -> IO (Ptr <GList>)
 
-#callback GHRFunc , <gpointer> -> <gpointer> -> <gpointer> -> IO <gboolean>
+#callback_t GHRFunc , <gpointer> -> <gpointer> -> <gpointer> -> IO <gboolean>
 
 #ccall g_hash_table_destroy , Ptr <GHashTable> -> IO ()
 #ccall g_hash_table_ref , Ptr <GHashTable> -> IO (Ptr <GHashTable>)
diff --git a/src/Bindings/GLib/DataTypes/NAryTrees.hsc b/src/Bindings/GLib/DataTypes/NAryTrees.hsc
--- a/src/Bindings/GLib/DataTypes/NAryTrees.hsc
+++ b/src/Bindings/GLib/DataTypes/NAryTrees.hsc
@@ -19,7 +19,7 @@
 #ccall g_node_new , <gpointer> -> IO (Ptr <GNode>)
 #ccall g_node_copy , Ptr <GNode> -> IO (Ptr <GNode>)
 
-#callback GCopyFunc , <gconstpointer> -> <gpointer> -> IO <gpointer> 
+#callback_t GCopyFunc , <gconstpointer> -> <gpointer> -> IO <gpointer> 
 
 #ccall g_node_copy_deep , Ptr <GNode> -> <GCopyFunc> -> <gpointer> -> IO (Ptr <GNode>)
 
@@ -47,11 +47,11 @@
 #num G_TRAVERSE_LEAFS
 #num G_TRAVERSE_NON_LEAFS
 
-#callback GNodeTraverseFunc , Ptr <GNode> -> <gpointer> -> IO <gboolean> 
+#callback_t GNodeTraverseFunc , Ptr <GNode> -> <gpointer> -> IO <gboolean> 
 
 #ccall g_node_children_foreach , Ptr <GNode> -> <GTraverseFlags> -> <GNodeForeachFunc> -> <gpointer> -> IO ()
 
-#callback GNodeForeachFunc , Ptr <GNode> -> <gpointer> -> IO ()
+#callback_t GNodeForeachFunc , Ptr <GNode> -> <gpointer> -> IO ()
 
 #ccall g_node_get_root , Ptr <GNode> -> IO (Ptr <GNode>)
 #ccall g_node_find , Ptr <GNode> -> <GTraverseType> -> <GTraverseFlags> -> <gpointer> -> IO (Ptr <GNode>)
diff --git a/src/Bindings/GLib/Utilities/CommandlineOptionParser.hsc b/src/Bindings/GLib/Utilities/CommandlineOptionParser.hsc
--- a/src/Bindings/GLib/Utilities/CommandlineOptionParser.hsc
+++ b/src/Bindings/GLib/Utilities/CommandlineOptionParser.hsc
@@ -17,7 +17,7 @@
 
 #num G_OPTION_ERROR
 
-#callback GOptionArgFunc , Ptr <gchar> -> Ptr <gchar> -> <gpointer> -> Ptr (Ptr <GError>) -> IO <gboolean>
+#callback_t GOptionArgFunc , Ptr <gchar> -> Ptr <gchar> -> <gpointer> -> Ptr (Ptr <GError>) -> IO <gboolean>
 
 #opaque_t GOptionContext
 
@@ -28,7 +28,7 @@
 #ccall g_option_context_get_description , Ptr <GOptionContext> -> IO (Ptr <gchar>)
 
 
-#callback GTranslateFunc , Ptr <gchar> -> <gpointer> -> IO (Ptr <gchar>)
+#callback_t GTranslateFunc , Ptr <gchar> -> <gpointer> -> IO (Ptr <gchar>)
 
 #ccall g_option_context_set_translate_func , Ptr <GOptionContext> -> <GTranslateFunc> -> <gpointer> -> <GDestroyNotify> -> IO ()
 #ccall g_option_context_set_translation_domain , Ptr <GOptionContext> -> Ptr <gchar> -> IO ()
@@ -86,11 +86,11 @@
 #ccall g_option_group_free , Ptr <GOptionGroup> -> IO ()
 #ccall g_option_group_add_entries , Ptr <GOptionGroup> -> Ptr <GOptionEntry> -> IO ()
 
-#callback GOptionParseFunc , Ptr <GOptionContext> -> Ptr <GOptionGroup> -> <gpointer> -> Ptr (Ptr <GError>) -> IO <gboolean>
+#callback_t GOptionParseFunc , Ptr <GOptionContext> -> Ptr <GOptionGroup> -> <gpointer> -> Ptr (Ptr <GError>) -> IO <gboolean>
 
 #ccall g_option_group_set_parse_hooks , Ptr <GOptionGroup> -> <GOptionParseFunc> -> <GOptionParseFunc> -> IO ()
 
-#callback GOptionErrorFunc , Ptr <GOptionContext> -> Ptr <GOptionGroup> -> <gpointer> -> Ptr (Ptr <GError>) -> IO ()
+#callback_t GOptionErrorFunc , Ptr <GOptionContext> -> Ptr <GOptionGroup> -> <gpointer> -> Ptr (Ptr <GError>) -> IO ()
 
 #ccall g_option_group_set_error_hook , Ptr <GOptionGroup> -> <GOptionErrorFunc> -> IO ()
 #ccall g_option_group_set_translate_func , Ptr <GOptionGroup> -> <GTranslateFunc> -> <gpointer> -> <GDestroyNotify> -> IO ()
