diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,29 @@
+Copyright (c) <2009>, <Maurício C. Antunes>
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+    * Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in the
+    documentation and/or other materials provided with the distribution.
+
+    * Neither the name of the author nor the names of contributors
+    may be used to endorse or promote products derived from this
+    software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/Setup.hs b/Setup.hs
new file mode 100644
--- /dev/null
+++ b/Setup.hs
@@ -0,0 +1,2 @@
+import Distribution.Simple
+main = defaultMain
diff --git a/bindings-glib.cabal b/bindings-glib.cabal
new file mode 100644
--- /dev/null
+++ b/bindings-glib.cabal
@@ -0,0 +1,54 @@
+cabal-version: >= 1.2.3
+name: bindings-glib
+homepage: http://bitbucket.org/mauricio/bindings-glib
+synopsis:
+  Low level bindings to GLib.
+version: 0.1
+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-glib/issues
+library
+  hs-source-dirs: src
+  extensions:
+    ForeignFunctionInterface
+  build-depends:
+    base >= 3 && < 5,
+    bindings-DSL >= 1.0 && < 1.1
+  exposed-modules:
+    Bindings.GLib
+    Bindings.GLib.CoreApplicationSupport
+    Bindings.GLib.CoreApplicationSupport.AsynchronousQueues
+    Bindings.GLib.CoreApplicationSupport.ErrorReporting
+    Bindings.GLib.CoreApplicationSupport.MainEventLoop
+    Bindings.GLib.CoreApplicationSupport.MemoryAllocation
+    Bindings.GLib.CoreApplicationSupport.MessageLogging
+    Bindings.GLib.CoreApplicationSupport.MessageOutputAndDebuggingFunctions
+    Bindings.GLib.CoreApplicationSupport.ThreadPools
+    Bindings.GLib.CoreApplicationSupport.Threads
+    Bindings.GLib.DataTypes
+    Bindings.GLib.DataTypes.Datasets
+    Bindings.GLib.DataTypes.DoublyLinkedLists
+    Bindings.GLib.DataTypes.MemorySlices
+    Bindings.GLib.DataTypes.Quarks
+    Bindings.GLib.DataTypes.StringChunks
+    Bindings.GLib.DataTypes.TrashStacks
+    Bindings.GLib.Fundamentals
+    Bindings.GLib.Fundamentals.AtomicOperations
+    Bindings.GLib.Fundamentals.BasicTypes
+    Bindings.GLib.Fundamentals.ByteOrderMacros
+    Bindings.GLib.Fundamentals.LimitsOfBasicTypes
+    Bindings.GLib.Fundamentals.MiscellaneousMacros
+    Bindings.GLib.Fundamentals.NumericalDefinitions
+    Bindings.GLib.Fundamentals.StandardMacros
+    Bindings.GLib.Fundamentals.TypeConversionMacros
+    Bindings.GLib.Fundamentals.VersionInformation
+    Bindings.GLib.Utilities
+    Bindings.GLib.Utilities.CommandlineOptionParser
+    Bindings.GLib.Utilities.DateAndTimeFunctions
+    Bindings.GLib.Utilities.HostnameUtilities
+  c-sources: src/inlines.c
+  pkgconfig-depends: glib-2.0 >= 2.22.2
diff --git a/src/Bindings/GLib.hs b/src/Bindings/GLib.hs
new file mode 100644
--- /dev/null
+++ b/src/Bindings/GLib.hs
@@ -0,0 +1,1 @@
+module Bindings.GLib (module Bindings.GLib.CoreApplicationSupport,module Bindings.GLib.DataTypes,module Bindings.GLib.Fundamentals,module Bindings.GLib.Utilities) where {import Bindings.GLib.CoreApplicationSupport;import Bindings.GLib.DataTypes;import Bindings.GLib.Fundamentals;import Bindings.GLib.Utilities}
diff --git a/src/Bindings/GLib/CoreApplicationSupport.hs b/src/Bindings/GLib/CoreApplicationSupport.hs
new file mode 100644
--- /dev/null
+++ b/src/Bindings/GLib/CoreApplicationSupport.hs
@@ -0,0 +1,1 @@
+module Bindings.GLib.CoreApplicationSupport (module Bindings.GLib.CoreApplicationSupport.AsynchronousQueues,module Bindings.GLib.CoreApplicationSupport.ErrorReporting,module Bindings.GLib.CoreApplicationSupport.MainEventLoop,module Bindings.GLib.CoreApplicationSupport.MemoryAllocation,module Bindings.GLib.CoreApplicationSupport.MessageLogging,module Bindings.GLib.CoreApplicationSupport.MessageOutputAndDebuggingFunctions,module Bindings.GLib.CoreApplicationSupport.ThreadPools,module Bindings.GLib.CoreApplicationSupport.Threads) where {import Bindings.GLib.CoreApplicationSupport.AsynchronousQueues;import Bindings.GLib.CoreApplicationSupport.ErrorReporting;import Bindings.GLib.CoreApplicationSupport.MainEventLoop;import Bindings.GLib.CoreApplicationSupport.MemoryAllocation;import Bindings.GLib.CoreApplicationSupport.MessageLogging;import Bindings.GLib.CoreApplicationSupport.MessageOutputAndDebuggingFunctions;import Bindings.GLib.CoreApplicationSupport.ThreadPools;import Bindings.GLib.CoreApplicationSupport.Threads}
diff --git a/src/Bindings/GLib/CoreApplicationSupport/AsynchronousQueues.hsc b/src/Bindings/GLib/CoreApplicationSupport/AsynchronousQueues.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/GLib/CoreApplicationSupport/AsynchronousQueues.hsc
@@ -0,0 +1,36 @@
+#include <bindings.dsl.h>
+#include <glib.h>
+
+-- | <http://library.gnome.org/devel/glib/stable/glib-Asynchronous-Queues.html>
+
+module Bindings.GLib.CoreApplicationSupport.AsynchronousQueues where
+#strict_import
+import Bindings.GLib.Fundamentals
+import Bindings.GLib.Utilities.DateAndTimeFunctions
+import Bindings.GLib.DataTypes.DoublyLinkedLists
+import Bindings.GLib.DataTypes.Datasets
+
+#opaque_t GAsyncQueue
+
+#ccall g_async_queue_new , IO (Ptr <GAsyncQueue>)
+#ccall g_async_queue_new_full , <GDestroyNotify> -> IO (Ptr <GAsyncQueue>)
+#ccall g_async_queue_ref , Ptr <GAsyncQueue> -> IO (Ptr <GAsyncQueue>)
+#ccall g_async_queue_unref , Ptr <GAsyncQueue> -> IO ()
+#ccall g_async_queue_push , Ptr <GAsyncQueue> -> <gpointer> -> IO ()
+#ccall g_async_queue_push_sorted , Ptr <GAsyncQueue> -> <gpointer> -> <GCompareDataFunc> -> <gpointer> -> IO ()
+#ccall g_async_queue_pop , Ptr <GAsyncQueue> -> IO <gpointer>
+#ccall g_async_queue_try_pop , Ptr <GAsyncQueue> -> IO <gpointer>
+#ccall g_async_queue_timed_pop , Ptr <GAsyncQueue> -> Ptr <GTimeVal> -> IO <gpointer>
+#ccall g_async_queue_length , Ptr <GAsyncQueue> -> IO <gint>
+#ccall g_async_queue_sort , Ptr <GAsyncQueue> -> <GCompareDataFunc> -> <gpointer> -> IO ()
+
+#ccall g_async_queue_lock , Ptr <GAsyncQueue> -> IO ()
+#ccall g_async_queue_unlock , Ptr <GAsyncQueue> -> IO ()
+#ccall g_async_queue_push_unlocked , Ptr <GAsyncQueue> -> <gpointer> -> IO ()
+#ccall g_async_queue_push_sorted_unlocked , Ptr <GAsyncQueue> -> <gpointer> -> <GCompareDataFunc> -> <gpointer> -> IO ()
+#ccall g_async_queue_pop_unlocked , Ptr <GAsyncQueue> -> IO <gpointer>
+#ccall g_async_queue_try_pop_unlocked , Ptr <GAsyncQueue> -> IO <gpointer>
+#ccall g_async_queue_timed_pop_unlocked , Ptr <GAsyncQueue> -> Ptr <GTimeVal> -> IO <gpointer>
+#ccall g_async_queue_length_unlocked , Ptr <GAsyncQueue> -> IO <gint>
+#ccall g_async_queue_sort_unlocked , Ptr <GAsyncQueue> -> <GCompareDataFunc> -> <gpointer> -> IO ()
+
diff --git a/src/Bindings/GLib/CoreApplicationSupport/ErrorReporting.hsc b/src/Bindings/GLib/CoreApplicationSupport/ErrorReporting.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/GLib/CoreApplicationSupport/ErrorReporting.hsc
@@ -0,0 +1,24 @@
+#include <bindings.dsl.h>
+#include <glib.h>
+
+-- | <http://library.gnome.org/devel/glib/stable/glib-Error-Reporting.html>
+
+module Bindings.GLib.CoreApplicationSupport.ErrorReporting where
+#strict_import
+import Bindings.GLib.Fundamentals
+import Bindings.GLib.DataTypes.Quarks
+
+#starttype GError
+#field domain , <GQuark>
+#field code , <gint>
+#field message , Ptr <gchar>
+#stoptype
+
+#ccall g_error_new_literal , <GQuark> -> <gint> -> Ptr <gchar> -> IO (Ptr <GError>)
+#ccall g_error_free , Ptr <GError> -> IO ()
+#ccall g_error_copy , Ptr <GError> -> IO (Ptr <GError>)
+#ccall g_error_matches , Ptr <GError> -> <GQuark> -> <gint> -> IO <gboolean>
+#ccall g_set_error_literal , Ptr (Ptr <GError>) -> <GQuark> -> <gint> -> Ptr <gchar> -> IO ()
+#ccall g_propagate_error , Ptr (Ptr <GError>) -> Ptr <GError> -> IO ()
+#ccall g_clear_error , Ptr (Ptr <GError>) -> IO ()
+
diff --git a/src/Bindings/GLib/CoreApplicationSupport/MainEventLoop.hsc b/src/Bindings/GLib/CoreApplicationSupport/MainEventLoop.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/GLib/CoreApplicationSupport/MainEventLoop.hsc
@@ -0,0 +1,132 @@
+#include <bindings.dsl.h>
+#include <glib.h>
+
+-- | <http://library.gnome.org/devel/glib/stable/glib-The-Main-Event-Loop.html>
+
+module Bindings.GLib.CoreApplicationSupport.MainEventLoop where
+#strict_import
+import Bindings.GLib.Fundamentals
+import Bindings.GLib.Utilities.DateAndTimeFunctions
+import Bindings.GLib.DataTypes.Datasets
+import Bindings.GLib.CoreApplicationSupport.Threads
+
+#opaque_t GMainLoop
+
+#ccall g_main_loop_new , Ptr <GMainContext> -> <gboolean> -> IO (Ptr <GMainLoop>)
+#ccall g_main_loop_ref , Ptr <GMainLoop> -> IO (Ptr <GMainLoop>)
+#ccall g_main_loop_unref , Ptr <GMainLoop> -> IO ()
+#ccall g_main_loop_run , Ptr <GMainLoop> -> IO ()
+#ccall g_main_loop_quit , Ptr <GMainLoop> -> IO ()
+#ccall g_main_loop_is_running , Ptr <GMainLoop> -> IO <gboolean>
+#ccall g_main_loop_get_context , Ptr <GMainLoop> -> IO (Ptr <GMainContext>)
+
+#num G_PRIORITY_HIGH
+#num G_PRIORITY_DEFAULT
+#num G_PRIORITY_HIGH_IDLE
+#num G_PRIORITY_DEFAULT_IDLE
+#num G_PRIORITY_LOW
+
+#opaque_t GMainContext
+
+#ccall g_main_context_new , IO (Ptr <GMainContext>)
+#ccall g_main_context_ref , Ptr <GMainContext> -> IO (Ptr <GMainContext>)
+#ccall g_main_context_unref , Ptr <GMainContext> -> IO ()
+#ccall g_main_context_default , IO (Ptr <GMainContext>)
+#ccall g_main_context_iteration , Ptr <GMainContext> -> <gboolean> -> IO <gboolean>
+#ccall g_main_context_pending , Ptr <GMainContext> -> IO <gboolean>
+#ccall g_main_context_find_source_by_id , Ptr <GMainContext> -> <guint> -> IO (Ptr <GSource>)
+#ccall g_main_context_find_source_by_user_data , Ptr <GMainContext> -> <gpointer> -> IO (Ptr <GSource>)
+#ccall g_main_context_find_source_by_funcs_user_data , Ptr <GMainContext> -> Ptr <GSourceFuncs> -> <gpointer> -> IO (Ptr <GSource>)
+#ccall g_main_context_wakeup , Ptr <GMainContext> -> IO ()
+#ccall g_main_context_acquire , Ptr <GMainContext> -> IO <gboolean>
+#ccall g_main_context_release , Ptr <GMainContext> -> IO ()
+#ccall g_main_context_is_owner , Ptr <GMainContext> -> IO <gboolean>
+#ccall g_main_context_wait , Ptr <GMainContext> -> Ptr <GCond> -> Ptr <GMutex> -> IO <gboolean>
+#ccall g_main_context_prepare , Ptr <GMainContext> -> Ptr <gint> -> IO <gboolean>
+#ccall g_main_context_query , Ptr <GMainContext> -> <gint> -> Ptr <gint> -> Ptr <GPollFD> -> <gint> -> IO <gint>
+#ccall g_main_context_check , Ptr <GMainContext> -> <gint> -> Ptr <GPollFD> -> <gint> -> IO <gint>
+#ccall g_main_context_dispatch , Ptr <GMainContext> -> IO ()
+#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>
+
+#ccall g_main_context_add_poll , Ptr <GMainContext> -> Ptr <GPollFD> -> <gint> -> IO ()
+#ccall g_main_context_remove_poll , Ptr <GMainContext> -> Ptr <GPollFD> -> IO ()
+#ccall g_main_depth , IO <gint>
+#ccall g_main_current_source , IO (Ptr <GSource>)
+
+#ccall g_main_context_get_thread_default , IO (Ptr <GMainContext>)
+#ccall g_main_context_push_thread_default , Ptr <GMainContext> -> IO ()
+#ccall g_main_context_pop_thread_default , Ptr <GMainContext> -> IO ()
+
+#ccall g_timeout_source_new , <guint> -> IO (Ptr <GSource>)
+#ccall g_timeout_source_new_seconds , <guint> -> IO (Ptr <GSource>)
+#ccall g_timeout_add , <guint> -> <GSourceFunc> -> <gpointer> -> IO <guint>
+#ccall g_timeout_add_full , <gint> -> <guint> -> <GSourceFunc> -> <gpointer> -> <GDestroyNotify> -> IO <guint>
+#ccall g_timeout_add_seconds , <guint> -> <GSourceFunc> -> <gpointer> -> IO <guint>
+#ccall g_timeout_add_seconds_full , <gint> -> <guint> -> <GSourceFunc> -> <gpointer> -> <GDestroyNotify> -> IO <guint>
+
+#ccall g_idle_source_new , IO (Ptr <GSource>)
+#ccall g_idle_add , <GSourceFunc> -> <gpointer> -> IO <guint>
+#ccall g_idle_add_full , <gint> -> <GSourceFunc> -> <gpointer> -> <GDestroyNotify> -> IO <guint>
+#ccall g_idle_remove_by_data , <gpointer> -> IO <gboolean>
+
+#integral_t GPid
+
+#callback 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>
+#ccall g_child_watch_add_full , <gint> -> <GPid> -> <GChildWatchFunc> -> <gpointer> -> <GDestroyNotify> -> IO <guint>
+
+#starttype GPollFD
+#field events , <gushort>
+#field revents , <gushort>
+#stoptype
+
+#ccall g_poll , Ptr <GPollFD> -> <guint> -> <gint> -> IO <gint>
+
+#opaque_t GSource
+
+#callback GSourceDummyMarshal , IO ()
+
+#starttype GSourceFuncs
+#field prepare , FunPtr (Ptr <GSource> -> Ptr <gint> -> IO <gboolean>)
+#field check , FunPtr (Ptr <GSource> -> IO <gboolean>)
+#field dispatch , FunPtr (Ptr <GSource> -> <GSourceFunc> -> <gpointer> -> IO <gboolean>)
+#field finalize , FunPtr (Ptr <GSource> -> IO ())
+#field closure_callback , <GSourceFunc>
+#field closure_marshal , <GSourceDummyMarshal>
+#stoptype
+
+#starttype GSourceCallbackFuncs
+#field ref , FunPtr (<gpointer> -> IO ())
+#field unref , FunPtr (<gpointer> -> IO ())
+#field get , FunPtr (<gpointer> -> Ptr <GSource> -> Ptr <GSourceFunc> -> Ptr <gpointer> -> IO ())
+#stoptype
+
+#ccall g_source_new , Ptr <GSourceFuncs> -> <guint> -> IO (Ptr <GSource>)
+#ccall g_source_ref , Ptr <GSource> -> IO (Ptr <GSource>)
+#ccall g_source_unref , Ptr <GSource> -> IO ()
+#ccall g_source_set_funcs , Ptr <GSource> -> Ptr <GSourceFuncs> -> IO ()
+#ccall g_source_attach , Ptr <GSource> -> Ptr <GMainContext> -> IO <guint>
+#ccall g_source_destroy , Ptr <GSource> -> IO ()
+#ccall g_source_is_destroyed , Ptr <GSource> -> IO <gboolean>
+#ccall g_source_set_priority , Ptr <GSource> -> <gint> -> IO ()
+#ccall g_source_get_priority , Ptr <GSource> -> IO <gint>
+#ccall g_source_set_can_recurse , Ptr <GSource> -> <gboolean> -> IO ()
+#ccall g_source_get_can_recurse , Ptr <GSource> -> IO <gboolean>
+#ccall g_source_get_id , Ptr <GSource> -> IO <guint>
+#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>
+
+#ccall g_source_set_callback_indirect , Ptr <GSource> -> <gpointer> -> Ptr <GSourceCallbackFuncs> -> IO ()
+#ccall g_source_add_poll , Ptr <GSource> -> Ptr <GPollFD> -> IO ()
+#ccall g_source_remove_poll , Ptr <GSource> -> Ptr <GPollFD> -> IO ()
+#ccall g_source_get_current_time , Ptr <GSource> -> Ptr <GTimeVal> -> IO ()
+#ccall g_source_remove , <guint> -> IO <gboolean>
+#ccall g_source_remove_by_funcs_user_data , Ptr <GSourceFuncs> -> <gpointer> -> IO <gboolean>
+#ccall g_source_remove_by_user_data , <gpointer> -> IO <gboolean>
diff --git a/src/Bindings/GLib/CoreApplicationSupport/MemoryAllocation.hsc b/src/Bindings/GLib/CoreApplicationSupport/MemoryAllocation.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/GLib/CoreApplicationSupport/MemoryAllocation.hsc
@@ -0,0 +1,35 @@
+#include <bindings.dsl.h>
+#include <glib.h>
+
+-- | <http://library.gnome.org/devel/glib/stable/glib-Memory-Allocation.html>
+
+module Bindings.GLib.CoreApplicationSupport.MemoryAllocation where
+#strict_import
+import Bindings.GLib.Fundamentals
+
+#ccall g_malloc , <gsize> -> IO <gpointer>
+#ccall g_malloc0 , <gsize> -> IO <gpointer>
+#ccall g_realloc , <gpointer> -> <gsize> -> IO <gpointer>
+#ccall g_try_malloc , <gsize> -> IO <gpointer>
+#ccall g_try_malloc0 , <gsize> -> IO <gpointer>
+#ccall g_try_realloc , <gpointer> -> <gsize> -> IO <gpointer>
+#ccall g_free , <gpointer> -> IO ()
+#globalvar g_mem_gc_friendly , <gboolean>
+
+#ccall g_memdup , <gconstpointer> -> <guint> -> IO <gpointer>
+
+#starttype GMemVTable
+#field malloc , FunPtr (<gsize> -> IO <gpointer>)
+#field realloc , FunPtr (<gpointer> -> <gsize> -> IO <gpointer>)
+#field free , FunPtr (<gpointer> -> IO ())
+#field calloc , FunPtr (<gsize> -> <gsize> -> IO <gpointer>)
+#field try_malloc , FunPtr (<gsize> -> IO <gpointer>)
+#field try_realloc , FunPtr (<gpointer> -> <gsize> -> IO <gpointer>)
+#stoptype
+
+#ccall g_mem_set_vtable , Ptr <GMemVTable> -> IO ()
+#ccall g_mem_is_system_malloc , IO <gboolean>
+
+#globalvar glib_mem_profiler_table , Ptr <GMemVTable>
+#ccall g_mem_profile , IO ()
+
diff --git a/src/Bindings/GLib/CoreApplicationSupport/MessageLogging.hsc b/src/Bindings/GLib/CoreApplicationSupport/MessageLogging.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/GLib/CoreApplicationSupport/MessageLogging.hsc
@@ -0,0 +1,34 @@
+#include <bindings.dsl.h>
+#include <glib.h>
+
+-- | <http://library.gnome.org/devel/glib/stable/glib-Message-Logging.html>
+
+module Bindings.GLib.CoreApplicationSupport.MessageLogging where
+#strict_import
+import Bindings.GLib.Fundamentals
+
+#pointer G_LOG_DOMAIN
+#num G_LOG_FATAL_MASK
+#num G_LOG_LEVEL_USER_SHIFT
+
+#callback GLogFunc , Ptr <gchar> -> <GLogLevelFlags> -> Ptr <gchar> -> <gpointer> -> IO ()
+
+#integral_t GLogLevelFlags
+
+#num G_LOG_FLAG_RECURSION
+#num G_LOG_FLAG_FATAL
+#num G_LOG_LEVEL_ERROR
+#num G_LOG_LEVEL_CRITICAL
+#num G_LOG_LEVEL_WARNING
+#num G_LOG_LEVEL_MESSAGE
+#num G_LOG_LEVEL_INFO
+#num G_LOG_LEVEL_DEBUG
+#num G_LOG_LEVEL_MASK
+
+#ccall g_log_set_handler , Ptr <gchar> -> <GLogLevelFlags> -> <GLogFunc> -> <gpointer> -> IO <guint>
+#ccall g_log_remove_handler , Ptr <gchar> -> <guint> -> IO ()
+#ccall g_log_set_always_fatal , <GLogLevelFlags> -> IO <GLogLevelFlags>
+#ccall g_log_set_fatal_mask , Ptr <gchar> -> <GLogLevelFlags> -> IO <GLogLevelFlags>
+#ccall g_log_default_handler , Ptr <gchar> -> <GLogLevelFlags> -> Ptr <gchar> -> <gpointer> -> IO ()
+#ccall g_log_set_default_handler , <GLogFunc> -> <gpointer> -> IO <GLogFunc>
+
diff --git a/src/Bindings/GLib/CoreApplicationSupport/MessageOutputAndDebuggingFunctions.hsc b/src/Bindings/GLib/CoreApplicationSupport/MessageOutputAndDebuggingFunctions.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/GLib/CoreApplicationSupport/MessageOutputAndDebuggingFunctions.hsc
@@ -0,0 +1,18 @@
+#include <bindings.dsl.h>
+#include <glib.h>
+
+-- | <http://library.gnome.org/devel/glib/stable/glib-Warnings-and-Assertions.html>
+
+module Bindings.GLib.CoreApplicationSupport.MessageOutputAndDebuggingFunctions where
+#strict_import
+import Bindings.GLib.Fundamentals
+
+#ccall g_set_print_handler , Ptr <GPrintFunc> -> IO <GPrintFunc>
+
+#callback GPrintFunc , Ptr <gchar> -> IO ()
+
+#ccall g_set_printerr_handler , <GPrintFunc> -> IO <GPrintFunc>
+
+#ccall g_on_error_query , Ptr <gchar> -> IO ()
+#ccall g_on_error_stack_trace , Ptr <gchar> -> IO ()
+
diff --git a/src/Bindings/GLib/CoreApplicationSupport/ThreadPools.hsc b/src/Bindings/GLib/CoreApplicationSupport/ThreadPools.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/GLib/CoreApplicationSupport/ThreadPools.hsc
@@ -0,0 +1,32 @@
+#include <bindings.dsl.h>
+#include <glib.h>
+
+-- | <http://library.gnome.org/devel/glib/stable/glib-Thread-Pools.html>
+
+module Bindings.GLib.CoreApplicationSupport.ThreadPools where
+#strict_import
+import Bindings.GLib.Fundamentals
+import Bindings.GLib.CoreApplicationSupport.ErrorReporting
+import Bindings.GLib.DataTypes.DoublyLinkedLists
+
+#starttype GThreadPool
+#field func , <GFunc>
+#field user_data , <gpointer>
+#field exclusive , <gboolean>
+#stoptype
+
+#ccall g_thread_pool_new , <GFunc> -> <gpointer> -> <gint> -> <gboolean> -> Ptr (Ptr <GError>) -> IO (Ptr <GThreadPool>)
+#ccall g_thread_pool_push , Ptr <GThreadPool> -> <gpointer> -> Ptr (Ptr <GError>) -> IO ()
+#ccall g_thread_pool_set_max_threads , Ptr <GThreadPool> -> <gint> -> Ptr (Ptr <GError>) -> IO ()
+#ccall g_thread_pool_get_max_threads , Ptr <GThreadPool> -> IO <gint>
+#ccall g_thread_pool_get_num_threads , Ptr <GThreadPool> -> IO <guint>
+#ccall g_thread_pool_unprocessed , Ptr <GThreadPool> -> IO <guint>
+#ccall g_thread_pool_free , Ptr <GThreadPool> -> <gboolean> -> <gboolean> -> IO ()
+#ccall g_thread_pool_set_max_unused_threads , <gint> -> IO ()
+#ccall g_thread_pool_get_max_unused_threads , IO <gint>
+#ccall g_thread_pool_get_num_unused_threads , IO <guint>
+#ccall g_thread_pool_stop_unused_threads , IO ()
+#ccall g_thread_pool_set_sort_function , Ptr <GThreadPool> -> <GCompareDataFunc> -> <gpointer> -> IO ()
+#ccall g_thread_pool_set_max_idle_time , <guint> -> IO ()
+#ccall g_thread_pool_get_max_idle_time , IO <guint>
+
diff --git a/src/Bindings/GLib/CoreApplicationSupport/Threads.hsc b/src/Bindings/GLib/CoreApplicationSupport/Threads.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/GLib/CoreApplicationSupport/Threads.hsc
@@ -0,0 +1,145 @@
+#include <bindings.dsl.h>
+#include <glib.h>
+
+-- | <http://library.gnome.org/devel/glib/stable/glib-Threads.html>
+
+module Bindings.GLib.CoreApplicationSupport.Threads where
+#strict_import
+import Bindings.GLib.Fundamentals
+import Bindings.GLib.Utilities.DateAndTimeFunctions
+import Bindings.GLib.DataTypes.Datasets
+import Bindings.GLib.DataTypes.DoublyLinkedLists
+import Bindings.GLib.CoreApplicationSupport.ErrorReporting
+
+#num G_THREAD_ERROR
+
+#integral_t GThreadError
+
+#num G_THREAD_ERROR_AGAIN
+
+#starttype GThreadFunctions
+#field mutex_new , FunPtr (IO (Ptr <GMutex>))
+#field mutex_lock , FunPtr (Ptr <GMutex> -> IO ())
+#field mutex_trylock , FunPtr (Ptr <GMutex> -> IO <gboolean>)
+#field mutex_unlock , FunPtr (Ptr <GMutex> -> IO ())
+#field mutex_free , FunPtr (Ptr <GMutex> -> IO ())
+#field cond_new , FunPtr (IO (Ptr <GCond>))
+#field cond_signal , FunPtr (Ptr <GCond> -> IO ())
+#field cond_broadcast , FunPtr (Ptr <GCond> -> IO ())
+#field cond_wait , FunPtr (Ptr <GCond> -> Ptr <GMutex> -> IO ())
+#field cond_timed_wait , FunPtr (Ptr <GCond> -> Ptr <GMutex> -> Ptr <GTimeVal> -> IO <gboolean>)
+#field cond_free , FunPtr (Ptr <GCond> -> IO ())
+#field private_new , FunPtr (<GDestroyNotify> -> IO (Ptr <GPrivate>))
+#field private_get , FunPtr (Ptr <GPrivate> -> IO <gpointer>)
+#field private_set , FunPtr (Ptr <GPrivate> -> <gpointer> -> IO ())
+#field thread_create , FunPtr (<GThreadFunc> -> <gpointer> -> <gulong> -> <gboolean> -> <gboolean> -> <GThreadPriority> -> <gpointer> -> Ptr (Ptr <GError>) -> IO ())
+#field thread_yield , FunPtr (IO ())
+#field thread_join , FunPtr (<gpointer> -> IO ())
+#field thread_exit , FunPtr (IO ())
+#field thread_set_priority , FunPtr (<gpointer> -> <GThreadPriority> -> IO ())
+#field thread_self , FunPtr (<gpointer> -> IO ())
+#field thread_equal , FunPtr (<gpointer> -> <gpointer> -> IO <gboolean>)
+#stoptype
+
+#ccall g_thread_init , Ptr <GThreadFunctions> -> IO ()
+#ccall g_thread_supported , IO <gboolean>
+#ccall g_thread_get_initialized , IO <gboolean>
+
+#callback GThreadFunc , <gpointer> -> IO <gpointer>
+
+#integral_t GThreadPriority
+
+#num G_THREAD_PRIORITY_LOW
+#num G_THREAD_PRIORITY_NORMAL
+#num G_THREAD_PRIORITY_HIGH
+#num G_THREAD_PRIORITY_URGENT
+
+#opaque_t GThread
+
+#ccall g_thread_create , <GThreadFunc> -> <gpointer> -> <gboolean> -> Ptr (Ptr <GError>) -> IO (Ptr <GThread>)
+#ccall g_thread_create_full , <GThreadFunc> -> <gpointer> -> <gulong> -> <gboolean> -> <gboolean> -> <GThreadPriority> -> Ptr (Ptr <GError>) -> IO (Ptr <GThread>)
+#ccall g_thread_self , IO (Ptr <GThread>)
+#ccall g_thread_join , Ptr <GThread> -> IO <gpointer>
+#ccall g_thread_set_priority , Ptr <GThread> -> <GThreadPriority> -> IO ()
+#ccall g_thread_yield , IO ()
+#ccall g_thread_exit , <gpointer> -> IO ()
+#ccall g_thread_foreach , <GFunc> -> <gpointer> -> IO ()
+
+#opaque_t GMutex
+
+#ccall g_mutex_new , IO (Ptr <GMutex>)
+#ccall g_mutex_lock , Ptr <GMutex> -> IO ()
+#ccall g_mutex_trylock , Ptr <GMutex> -> IO <gboolean>
+#ccall g_mutex_unlock , Ptr <GMutex> -> IO ()
+#ccall g_mutex_free , Ptr <GMutex> -> IO ()
+
+#starttype GStaticMutex
+#stoptype
+
+#cinline g_static_mutex_init , Ptr <GStaticMutex> -> IO ()
+#cinline g_static_mutex_lock , Ptr <GStaticMutex> -> IO ()
+#cinline g_static_mutex_trylock , Ptr <GStaticMutex> -> IO <gboolean>
+#cinline g_static_mutex_unlock , Ptr <GStaticMutex> -> IO ()
+#cinline g_static_mutex_get_mutex , Ptr <GStaticMutex> -> IO (Ptr <GMutex>) 
+#cinline g_static_mutex_free , Ptr <GStaticMutex> -> IO ()
+
+#starttype GStaticRecMutex
+#stoptype
+
+#ccall g_static_rec_mutex_init , Ptr <GStaticRecMutex> -> IO ()
+#ccall g_static_rec_mutex_lock , Ptr <GStaticRecMutex> -> IO ()
+#ccall g_static_rec_mutex_trylock , Ptr <GStaticRecMutex> -> IO <gboolean>
+#ccall g_static_rec_mutex_unlock , Ptr <GStaticRecMutex> -> IO ()
+#ccall g_static_rec_mutex_lock_full , Ptr <GStaticRecMutex> -> <guint> -> IO ()
+#ccall g_static_rec_mutex_unlock_full , Ptr <GStaticRecMutex> -> IO <guint>
+#ccall g_static_rec_mutex_free , Ptr <GStaticRecMutex> -> IO ()
+
+#starttype GStaticRWLock
+#stoptype
+
+#ccall g_static_rw_lock_init , Ptr <GStaticRWLock> -> IO ()
+#ccall g_static_rw_lock_reader_lock , Ptr <GStaticRWLock> -> IO ()
+#ccall g_static_rw_lock_reader_trylock , Ptr <GStaticRWLock> -> IO <gboolean>
+#ccall g_static_rw_lock_reader_unlock , Ptr <GStaticRWLock> -> IO ()
+#ccall g_static_rw_lock_writer_lock , Ptr <GStaticRWLock> -> IO ()
+#ccall g_static_rw_lock_writer_trylock , Ptr <GStaticRWLock> -> IO <gboolean>
+#ccall g_static_rw_lock_writer_unlock , Ptr <GStaticRWLock> -> IO ()
+#ccall g_static_rw_lock_free , Ptr <GStaticRWLock> -> IO ()
+
+#opaque_t GCond
+
+#ccall g_cond_new , IO (Ptr <GCond>)
+#ccall g_cond_signal , Ptr <GCond> -> ()
+#ccall g_cond_broadcast , Ptr <GCond> -> ()
+#ccall g_cond_wait , Ptr <GCond> -> Ptr <GMutex> -> IO ()
+#ccall g_cond_timed_wait , Ptr <GCond> -> Ptr <GMutex> -> Ptr <GTimeVal> -> IO <gboolean>
+#ccall g_cond_free , Ptr <GCond> -> IO ()
+
+#opaque_t GPrivate
+
+#ccall g_private_new , <GDestroyNotify> -> IO (Ptr <GPrivate>)
+#ccall g_private_get , Ptr <GPrivate> -> IO <gpointer>
+#ccall g_private_set , Ptr <GPrivate> -> <gpointer> -> IO ()
+
+#starttype GStaticPrivate
+#stoptype
+
+#ccall g_static_private_init , Ptr <GStaticPrivate> -> IO ()
+#ccall g_static_private_get , Ptr <GStaticPrivate> -> IO <gpointer>
+#ccall g_static_private_set , Ptr <GStaticPrivate> -> <gpointer> -> <GDestroyNotify> -> IO ()
+#ccall g_static_private_free , Ptr <GStaticPrivate> -> IO ()
+
+#starttype GOnce
+#field status , <GOnceStatus>
+#field retval , <gpointer>
+#stoptype
+
+#integral_t GOnceStatus
+
+#num G_ONCE_STATUS_NOTCALLED
+#num G_ONCE_STATUS_PROGRESS
+#num G_ONCE_STATUS_READY
+
+#ccall g_once_init_enter , Ptr <gsize> -> IO <gboolean>
+#ccall g_once_init_leave , Ptr <gsize> -> <gsize> -> IO ()
+
diff --git a/src/Bindings/GLib/DataTypes.hs b/src/Bindings/GLib/DataTypes.hs
new file mode 100644
--- /dev/null
+++ b/src/Bindings/GLib/DataTypes.hs
@@ -0,0 +1,1 @@
+module Bindings.GLib.DataTypes (module Bindings.GLib.DataTypes.Datasets,module Bindings.GLib.DataTypes.DoublyLinkedLists,module Bindings.GLib.DataTypes.MemorySlices,module Bindings.GLib.DataTypes.Quarks,module Bindings.GLib.DataTypes.StringChunks,module Bindings.GLib.DataTypes.TrashStacks) where {import Bindings.GLib.DataTypes.Datasets;import Bindings.GLib.DataTypes.DoublyLinkedLists;import Bindings.GLib.DataTypes.MemorySlices;import Bindings.GLib.DataTypes.Quarks;import Bindings.GLib.DataTypes.StringChunks;import Bindings.GLib.DataTypes.TrashStacks}
diff --git a/src/Bindings/GLib/DataTypes/Datasets.hsc b/src/Bindings/GLib/DataTypes/Datasets.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/GLib/DataTypes/Datasets.hsc
@@ -0,0 +1,31 @@
+#include <bindings.dsl.h>
+#include <glib.h>
+
+-- | <http://library.gnome.org/devel/glib/stable/glib-Datasets.html>
+
+module Bindings.GLib.DataTypes.Datasets where
+#strict_import
+import Bindings.GLib.Fundamentals.BasicTypes
+import Bindings.GLib.DataTypes.Quarks
+
+#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 ()
+
+#ccall g_dataset_id_get_data , <gconstpointer> -> <GQuark> -> IO <gpointer>
+#ccall g_dataset_id_remove_data , <gconstpointer> -> <GQuark> -> IO <gpointer>
+#ccall g_dataset_id_remove_no_notify , <gconstpointer> -> <GQuark> -> IO <gpointer>
+
+#cinline g_dataset_set_data , <gconstpointer> -> Ptr <gchar> -> <gpointer> -> IO ()
+#cinline g_dataset_set_data_full , <gconstpointer> -> Ptr <gchar> -> <gpointer> -> <GDestroyNotify> -> IO ()
+#cinline g_dataset_get_data , <gconstpointer> -> Ptr <gchar> -> IO <gpointer>
+#cinline g_dataset_remove_data , <gconstpointer> -> Ptr <gchar> -> IO <gpointer>
+#cinline g_dataset_remove_no_notify , <gconstpointer> -> Ptr <gchar> -> IO <gpointer>
+
+#ccall g_dataset_foreach , <gconstpointer> -> <GDataForeachFunc> -> <gpointer> -> IO ()
+
+#callback 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
new file mode 100644
--- /dev/null
+++ b/src/Bindings/GLib/DataTypes/DoublyLinkedLists.hsc
@@ -0,0 +1,60 @@
+#include <bindings.dsl.h>
+#include <glib.h>
+
+-- | <http://library.gnome.org/devel/glib/stable/glib-Doubly-Linked-Lists.html>
+
+module Bindings.GLib.DataTypes.DoublyLinkedLists where
+#strict_import
+import Bindings.GLib.Fundamentals
+
+#starttype GList
+#field data , <gpointer>
+#field next , Ptr <GList>
+#field prev , Ptr <GList>
+#stoptype
+
+#ccall g_list_append , Ptr <GList> -> <gpointer> -> IO (Ptr <GList>)
+#ccall g_list_prepend , Ptr <GList> -> <gpointer> -> IO (Ptr <GList>)
+#ccall g_list_insert , Ptr <GList> -> <gpointer> -> <gint> -> IO (Ptr <GList>)
+#ccall g_list_insert_before , Ptr <GList> -> Ptr <GList> -> <gpointer> -> IO (Ptr <GList>)
+#ccall g_list_insert_sorted , Ptr <GList> -> <gpointer> -> <GCompareFunc> -> IO (Ptr <GList>)
+#ccall g_list_remove , Ptr <GList> -> <gconstpointer> -> IO (Ptr <GList>)
+#ccall g_list_remove_link , Ptr <GList> -> Ptr <GList> -> IO (Ptr <GList>)
+#ccall g_list_delete_link , Ptr <GList> -> Ptr <GList> -> IO (Ptr <GList>)
+#ccall g_list_remove_all , Ptr <GList> -> <gconstpointer> -> IO (Ptr <GList>)
+#ccall g_list_free , Ptr <GList> -> IO ()
+
+#ccall g_list_alloc , IO (Ptr <GList>)
+#ccall g_list_free_1 , Ptr <GList> -> IO ()
+#cinline g_list_free1 , Ptr <GList> -> IO ()
+
+#ccall g_list_length , Ptr <GList> -> IO <guint>
+#ccall g_list_copy , Ptr <GList> -> IO (Ptr <GList>)
+#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>
+
+#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>
+
+#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 ()
+
+#ccall g_list_first , Ptr <GList> -> IO (Ptr <GList>)
+#ccall g_list_last , Ptr <GList> -> IO (Ptr <GList>)
+#cinline g_list_previous , Ptr <GList> -> IO (Ptr <GList>)
+#cinline g_list_next , Ptr <GList> -> IO (Ptr <GList>)
+#ccall g_list_nth , Ptr <GList> -> <guint> -> IO (Ptr <GList>)
+#ccall g_list_nth_data , Ptr <GList> -> <guint> -> IO <gpointer>
+#ccall g_list_nth_prev , Ptr <GList> -> <guint> -> IO (Ptr <GList>)
+
+#ccall g_list_find , Ptr <GList> -> <gconstpointer> -> IO (Ptr <GList>)
+#ccall g_list_find_custom , Ptr <GList> -> <gconstpointer> -> <GCompareFunc> -> IO (Ptr <GList>)
+#ccall g_list_position , Ptr <GList> -> Ptr <GList> -> IO <gint>
+#ccall g_list_index , Ptr <GList> -> <gconstpointer> -> IO <gint>
+
diff --git a/src/Bindings/GLib/DataTypes/MemorySlices.hsc b/src/Bindings/GLib/DataTypes/MemorySlices.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/GLib/DataTypes/MemorySlices.hsc
@@ -0,0 +1,15 @@
+#include <bindings.dsl.h>
+#include <glib.h>
+
+-- | <http://library.gnome.org/devel/glib/stable/glib-Memory-Slices.html>
+
+module Bindings.GLib.DataTypes.MemorySlices where
+#strict_import
+import Bindings.GLib.Fundamentals
+
+#ccall g_slice_alloc , <gsize> -> IO <gpointer>
+#ccall g_slice_alloc0 , <gsize> -> IO <gpointer>
+#ccall g_slice_copy , <gsize> -> <gconstpointer> -> IO <gpointer>
+#ccall g_slice_free1 , <gsize> -> <gpointer> -> IO ()
+#ccall g_slice_free_chain_with_offset , <gsize> -> <gpointer> -> <gsize> -> IO ()
+
diff --git a/src/Bindings/GLib/DataTypes/Quarks.hsc b/src/Bindings/GLib/DataTypes/Quarks.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/GLib/DataTypes/Quarks.hsc
@@ -0,0 +1,18 @@
+#include <bindings.dsl.h>
+#include <glib.h>
+
+-- | <http://library.gnome.org/devel/glib/stable/glib-Quarks.html>
+
+module Bindings.GLib.DataTypes.Quarks where
+#strict_import
+import Bindings.GLib.Fundamentals
+
+#integral_t GQuark
+
+#ccall g_quark_from_string , Ptr <gchar> -> IO <GQuark>
+#ccall g_quark_from_static_string , Ptr <gchar> -> IO <GQuark>
+#ccall g_quark_to_string , <GQuark> -> IO (Ptr <gchar>)
+#ccall g_quark_try_string , Ptr <gchar> -> IO <GQuark>
+#ccall g_intern_string , Ptr <gchar> -> IO (Ptr <gchar>)
+#ccall g_intern_static_string , Ptr <gchar> -> IO (Ptr <gchar>)
+
diff --git a/src/Bindings/GLib/DataTypes/StringChunks.hsc b/src/Bindings/GLib/DataTypes/StringChunks.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/GLib/DataTypes/StringChunks.hsc
@@ -0,0 +1,18 @@
+#include <bindings.dsl.h>
+#include <glib.h>
+
+-- | <http://library.gnome.org/devel/glib/stable/glib-String-Chunks.html>
+
+module Bindings.GLib.DataTypes.StringChunks where
+#strict_import
+import Bindings.GLib.Fundamentals
+
+#opaque_t GStringChunk
+
+#ccall g_string_chunk_new , <gsize> -> IO (Ptr <GStringChunk>)
+#ccall g_string_chunk_insert , Ptr <GStringChunk> -> Ptr <gchar> -> IO (Ptr <gchar>)
+#ccall g_string_chunk_insert_const , Ptr <GStringChunk> -> Ptr <gchar> -> IO (Ptr <gchar>)
+#ccall g_string_chunk_insert_len , Ptr <GStringChunk> -> Ptr <gchar> -> <gssize> -> IO (Ptr <gchar>)
+#ccall g_string_chunk_clear , Ptr <GStringChunk> -> IO ()
+#ccall g_string_chunk_free , Ptr <GStringChunk> -> IO ()
+
diff --git a/src/Bindings/GLib/DataTypes/TrashStacks.hsc b/src/Bindings/GLib/DataTypes/TrashStacks.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/GLib/DataTypes/TrashStacks.hsc
@@ -0,0 +1,18 @@
+#include <bindings.dsl.h>
+#include <glib.h>
+
+-- | <http://library.gnome.org/devel/glib/stable/glib-Trash-Stacks.html>
+
+module Bindings.GLib.DataTypes.TrashStacks where
+#strict_import
+import Bindings.GLib.Fundamentals
+
+#starttype GTrashStack
+#field next , Ptr <GTrashStack>
+#stoptype
+
+#ccall g_trash_stack_push , Ptr (Ptr <GTrashStack>) -> <gpointer> -> IO ()
+#ccall g_trash_stack_pop , Ptr (Ptr <GTrashStack>) -> IO <gpointer>
+#ccall g_trash_stack_peek , Ptr (Ptr <GTrashStack>) -> IO <gpointer>
+#ccall g_trash_stack_height , Ptr (Ptr <GTrashStack>) -> IO <guint>
+
diff --git a/src/Bindings/GLib/Fundamentals.hs b/src/Bindings/GLib/Fundamentals.hs
new file mode 100644
--- /dev/null
+++ b/src/Bindings/GLib/Fundamentals.hs
@@ -0,0 +1,1 @@
+module Bindings.GLib.Fundamentals (module Bindings.GLib.Fundamentals.AtomicOperations,module Bindings.GLib.Fundamentals.BasicTypes,module Bindings.GLib.Fundamentals.ByteOrderMacros,module Bindings.GLib.Fundamentals.LimitsOfBasicTypes,module Bindings.GLib.Fundamentals.MiscellaneousMacros,module Bindings.GLib.Fundamentals.NumericalDefinitions,module Bindings.GLib.Fundamentals.StandardMacros,module Bindings.GLib.Fundamentals.TypeConversionMacros,module Bindings.GLib.Fundamentals.VersionInformation) where {import Bindings.GLib.Fundamentals.AtomicOperations;import Bindings.GLib.Fundamentals.BasicTypes;import Bindings.GLib.Fundamentals.ByteOrderMacros;import Bindings.GLib.Fundamentals.LimitsOfBasicTypes;import Bindings.GLib.Fundamentals.MiscellaneousMacros;import Bindings.GLib.Fundamentals.NumericalDefinitions;import Bindings.GLib.Fundamentals.StandardMacros;import Bindings.GLib.Fundamentals.TypeConversionMacros;import Bindings.GLib.Fundamentals.VersionInformation}
diff --git a/src/Bindings/GLib/Fundamentals/AtomicOperations.hsc b/src/Bindings/GLib/Fundamentals/AtomicOperations.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/GLib/Fundamentals/AtomicOperations.hsc
@@ -0,0 +1,20 @@
+#include <bindings.dsl.h>
+#include <glib.h>
+
+-- | <http://library.gnome.org/devel/glib/stable/glib-Atomic-Operations.html>
+
+module Bindings.GLib.Fundamentals.AtomicOperations where
+#strict_import
+import Bindings.GLib.Fundamentals.BasicTypes
+
+#cinline g_atomic_int_get , Ptr <gint> -> IO <gint>
+#cinline g_atomic_int_set , Ptr <gint> -> <gint> -> IO ()
+#cinline g_atomic_int_add , Ptr <gint> -> <gint> -> IO ()
+#cinline g_atomic_int_exchange_and_add , Ptr <gint> -> <gint> -> IO <gint>
+#cinline g_atomic_int_compare_and_exchange , Ptr <gint> -> <gint> -> <gint> -> IO <gboolean>
+#cinline g_atomic_pointer_get , Ptr <gpointer> -> IO <gpointer>
+#cinline g_atomic_pointer_set , Ptr <gpointer> -> <gpointer> -> IO ()
+#cinline g_atomic_pointer_compare_and_exchange , Ptr <gpointer> -> <gpointer> -> <gpointer> -> IO <gboolean>
+#cinline g_atomic_int_inc , Ptr <gint> -> IO ()
+#cinline g_atomic_int_dec_and_test , Ptr <gint> -> IO <gboolean>
+
diff --git a/src/Bindings/GLib/Fundamentals/BasicTypes.hsc b/src/Bindings/GLib/Fundamentals/BasicTypes.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/GLib/Fundamentals/BasicTypes.hsc
@@ -0,0 +1,37 @@
+#include <bindings.dsl.h>
+#include <glib.h>
+
+-- | <http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html>
+
+module Bindings.GLib.Fundamentals.BasicTypes where
+#strict_import
+
+#integral_t gboolean
+#synonym_t gpointer , Ptr ()
+#synonym_t gconstpointer , Ptr ()
+#integral_t gchar
+#integral_t guchar
+#integral_t gint
+#integral_t guint
+#integral_t gshort
+#integral_t gushort
+#integral_t glong
+#integral_t gulong
+#integral_t gint8
+#integral_t guint8
+#integral_t gint16
+#integral_t guint16
+#integral_t gint32
+#integral_t guint32
+#integral_t gint64
+#integral_t guint64
+
+#synonym_t gfloat , CFloat
+#synonym_t gdouble , CDouble
+
+#integral_t gsize
+#integral_t gssize
+#integral_t goffset
+#integral_t gintptr
+#integral_t guintptr
+
diff --git a/src/Bindings/GLib/Fundamentals/ByteOrderMacros.hsc b/src/Bindings/GLib/Fundamentals/ByteOrderMacros.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/GLib/Fundamentals/ByteOrderMacros.hsc
@@ -0,0 +1,61 @@
+#include <bindings.dsl.h>
+#include <glib.h>
+
+-- | <http://library.gnome.org/devel/glib/stable/glib-Byte-Order-Macros.html>
+
+module Bindings.GLib.Fundamentals.ByteOrderMacros where
+#strict_import
+import Bindings.GLib.Fundamentals.BasicTypes
+
+#cinline g_htonl , <gint32> -> <gint32>
+#cinline g_htons , <gint16> -> <gint16>
+#cinline g_ntohl , <gint32> -> <gint32>
+#cinline g_ntohs , <gint16> -> <gint16>
+#cinline GINT_FROM_BE , <gint> -> <gint>
+#cinline GINT_FROM_LE , <gint> -> <gint>
+#cinline GINT_TO_BE , <gint> -> <gint>
+#cinline GINT_TO_LE , <gint> -> <gint>
+#cinline GUINT_FROM_BE , <guint> -> <guint>
+#cinline GUINT_FROM_LE , <guint> -> <guint>
+#cinline GUINT_TO_BE , <guint> -> <guint>
+#cinline GUINT_TO_LE , <guint> -> <guint>
+#cinline GLONG_FROM_BE , <glong> -> <glong>
+#cinline GLONG_FROM_LE , <glong> -> <glong>
+#cinline GLONG_TO_BE , <glong> -> <glong>
+#cinline GLONG_TO_LE , <glong> -> <glong>
+#cinline GULONG_FROM_BE , <gulong> -> <gulong>
+#cinline GULONG_FROM_LE , <gulong> -> <gulong>
+#cinline GULONG_TO_BE , <gulong> -> <gulong>
+#cinline GULONG_TO_LE , <gulong> -> <gulong>
+#cinline GINT16_FROM_BE , <gint16> -> <gint16>
+#cinline GINT16_FROM_LE , <gint16> -> <gint16>
+#cinline GINT16_TO_BE , <gint16> -> <gint16>
+#cinline GINT16_TO_LE , <gint16> -> <gint16>
+#cinline GUINT16_FROM_BE , <guint16> -> <guint16>
+#cinline GUINT16_FROM_LE , <guint16> -> <guint16>
+#cinline GUINT16_TO_BE , <guint16> -> <guint16>
+#cinline GUINT16_TO_LE , <guint16> -> <guint16>
+#cinline GINT32_FROM_BE , <gint32> -> <gint32>
+#cinline GINT32_FROM_LE , <gint32> -> <gint32>
+#cinline GINT32_TO_BE , <gint32> -> <gint32>
+#cinline GINT32_TO_LE , <gint32> -> <gint32>
+#cinline GUINT32_FROM_BE , <guint32> -> <guint32>
+#cinline GUINT32_FROM_LE , <guint32> -> <guint32>
+#cinline GUINT32_TO_BE , <guint32> -> <guint32>
+#cinline GUINT32_TO_LE , <guint32> -> <guint32>
+#cinline GINT64_FROM_BE , <gint64> -> <gint64>
+#cinline GINT64_FROM_LE , <gint64> -> <gint64>
+#cinline GINT64_TO_BE , <gint64> -> <gint64>
+#cinline GINT64_TO_LE , <gint64> -> <gint64>
+#cinline GUINT64_FROM_BE , <guint64> -> <guint64>
+#cinline GUINT64_FROM_LE , <guint64> -> <guint64>
+#cinline GUINT64_TO_BE , <guint64> -> <guint64>
+#cinline GUINT64_TO_LE , <guint64> -> <guint64>
+#cinline GUINT16_SWAP_BE_PDP , <guint16> -> <guint16>
+#cinline GUINT16_SWAP_LE_BE , <guint16> -> <guint16>
+#cinline GUINT16_SWAP_LE_PDP , <guint16> -> <guint16>
+#cinline GUINT32_SWAP_BE_PDP , <guint32> -> <guint32>
+#cinline GUINT32_SWAP_LE_BE , <guint32> -> <guint32>
+#cinline GUINT32_SWAP_LE_PDP , <guint32> -> <guint32>
+#cinline GUINT64_SWAP_LE_BE , <guint64> -> <guint64>
+
diff --git a/src/Bindings/GLib/Fundamentals/LimitsOfBasicTypes.hsc b/src/Bindings/GLib/Fundamentals/LimitsOfBasicTypes.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/GLib/Fundamentals/LimitsOfBasicTypes.hsc
@@ -0,0 +1,39 @@
+#include <bindings.dsl.h>
+#include <glib.h>
+
+-- | <http://library.gnome.org/devel/glib/stable/glib-Limits-of-Basic-Types.html>
+
+module Bindings.GLib.Fundamentals.LimitsOfBasicTypes where
+#strict_import
+
+#num G_MININT
+#num G_MAXINT
+#num G_MAXUINT
+#num G_MINSHORT
+#num G_MAXSHORT
+#num G_MAXUSHORT
+#num G_MINLONG
+#num G_MAXLONG
+#num G_MAXULONG
+#num G_MININT8
+#num G_MAXINT8
+#num G_MAXUINT8
+#num G_MININT16
+#num G_MAXINT16
+#num G_MAXUINT16
+#num G_MININT32
+#num G_MAXINT32
+#num G_MAXUINT32
+#num G_MININT64
+#num G_MAXINT64
+#num G_MAXUINT64
+#num G_MAXSIZE
+#num G_MINSSIZE
+#num G_MAXSSIZE
+#num G_MINOFFSET
+#num G_MAXOFFSET
+#num G_MINFLOAT
+#num G_MAXFLOAT
+#num G_MINDOUBLE
+#num G_MAXDOUBLE
+
diff --git a/src/Bindings/GLib/Fundamentals/MiscellaneousMacros.hsc b/src/Bindings/GLib/Fundamentals/MiscellaneousMacros.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/GLib/Fundamentals/MiscellaneousMacros.hsc
@@ -0,0 +1,26 @@
+#include <bindings.dsl.h>
+#include <glib.h>
+
+-- | <http://library.gnome.org/devel/glib/stable/glib-Miscellaneous-Macros.html>
+
+module Bindings.GLib.Fundamentals.MiscellaneousMacros where
+#strict_import
+
+#pointer G_GINT16_MODIFIER
+#pointer G_GINT16_FORMAT
+#pointer G_GUINT16_FORMAT
+#pointer G_GINT32_MODIFIER
+#pointer G_GINT32_FORMAT
+#pointer G_GUINT32_FORMAT
+#pointer G_GINT64_MODIFIER
+#pointer G_GINT64_FORMAT
+#pointer G_GUINT64_FORMAT
+#pointer G_GSIZE_MODIFIER
+#pointer G_GSIZE_FORMAT
+#pointer G_GSSIZE_FORMAT
+#pointer G_GOFFSET_MODIFIER
+#pointer G_GOFFSET_FORMAT
+#pointer G_GINTPTR_MODIFIER
+#pointer G_GINTPTR_FORMAT
+#pointer G_GUINTPTR_FORMAT
+
diff --git a/src/Bindings/GLib/Fundamentals/NumericalDefinitions.hsc b/src/Bindings/GLib/Fundamentals/NumericalDefinitions.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/GLib/Fundamentals/NumericalDefinitions.hsc
@@ -0,0 +1,19 @@
+#include <bindings.dsl.h>
+#include <glib.h>
+
+-- | <http://library.gnome.org/devel/glib/stable/glib-Numerical-Definitions.html>
+
+module Bindings.GLib.Fundamentals.NumericalDefinitions where
+#strict_import
+
+#num G_IEEE754_FLOAT_BIAS
+#num G_IEEE754_DOUBLE_BIAS
+#fractional G_E
+#fractional G_LN2
+#fractional G_LN10
+#fractional G_PI
+#fractional G_PI_2
+#fractional G_PI_4
+#fractional G_SQRT2
+#fractional G_LOG_2_BASE_10
+
diff --git a/src/Bindings/GLib/Fundamentals/StandardMacros.hsc b/src/Bindings/GLib/Fundamentals/StandardMacros.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/GLib/Fundamentals/StandardMacros.hsc
@@ -0,0 +1,18 @@
+#include <bindings.dsl.h>
+#include <glib.h>
+
+-- | <http://library.gnome.org/devel/glib/stable/glib-Standard-Macros.html>
+
+module Bindings.GLib.Fundamentals.StandardMacros where
+#strict_import
+
+#num G_DIR_SEPARATOR
+#pointer G_DIR_SEPARATOR_S
+#cinline G_IS_DIR_SEPARATOR , CChar -> CInt
+#num G_SEARCHPATH_SEPARATOR
+#pointer G_SEARCHPATH_SEPARATOR_S
+#num TRUE
+#num FALSE
+#pointer NULL
+#num G_MEM_ALIGN
+
diff --git a/src/Bindings/GLib/Fundamentals/TypeConversionMacros.hsc b/src/Bindings/GLib/Fundamentals/TypeConversionMacros.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/GLib/Fundamentals/TypeConversionMacros.hsc
@@ -0,0 +1,16 @@
+#include <bindings.dsl.h>
+#include <glib.h>
+
+-- | <http://library.gnome.org/devel/glib/stable/glib-Type-Conversion-Macros.html>
+
+module Bindings.GLib.Fundamentals.TypeConversionMacros where
+#strict_import
+import Bindings.GLib.Fundamentals.BasicTypes
+
+#cinline GINT_TO_POINTER , <gint> -> <gpointer>
+#cinline GPOINTER_TO_INT , <gpointer> -> <gint>
+#cinline GUINT_TO_POINTER , <guint> -> <gpointer>
+#cinline GPOINTER_TO_UINT , <gpointer> -> <guint>
+#cinline GSIZE_TO_POINTER , <gsize> -> <gpointer>
+#cinline GPOINTER_TO_SIZE , <gpointer> -> <gsize>
+
diff --git a/src/Bindings/GLib/Fundamentals/VersionInformation.hsc b/src/Bindings/GLib/Fundamentals/VersionInformation.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/GLib/Fundamentals/VersionInformation.hsc
@@ -0,0 +1,19 @@
+#include <bindings.dsl.h>
+#include <glib.h>
+
+-- | <http://library.gnome.org/devel/glib/unstable/glib-Version-Information.html>
+
+module Bindings.GLib.Fundamentals.VersionInformation where
+#strict_import
+import Bindings.GLib.Fundamentals.BasicTypes
+
+#globalvar glib_major_version , <guint>
+#globalvar glib_minor_version , <guint>
+#globalvar glib_micro_version , <guint>
+#globalvar glib_binary_age , <guint>
+#globalvar glib_interface_age , <guint>
+#ccall glib_check_version , <guint> -> <guint> -> <guint> -> IO (Ptr <gchar>)
+
+#num GLIB_MAJOR_VERSION
+#num GLIB_MINOR_VERSION
+#num GLIB_MICRO_VERSION
diff --git a/src/Bindings/GLib/Utilities.hs b/src/Bindings/GLib/Utilities.hs
new file mode 100644
--- /dev/null
+++ b/src/Bindings/GLib/Utilities.hs
@@ -0,0 +1,1 @@
+module Bindings.GLib.Utilities (module Bindings.GLib.Utilities.CommandlineOptionParser,module Bindings.GLib.Utilities.DateAndTimeFunctions,module Bindings.GLib.Utilities.HostnameUtilities) where {import Bindings.GLib.Utilities.CommandlineOptionParser;import Bindings.GLib.Utilities.DateAndTimeFunctions;import Bindings.GLib.Utilities.HostnameUtilities}
diff --git a/src/Bindings/GLib/Utilities/CommandlineOptionParser.hsc b/src/Bindings/GLib/Utilities/CommandlineOptionParser.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/GLib/Utilities/CommandlineOptionParser.hsc
@@ -0,0 +1,99 @@
+#include <bindings.dsl.h>
+#include<glib.h>
+
+-- | <http://library.gnome.org/devel/glib/stable/glib-Commandline-option-parser.html>
+
+module Bindings.GLib.Utilities.CommandlineOptionParser where
+#strict_import
+import Bindings.GLib.Fundamentals
+import Bindings.GLib.CoreApplicationSupport.ErrorReporting
+import Bindings.GLib.DataTypes.Datasets
+
+#integral_t GOptionError
+
+#num G_OPTION_ERROR_UNKNOWN_OPTION
+#num G_OPTION_ERROR_BAD_VALUE
+#num G_OPTION_ERROR_FAILED
+
+#num G_OPTION_ERROR
+
+#callback GOptionArgFunc , Ptr <gchar> -> Ptr <gchar> -> <gpointer> -> Ptr (Ptr <GError>) -> IO <gboolean>
+
+#opaque_t GOptionContext
+
+#ccall g_option_context_new , Ptr <gchar> -> IO (Ptr <GOptionContext>)
+#ccall g_option_context_set_summary , Ptr <GOptionContext> -> Ptr <gchar> -> IO ()
+#ccall g_option_context_get_summary , Ptr <GOptionContext> -> IO (Ptr <gchar>)
+#ccall g_option_context_set_description , Ptr <GOptionContext> -> Ptr <gchar> -> IO ()
+#ccall g_option_context_get_description , Ptr <GOptionContext> -> IO (Ptr <gchar>)
+
+
+#callback 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 ()
+#ccall g_option_context_free , Ptr <GOptionContext> -> IO ()
+#ccall g_option_context_parse , Ptr <GOptionContext> -> Ptr <gint> -> Ptr (Ptr (Ptr <gchar>)) -> Ptr (Ptr <GError>) -> IO <gboolean>
+#ccall g_option_context_set_help_enabled , Ptr <GOptionContext> -> <gboolean> -> IO ()
+#ccall g_option_context_get_help_enabled , Ptr <GOptionContext> -> IO <gboolean>
+#ccall g_option_context_set_ignore_unknown_options , Ptr <GOptionContext> -> <gboolean> -> IO ()
+#ccall g_option_context_get_ignore_unknown_options , Ptr <GOptionContext> -> IO <gboolean>
+#ccall g_option_context_get_help , Ptr <GOptionContext> -> <gboolean> -> Ptr <GOptionGroup> -> IO (Ptr <gchar>)
+
+
+#integral_t GOptionArg
+
+#num G_OPTION_ARG_NONE
+#num G_OPTION_ARG_STRING
+#num G_OPTION_ARG_INT
+#num G_OPTION_ARG_CALLBACK
+#num G_OPTION_ARG_FILENAME
+#num G_OPTION_ARG_STRING_ARRAY
+#num G_OPTION_ARG_FILENAME_ARRAY
+#num G_OPTION_ARG_DOUBLE
+#num G_OPTION_ARG_INT64
+
+#integral_t GOptionFlags
+
+#num G_OPTION_FLAG_HIDDEN
+#num G_OPTION_FLAG_IN_MAIN
+#num G_OPTION_FLAG_REVERSE
+#num G_OPTION_FLAG_NO_ARG
+#num G_OPTION_FLAG_FILENAME
+#num G_OPTION_FLAG_OPTIONAL_ARG
+#num G_OPTION_FLAG_NOALIAS
+
+#pointer G_OPTION_REMAINING
+
+#starttype GOptionEntry
+#field long_name , Ptr <gchar>
+#field short_name , <gchar>
+#field flags , <gint>
+#field arg , <GOptionArg>
+#field arg_data , <gpointer>
+#field description , Ptr <gchar>
+#field arg_description , Ptr <gchar>
+#stoptype
+
+#ccall g_option_context_add_main_entries , Ptr <GOptionContext> -> Ptr <GOptionEntry> -> Ptr <gchar> -> IO ()
+
+#opaque_t GOptionGroup
+
+#ccall g_option_context_add_group , Ptr <GOptionContext> -> Ptr <GOptionGroup> -> IO ()
+#ccall g_option_context_set_main_group , Ptr <GOptionContext> -> Ptr <GOptionGroup> -> IO ()
+#ccall g_option_context_get_main_group , Ptr <GOptionContext> -> IO (Ptr <GOptionGroup>)
+#ccall g_option_group_new , Ptr <gchar> -> Ptr <gchar> -> Ptr <gchar> -> <gpointer> -> <GDestroyNotify> -> IO (Ptr <GOptionGroup>)
+#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>
+
+#ccall g_option_group_set_parse_hooks , Ptr <GOptionGroup> -> <GOptionParseFunc> -> <GOptionParseFunc> -> IO ()
+
+#callback 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 ()
+#ccall g_option_group_set_translation_domain , Ptr <GOptionGroup> -> Ptr <gchar> -> IO ()
+
+
diff --git a/src/Bindings/GLib/Utilities/DateAndTimeFunctions.hsc b/src/Bindings/GLib/Utilities/DateAndTimeFunctions.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/GLib/Utilities/DateAndTimeFunctions.hsc
@@ -0,0 +1,127 @@
+#include <bindings.dsl.h>
+#include <glib.h>
+
+-- | <http://library.gnome.org/devel/glib/stable/glib-Date-and-Time-Functions.html>
+
+module Bindings.GLib.Utilities.DateAndTimeFunctions where
+#strict_import
+import Bindings.GLib.Fundamentals
+
+#num G_USEC_PER_SEC
+
+#starttype GTimeVal
+#field tv_sec , <glong>
+#field tv_usec , <glong>
+#stoptype
+
+#ccall g_get_current_time , Ptr <GTimeVal> -> IO ()
+#ccall g_usleep , <gulong> -> IO ()
+#ccall g_time_val_add , Ptr <GTimeVal> -> <glong> -> IO ()
+#ccall g_time_val_from_iso8601 , Ptr <gchar> -> Ptr <GTimeVal> -> IO <gboolean>
+#ccall g_time_val_to_iso8601 , Ptr <GTimeVal> -> IO (Ptr <gchar>)
+
+#starttype GDate
+#stoptype
+
+
+#integral_t GDateDMY
+
+#num G_DATE_DAY
+#num G_DATE_MONTH
+#num G_DATE_YEAR
+
+
+#integral_t GDateDay
+
+
+#integral_t GDateMonth
+
+#num G_DATE_BAD_MONTH
+#num G_DATE_JANUARY
+#num G_DATE_FEBRUARY
+#num G_DATE_MARCH
+#num G_DATE_APRIL
+#num G_DATE_MAY
+#num G_DATE_JUNE
+#num G_DATE_JULY
+#num G_DATE_AUGUST
+#num G_DATE_SEPTEMBER
+#num G_DATE_OCTOBER
+#num G_DATE_NOVEMBER
+#num G_DATE_DECEMBER
+
+
+#integral_t GDateYear
+
+
+#integral_t GDateWeekday
+
+#num G_DATE_BAD_WEEKDAY
+#num G_DATE_MONDAY
+#num G_DATE_TUESDAY
+#num G_DATE_WEDNESDAY
+#num G_DATE_THURSDAY
+#num G_DATE_FRIDAY
+#num G_DATE_SATURDAY
+#num G_DATE_SUNDAY
+
+
+#num G_DATE_BAD_DAY
+#num G_DATE_BAD_JULIAN
+#num G_DATE_BAD_YEAR
+
+#ccall g_date_new , IO (Ptr <GDate>)
+#ccall g_date_new_dmy , <GDateDay> -> <GDateMonth> -> <GDateYear> -> IO (Ptr <GDate>)
+#ccall g_date_new_julian , <guint32> -> IO (Ptr <GDate>)
+#ccall g_date_clear , Ptr <GDate> -> <guint> -> IO ()
+#ccall g_date_free , Ptr <GDate> -> IO ()
+
+#ccall g_date_set_day , Ptr <GDate> -> <GDateDay> -> IO ()
+#ccall g_date_set_month , Ptr <GDate> -> <GDateMonth> -> IO ()
+#ccall g_date_set_year , Ptr <GDate> -> <GDateYear> -> IO ()
+#ccall g_date_set_dmy , Ptr <GDate> -> <GDateDay> -> <GDateMonth> -> <GDateYear> -> IO ()
+#ccall g_date_set_julian , Ptr <GDate> -> <guint32> -> IO ()
+#ccall g_date_set_time_t , Ptr <GDate> -> CTime -> IO ()
+#ccall g_date_set_time_val , Ptr <GDate> -> Ptr <GTimeVal> -> IO ()
+#ccall g_date_set_parse , Ptr <GDate> -> Ptr <gchar> -> IO ()
+
+#ccall g_date_add_days , Ptr <GDate> -> <guint> -> IO ()
+#ccall g_date_subtract_days , Ptr <GDate> -> <guint> -> IO ()
+#ccall g_date_add_months , Ptr <GDate> -> <guint> -> IO ()
+#ccall g_date_subtract_months , Ptr <GDate> -> <guint> -> IO ()
+#ccall g_date_add_years , Ptr <GDate> -> <guint> -> IO ()
+#ccall g_date_subtract_years , Ptr <GDate> -> <guint> -> IO ()
+#ccall g_date_days_between , Ptr <GDate> -> Ptr <GDate> -> IO <gint>
+#ccall g_date_compare , Ptr <GDate> -> Ptr <GDate> -> IO <gint>
+#ccall g_date_clamp , Ptr <GDate> -> Ptr <GDate> -> Ptr <GDate> -> IO ()
+#ccall g_date_order , Ptr <GDate> -> Ptr <GDate> -> IO ()
+
+#ccall g_date_get_day , Ptr <GDate> -> IO <GDateDay>
+#ccall g_date_get_month , Ptr <GDate> -> IO <GDateMonth>
+#ccall g_date_get_year , Ptr <GDate> -> IO <GDateYear>
+#ccall g_date_get_julian , Ptr <GDate> -> IO <guint32>
+#ccall g_date_get_weekday , Ptr <GDate> -> IO <GDateWeekday>
+#ccall g_date_get_day_of_year , Ptr <GDate> -> IO <guint>
+
+#ccall g_date_get_days_in_month , <GDateMonth> -> <GDateYear> -> IO <guint8>
+#ccall g_date_is_first_of_month , Ptr <GDate> -> IO <gboolean>
+#ccall g_date_is_last_of_month , Ptr <GDate> -> IO <gboolean>
+#ccall g_date_is_leap_year , <GDateYear> -> IO <gboolean>
+#ccall g_date_get_monday_week_of_year , Ptr <GDate> -> IO <guint>
+#ccall g_date_get_monday_weeks_in_year , <GDateYear> -> IO <guint8>
+#ccall g_date_get_sunday_week_of_year , Ptr <GDate> -> IO <guint>
+#ccall g_date_get_sunday_weeks_in_year , <GDateYear> -> IO <guint8>
+#ccall g_date_get_iso8601_week_of_year , Ptr <GDate> -> IO <guint>
+
+#ccall g_date_strftime , Ptr <gchar> -> <gsize> -> Ptr <gchar> -> Ptr <GDate> -> IO <gsize>
+#opaque_t struct tm
+#ccall g_date_to_struct_tm , Ptr <GDate> -> Ptr <tm> -> IO ()
+
+#ccall g_date_valid , Ptr <GDate> -> IO <gboolean>
+#ccall g_date_valid_day , <GDateDay> -> IO <gboolean>
+#ccall g_date_valid_month , <GDateMonth> -> IO <gboolean>
+#ccall g_date_valid_year , <GDateYear> -> IO <gboolean>
+#ccall g_date_valid_dmy , <GDateDay> -> <GDateMonth> -> <GDateYear> -> IO <gboolean>
+#ccall g_date_valid_julian , <guint32> -> IO <gboolean>
+#ccall g_date_valid_weekday , <GDateWeekday> -> IO <gboolean>
+
diff --git a/src/Bindings/GLib/Utilities/HostnameUtilities.hsc b/src/Bindings/GLib/Utilities/HostnameUtilities.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/GLib/Utilities/HostnameUtilities.hsc
@@ -0,0 +1,15 @@
+#include <bindings.dsl.h>
+#include <glib.h>
+
+-- | <http://library.gnome.org/devel/glib/stable/glib-Hostname-Utilities.html>
+
+module Bindings.GLib.Utilities.HostnameUtilities where
+#strict_import
+import Bindings.GLib.Fundamentals
+
+#ccall g_hostname_to_ascii , Ptr <gchar> -> IO  (Ptr <gchar>)
+#ccall g_hostname_to_unicode , Ptr <gchar> -> IO  (Ptr <gchar>)
+#ccall g_hostname_is_non_ascii , Ptr <gchar> -> IO <gboolean>
+#ccall g_hostname_is_ascii_encoded , Ptr <gchar> -> IO <gboolean>
+#ccall g_hostname_is_ip_address , Ptr <gchar> -> IO <gboolean>
+
diff --git a/src/inlines.c b/src/inlines.c
new file mode 100644
--- /dev/null
+++ b/src/inlines.c
@@ -0,0 +1,73 @@
+#include<bindings.cmacros.h>
+#include<glib.h>
+
+BC_INLINE1(GINT_TO_POINTER,gint,gpointer)
+BC_INLINE1(GPOINTER_TO_INT,gpointer,gint)
+BC_INLINE1(GUINT_TO_POINTER,guint,gpointer)
+BC_INLINE1(GPOINTER_TO_UINT,gpointer,guint)
+BC_INLINE1(GSIZE_TO_POINTER,gsize,gpointer)
+BC_INLINE1(GPOINTER_TO_SIZE,gpointer,gsize)
+BC_INLINE1(G_IS_DIR_SEPARATOR,char,int)
+BC_INLINE1(g_htonl,gint32,gint32)
+BC_INLINE1(g_htons,gint16,gint16)
+BC_INLINE1(g_ntohl,gint32,gint32)
+BC_INLINE1(g_ntohs,gint16,gint16)
+BC_INLINE1(GINT_FROM_BE,gint,gint)
+BC_INLINE1(GINT_FROM_LE,gint,gint)
+BC_INLINE1(GINT_TO_BE,gint,gint)
+BC_INLINE1(GINT_TO_LE,gint,gint)
+BC_INLINE1(GUINT_FROM_BE,guint,guint)
+BC_INLINE1(GUINT_FROM_LE,guint,guint)
+BC_INLINE1(GUINT_TO_BE,guint,guint)
+BC_INLINE1(GUINT_TO_LE,guint,guint)
+BC_INLINE1(GLONG_FROM_BE,glong,glong)
+BC_INLINE1(GLONG_FROM_LE,glong,glong)
+BC_INLINE1(GLONG_TO_BE,glong,glong)
+BC_INLINE1(GLONG_TO_LE,glong,glong)
+BC_INLINE1(GULONG_FROM_BE,gulong,gulong)
+BC_INLINE1(GULONG_FROM_LE,gulong,gulong)
+BC_INLINE1(GULONG_TO_BE,gulong,gulong)
+BC_INLINE1(GULONG_TO_LE,gulong,gulong)
+BC_INLINE1(GINT16_FROM_BE,gint16,gint16)
+BC_INLINE1(GINT16_FROM_LE,gint16,gint16)
+BC_INLINE1(GINT16_TO_BE,gint16,gint16)
+BC_INLINE1(GINT16_TO_LE,gint16,gint16)
+BC_INLINE1(GUINT16_FROM_BE,guint16,guint16)
+BC_INLINE1(GUINT16_FROM_LE,guint16,guint16)
+BC_INLINE1(GUINT16_TO_BE,guint16,guint16)
+BC_INLINE1(GUINT16_TO_LE,guint16,guint16)
+BC_INLINE1(GINT32_FROM_BE,gint32,gint32)
+BC_INLINE1(GINT32_FROM_LE,gint32,gint32)
+BC_INLINE1(GINT32_TO_BE,gint32,gint32)
+BC_INLINE1(GINT32_TO_LE,gint32,gint32)
+BC_INLINE1(GUINT32_FROM_BE,guint32,guint32)
+BC_INLINE1(GUINT32_FROM_LE,guint32,guint32)
+BC_INLINE1(GUINT32_TO_BE,guint32,guint32)
+BC_INLINE1(GUINT32_TO_LE,guint32,guint32)
+BC_INLINE1(GINT64_FROM_BE,gint64,gint64)
+BC_INLINE1(GINT64_FROM_LE,gint64,gint64)
+BC_INLINE1(GINT64_TO_BE,gint64,gint64)
+BC_INLINE1(GINT64_TO_LE,gint64,gint64)
+BC_INLINE1(GUINT64_FROM_BE,guint64,guint64)
+BC_INLINE1(GUINT64_FROM_LE,guint64,guint64)
+BC_INLINE1(GUINT64_TO_BE,guint64,guint64)
+BC_INLINE1(GUINT64_TO_LE,guint64,guint64)
+BC_INLINE1(GUINT16_SWAP_BE_PDP,guint16,guint16)
+BC_INLINE1(GUINT16_SWAP_LE_BE,guint16,guint16)
+BC_INLINE1(GUINT16_SWAP_LE_PDP,guint16,guint16)
+BC_INLINE1(GUINT32_SWAP_BE_PDP,guint32,guint32)
+BC_INLINE1(GUINT32_SWAP_LE_BE,guint32,guint32)
+BC_INLINE1(GUINT32_SWAP_LE_PDP,guint32,guint32)
+BC_INLINE1(GUINT64_SWAP_LE_BE,guint64,guint64)
+
+BC_INLINE1(g_atomic_int_get,gint*,gint)
+BC_INLINE2VOID(g_atomic_int_set,gint*,gint)
+BC_INLINE2VOID(g_atomic_int_add,gint*,gint)
+BC_INLINE2(g_atomic_int_exchange_and_add,gint*,gint,gint)
+BC_INLINE3(g_atomic_int_compare_and_exchange,gint*,gint,gint,gboolean)
+BC_INLINE1(g_atomic_pointer_get,gpointer*,gpointer)
+BC_INLINE2VOID(g_atomic_pointer_set,gpointer*,gpointer)
+BC_INLINE3(g_atomic_pointer_compare_and_exchange,gpointer*,gpointer,gpointer,gboolean)
+BC_INLINE1VOID(g_atomic_int_inc,gint*)
+BC_INLINE1(g_atomic_int_dec_and_test,gint*,gboolean)
+
