diff --git a/bindings-glib.cabal b/bindings-glib.cabal
--- a/bindings-glib.cabal
+++ b/bindings-glib.cabal
@@ -1,8 +1,8 @@
-cabal-version: >= 1.2.3
+cabal-version: >= 1.4
 name: bindings-glib
 synopsis:
   Low level bindings to GLib.
-version: 0.1.3
+version: 0.1.4
 license: BSD3
 license-file: LICENSE
 maintainer: Maurício C. Antunes <mauricio.antunes@gmail.com>
@@ -16,9 +16,20 @@
     ForeignFunctionInterface
   build-depends:
     base >= 3 && < 5,
-    bindings-DSL >= 1.0.6 && < 1.1
+    bindings-DSL >= 1.0.7 && < 1.1
+  pkgconfig-depends: glib-2.0 >= 2.22.2, gthread-2.0 >= 2.22.2
   exposed-modules:
     Bindings.GLib
+    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.CoreApplicationSupport
     Bindings.GLib.CoreApplicationSupport.AsynchronousQueues
     Bindings.GLib.CoreApplicationSupport.ErrorReporting
@@ -28,27 +39,20 @@
     Bindings.GLib.CoreApplicationSupport.MessageOutputAndDebuggingFunctions
     Bindings.GLib.CoreApplicationSupport.ThreadPools
     Bindings.GLib.CoreApplicationSupport.Threads
+    Bindings.GLib.Utilities
+    Bindings.GLib.Utilities.CommandlineOptionParser
+    Bindings.GLib.Utilities.DateAndTimeFunctions
+    Bindings.GLib.Utilities.HostnameUtilities
+    Bindings.GLib.Utilities.SimpleXmlSubsetParser
+    Bindings.GLib.Utilities.UnicodeManipulation
     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.Strings
     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
-    Bindings.GLib.Utilities.SimpleXmlSubsetParser
-  c-sources: src/inlines.c
-  pkgconfig-depends: glib-2.0 >= 2.22.2, gthread-2.0 >= 2.22.2
+  c-sources:
+    src/inlines.c
+    src/utilities.unicodemanipulation.c
diff --git a/gen_cabal.sh b/gen_cabal.sh
new file mode 100644
--- /dev/null
+++ b/gen_cabal.sh
@@ -0,0 +1,59 @@
+#!/bin/sh
+
+cat <<-"(head-end)"
+	cabal-version: >= 1.4
+	name: bindings-glib
+	synopsis:
+	  Low level bindings to GLib.
+	version: 0.1.4
+	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.hs b/src/Bindings/GLib/CoreApplicationSupport.hs
--- a/src/Bindings/GLib/CoreApplicationSupport.hs
+++ b/src/Bindings/GLib/CoreApplicationSupport.hs
@@ -1,1 +1,19 @@
-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}
+-- | <http://library.gnome.org/devel/glib/stable/glib-core.html>
+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/MemoryAllocation.hsc b/src/Bindings/GLib/CoreApplicationSupport/MemoryAllocation.hsc
--- a/src/Bindings/GLib/CoreApplicationSupport/MemoryAllocation.hsc
+++ b/src/Bindings/GLib/CoreApplicationSupport/MemoryAllocation.hsc
@@ -4,8 +4,8 @@
 -- | <http://library.gnome.org/devel/glib/stable/glib-Memory-Allocation.html>
 
 module Bindings.GLib.CoreApplicationSupport.MemoryAllocation where
+import Bindings.GLib.Fundamentals.BasicTypes
 #strict_import
-import Bindings.GLib.Fundamentals
 
 #ccall g_malloc , <gsize> -> IO <gpointer>
 #ccall g_malloc0 , <gsize> -> IO <gpointer>
diff --git a/src/Bindings/GLib/DataTypes.hs b/src/Bindings/GLib/DataTypes.hs
--- a/src/Bindings/GLib/DataTypes.hs
+++ b/src/Bindings/GLib/DataTypes.hs
@@ -1,1 +1,17 @@
-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}
+-- | <http://library.gnome.org/devel/glib/stable/glib-data-types.html>
+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.Strings,
+  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.Strings
+import Bindings.GLib.DataTypes.TrashStacks
diff --git a/src/Bindings/GLib/DataTypes/Strings.hsc b/src/Bindings/GLib/DataTypes/Strings.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/GLib/DataTypes/Strings.hsc
@@ -0,0 +1,53 @@
+#include <bindings.dsl.h>
+#include <glib.h>
+
+-- | <http://library.gnome.org/devel/glib/stable/glib-Strings.html>
+
+module Bindings.GLib.DataTypes.Strings where
+import Bindings.GLib.Fundamentals.BasicTypes
+import Bindings.GLib.Utilities.UnicodeManipulation
+#strict_import
+
+#starttype GString
+#field str , Ptr <gchar>
+#field len , <gsize>
+#field allocated_len , <gsize>
+#stoptype
+
+#ccall g_string_new , Ptr <gchar> -> IO (Ptr <GString>)
+#ccall g_string_new_len , Ptr <gchar> -> <gssize> -> IO (Ptr <GString>)
+#ccall g_string_sized_new , <gsize> -> IO (Ptr <GString>)
+#ccall g_string_assign , Ptr <GString> -> Ptr <gchar> -> IO (Ptr <GString>)
+#ccall g_string_append , Ptr <GString> -> Ptr <gchar> -> IO (Ptr <GString>)
+#ccall g_string_append_c , Ptr <GString> -> <gchar> -> IO (Ptr <GString>)
+#ccall g_string_append_unichar , Ptr <GString> -> \
+    <gunichar> -> IO (Ptr <GString>)
+#ccall g_string_append_len , Ptr <GString> -> Ptr <gchar> -> \
+    <gssize> -> IO (Ptr <GString>)
+#ccall g_string_append_uri_escaped , Ptr <GString> -> CString -> \
+    CString -> <gboolean> -> IO (Ptr <GString>)
+#ccall g_string_prepend , Ptr <GString> -> Ptr <gchar> -> IO (Ptr <GString>)
+#ccall g_string_prepend_c , Ptr <GString> -> <gchar> -> IO (Ptr <GString>)
+#ccall g_string_prepend_unichar , Ptr <GString> -> \
+    <gunichar> -> IO (Ptr <GString>)
+#ccall g_string_prepend_len , Ptr <GString> -> Ptr <gchar> -> \
+    <gssize> -> IO (Ptr <GString>)
+#ccall g_string_insert , Ptr <GString> -> <gssize> -> \
+    Ptr <gchar> -> IO (Ptr <GString>)
+#ccall g_string_insert_c , Ptr <GString> -> <gssize> -> \
+    <gchar> -> IO (Ptr <GString>)
+#ccall g_string_insert_unichar , Ptr <GString> -> <gssize> -> \
+    <gunichar> -> IO (Ptr <GString>)
+#ccall g_string_insert_len , Ptr <GString> -> <gssize> -> \
+    Ptr <gchar> -> <gssize> -> IO (Ptr <GString>)
+#ccall g_string_overwrite , Ptr <GString> -> <gsize> -> \
+    Ptr <gchar> -> IO (Ptr <GString>)
+#ccall g_string_overwrite_len , Ptr <GString> -> <gsize> -> \
+    Ptr <gchar> -> <gssize> -> IO (Ptr <GString>)
+#ccall g_string_erase , Ptr <GString> -> <gssize> -> \
+    <gssize> -> IO (Ptr <GString>)
+#ccall g_string_truncate , Ptr <GString> -> <gsize> -> IO (Ptr <GString>)
+#ccall g_string_set_size , Ptr <GString> -> <gsize> -> IO (Ptr <GString>)
+#ccall g_string_free , Ptr <GString> -> <gboolean> -> IO (Ptr <gchar>)
+#ccall g_string_hash , Ptr <GString> -> IO <guint>
+#ccall g_string_equal , Ptr <GString> -> Ptr <GString> -> IO <gboolean>
diff --git a/src/Bindings/GLib/Fundamentals.hs b/src/Bindings/GLib/Fundamentals.hs
--- a/src/Bindings/GLib/Fundamentals.hs
+++ b/src/Bindings/GLib/Fundamentals.hs
@@ -1,1 +1,21 @@
-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}
+-- | <http://library.gnome.org/devel/glib/stable/glib-fundamentals.html>
+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/Utilities.hs b/src/Bindings/GLib/Utilities.hs
--- a/src/Bindings/GLib/Utilities.hs
+++ b/src/Bindings/GLib/Utilities.hs
@@ -1,1 +1,13 @@
-module Bindings.GLib.Utilities (module Bindings.GLib.Utilities.CommandlineOptionParser,module Bindings.GLib.Utilities.DateAndTimeFunctions,module Bindings.GLib.Utilities.HostnameUtilities,module Bindings.GLib.Utilities.SimpleXmlSubsetParser) where {import Bindings.GLib.Utilities.CommandlineOptionParser;import Bindings.GLib.Utilities.DateAndTimeFunctions;import Bindings.GLib.Utilities.HostnameUtilities;import Bindings.GLib.Utilities.SimpleXmlSubsetParser}
+-- | <http://library.gnome.org/devel/glib/stable/glib-utilities.html>
+module Bindings.GLib.Utilities (
+  module Bindings.GLib.Utilities.CommandlineOptionParser,
+  module Bindings.GLib.Utilities.DateAndTimeFunctions,
+  module Bindings.GLib.Utilities.HostnameUtilities,
+  module Bindings.GLib.Utilities.SimpleXmlSubsetParser,
+  module Bindings.GLib.Utilities.UnicodeManipulation,
+ ) where
+import Bindings.GLib.Utilities.CommandlineOptionParser
+import Bindings.GLib.Utilities.DateAndTimeFunctions
+import Bindings.GLib.Utilities.HostnameUtilities
+import Bindings.GLib.Utilities.SimpleXmlSubsetParser
+import Bindings.GLib.Utilities.UnicodeManipulation
diff --git a/src/Bindings/GLib/Utilities/SimpleXmlSubsetParser.hsc b/src/Bindings/GLib/Utilities/SimpleXmlSubsetParser.hsc
--- a/src/Bindings/GLib/Utilities/SimpleXmlSubsetParser.hsc
+++ b/src/Bindings/GLib/Utilities/SimpleXmlSubsetParser.hsc
@@ -1,5 +1,5 @@
 #include <bindings.dsl.h>
-#include<glib.h>
+#include <glib.h>
 
 -- | <http://library.gnome.org/devel/glib/stable/glib-Simple-XML-Subset-Parser.html>
 
diff --git a/src/Bindings/GLib/Utilities/UnicodeManipulation.hsc b/src/Bindings/GLib/Utilities/UnicodeManipulation.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/GLib/Utilities/UnicodeManipulation.hsc
@@ -0,0 +1,251 @@
+#include <bindings.dsl.h>
+#include <glib.h>
+
+-- | <http://library.gnome.org/devel/glib/stable/glib-Unicode-Manipulation.html>
+
+module Bindings.GLib.Utilities.UnicodeManipulation where
+import Bindings.GLib.Fundamentals.BasicTypes
+import Bindings.GLib.CoreApplicationSupport.ErrorReporting
+#strict_import
+
+#integral_t gunichar
+#integral_t gunichar2
+
+#ccall g_unichar_validate , <gunichar> -> IO <gboolean>
+#ccall g_unichar_isalnum , <gunichar> -> IO <gboolean>
+#ccall g_unichar_isalpha , <gunichar> -> IO <gboolean>
+#ccall g_unichar_iscntrl , <gunichar> -> IO <gboolean>
+#ccall g_unichar_isdefined , <gunichar> -> IO <gboolean>
+#ccall g_unichar_isdigit , <gunichar> -> IO <gboolean>
+#ccall g_unichar_isgraph , <gunichar> -> IO <gboolean>
+#ccall g_unichar_islower , <gunichar> -> IO <gboolean>
+#ccall g_unichar_ismark , <gunichar> -> IO <gboolean>
+#ccall g_unichar_isprint , <gunichar> -> IO <gboolean>
+#ccall g_unichar_ispunct , <gunichar> -> IO <gboolean>
+#ccall g_unichar_isspace , <gunichar> -> IO <gboolean>
+#ccall g_unichar_istitle , <gunichar> -> IO <gboolean>
+#ccall g_unichar_isupper , <gunichar> -> IO <gboolean>
+#ccall g_unichar_isxdigit , <gunichar> -> IO <gboolean>
+#ccall g_unichar_iswide , <gunichar> -> IO <gboolean>
+#ccall g_unichar_iswide_cjk , <gunichar> -> IO <gboolean>
+#ccall g_unichar_iszerowidth , <gunichar> -> IO <gboolean>
+#ccall g_unichar_toupper , <gunichar> -> IO <gunichar>
+#ccall g_unichar_tolower , <gunichar> -> IO <gunichar>
+#ccall g_unichar_totitle , <gunichar> -> IO <gunichar>
+#ccall g_unichar_digit_value , <gunichar> -> IO <gint>
+#ccall g_unichar_xdigit_value , <gunichar> -> IO <gint>
+
+#integral_t GUnicodeType
+
+#num G_UNICODE_FORMAT
+#num G_UNICODE_UNASSIGNED
+#num G_UNICODE_PRIVATE_USE
+#num G_UNICODE_SURROGATE
+#num G_UNICODE_LOWERCASE_LETTER
+#num G_UNICODE_MODIFIER_LETTER
+#num G_UNICODE_OTHER_LETTER
+#num G_UNICODE_TITLECASE_LETTER
+#num G_UNICODE_UPPERCASE_LETTER
+#num G_UNICODE_COMBINING_MARK
+#num G_UNICODE_ENCLOSING_MARK
+#num G_UNICODE_NON_SPACING_MARK
+#num G_UNICODE_DECIMAL_NUMBER
+#num G_UNICODE_LETTER_NUMBER
+#num G_UNICODE_OTHER_NUMBER
+#num G_UNICODE_CONNECT_PUNCTUATION
+#num G_UNICODE_DASH_PUNCTUATION
+#num G_UNICODE_CLOSE_PUNCTUATION
+#num G_UNICODE_FINAL_PUNCTUATION
+#num G_UNICODE_INITIAL_PUNCTUATION
+#num G_UNICODE_OTHER_PUNCTUATION
+#num G_UNICODE_OPEN_PUNCTUATION
+#num G_UNICODE_CURRENCY_SYMBOL
+#num G_UNICODE_MODIFIER_SYMBOL
+#num G_UNICODE_MATH_SYMBOL
+#num G_UNICODE_OTHER_SYMBOL
+#num G_UNICODE_LINE_SEPARATOR
+#num G_UNICODE_PARAGRAPH_SEPARATOR
+#num G_UNICODE_SPACE_SEPARATOR
+
+#ccall g_unichar_type , <gunichar> -> IO <GUnicodeType>
+
+#integral_t GUnicodeBreakType
+
+#num G_UNICODE_BREAK_MANDATORY
+#num G_UNICODE_BREAK_CARRIAGE_RETURN
+#num G_UNICODE_BREAK_LINE_FEED
+#num G_UNICODE_BREAK_COMBINING_MARK
+#num G_UNICODE_BREAK_SURROGATE
+#num G_UNICODE_BREAK_ZERO_WIDTH_SPACE
+#num G_UNICODE_BREAK_INSEPARABLE
+#num G_UNICODE_BREAK_NON_BREAKING_GLUE
+#num G_UNICODE_BREAK_CONTINGENT
+#num G_UNICODE_BREAK_SPACE
+#num G_UNICODE_BREAK_AFTER
+#num G_UNICODE_BREAK_BEFORE
+#num G_UNICODE_BREAK_BEFORE_AND_AFTER
+#num G_UNICODE_BREAK_HYPHEN
+#num G_UNICODE_BREAK_NON_STARTER
+#num G_UNICODE_BREAK_OPEN_PUNCTUATION
+#num G_UNICODE_BREAK_CLOSE_PUNCTUATION
+#num G_UNICODE_BREAK_QUOTATION
+#num G_UNICODE_BREAK_EXCLAMATION
+#num G_UNICODE_BREAK_IDEOGRAPHIC
+#num G_UNICODE_BREAK_NUMERIC
+#num G_UNICODE_BREAK_INFIX_SEPARATOR
+#num G_UNICODE_BREAK_SYMBOL
+#num G_UNICODE_BREAK_ALPHABETIC
+#num G_UNICODE_BREAK_PREFIX
+#num G_UNICODE_BREAK_POSTFIX
+#num G_UNICODE_BREAK_COMPLEX_CONTEXT
+#num G_UNICODE_BREAK_AMBIGUOUS
+#num G_UNICODE_BREAK_UNKNOWN
+#num G_UNICODE_BREAK_NEXT_LINE
+#num G_UNICODE_BREAK_WORD_JOINER
+#num G_UNICODE_BREAK_HANGUL_L_JAMO
+#num G_UNICODE_BREAK_HANGUL_V_JAMO
+#num G_UNICODE_BREAK_HANGUL_T_JAMO
+#num G_UNICODE_BREAK_HANGUL_LV_SYLLABLE
+#num G_UNICODE_BREAK_HANGUL_LVT_SYLLABLE
+
+#ccall g_unichar_break_type , <gunichar> -> IO <GUnicodeBreakType>
+#ccall g_unichar_combining_class , <gunichar> -> IO <gint>
+#ccall g_unicode_canonical_ordering , Ptr <gunichar> -> <gsize> -> IO ()
+#ccall g_unicode_canonical_decomposition , <gunichar> -> Ptr <gsize> -> IO (Ptr <gunichar>)
+#ccall g_unichar_get_mirror_char , <gunichar> -> Ptr <gunichar> -> IO <gboolean
+
+#integral_t GUnicodeScript
+
+#num G_UNICODE_SCRIPT_INVALID_CODE
+#num G_UNICODE_SCRIPT_COMMON
+#num G_UNICODE_SCRIPT_INHERITED
+#num G_UNICODE_SCRIPT_ARABIC
+#num G_UNICODE_SCRIPT_ARMENIAN
+#num G_UNICODE_SCRIPT_BENGALI
+#num G_UNICODE_SCRIPT_BOPOMOFO
+#num G_UNICODE_SCRIPT_CHEROKEE
+#num G_UNICODE_SCRIPT_COPTIC
+#num G_UNICODE_SCRIPT_CYRILLIC
+#num G_UNICODE_SCRIPT_DESERET
+#num G_UNICODE_SCRIPT_DEVANAGARI
+#num G_UNICODE_SCRIPT_ETHIOPIC
+#num G_UNICODE_SCRIPT_GEORGIAN
+#num G_UNICODE_SCRIPT_GOTHIC
+#num G_UNICODE_SCRIPT_GREEK
+#num G_UNICODE_SCRIPT_GUJARATI
+#num G_UNICODE_SCRIPT_GURMUKHI
+#num G_UNICODE_SCRIPT_HAN
+#num G_UNICODE_SCRIPT_HANGUL
+#num G_UNICODE_SCRIPT_HEBREW
+#num G_UNICODE_SCRIPT_HIRAGANA
+#num G_UNICODE_SCRIPT_KANNADA
+#num G_UNICODE_SCRIPT_KATAKANA
+#num G_UNICODE_SCRIPT_KHMER
+#num G_UNICODE_SCRIPT_LAO
+#num G_UNICODE_SCRIPT_LATIN
+#num G_UNICODE_SCRIPT_MALAYALAM
+#num G_UNICODE_SCRIPT_MONGOLIAN
+#num G_UNICODE_SCRIPT_MYANMAR
+#num G_UNICODE_SCRIPT_OGHAM
+#num G_UNICODE_SCRIPT_OLD_ITALIC
+#num G_UNICODE_SCRIPT_ORIYA
+#num G_UNICODE_SCRIPT_RUNIC
+#num G_UNICODE_SCRIPT_SINHALA
+#num G_UNICODE_SCRIPT_SYRIAC
+#num G_UNICODE_SCRIPT_TAMIL
+#num G_UNICODE_SCRIPT_TELUGU
+#num G_UNICODE_SCRIPT_THAANA
+#num G_UNICODE_SCRIPT_THAI
+#num G_UNICODE_SCRIPT_TIBETAN
+#num G_UNICODE_SCRIPT_CANADIAN_ABORIGINAL
+#num G_UNICODE_SCRIPT_YI
+#num G_UNICODE_SCRIPT_TAGALOG
+#num G_UNICODE_SCRIPT_HANUNOO
+#num G_UNICODE_SCRIPT_BUHID
+#num G_UNICODE_SCRIPT_TAGBANWA
+#num G_UNICODE_SCRIPT_BRAILLE
+#num G_UNICODE_SCRIPT_CYPRIOT
+#num G_UNICODE_SCRIPT_LIMBU
+#num G_UNICODE_SCRIPT_OSMANYA
+#num G_UNICODE_SCRIPT_SHAVIAN
+#num G_UNICODE_SCRIPT_LINEAR_B
+#num G_UNICODE_SCRIPT_TAI_LE
+#num G_UNICODE_SCRIPT_UGARITIC
+#num G_UNICODE_SCRIPT_NEW_TAI_LUE
+#num G_UNICODE_SCRIPT_BUGINESE
+#num G_UNICODE_SCRIPT_GLAGOLITIC
+#num G_UNICODE_SCRIPT_TIFINAGH
+#num G_UNICODE_SCRIPT_SYLOTI_NAGRI
+#num G_UNICODE_SCRIPT_OLD_PERSIAN
+#num G_UNICODE_SCRIPT_KHAROSHTHI
+#num G_UNICODE_SCRIPT_UNKNOWN
+#num G_UNICODE_SCRIPT_BALINESE
+#num G_UNICODE_SCRIPT_CUNEIFORM
+#num G_UNICODE_SCRIPT_PHOENICIAN
+#num G_UNICODE_SCRIPT_PHAGS_PA
+#num G_UNICODE_SCRIPT_NKO
+#num G_UNICODE_SCRIPT_KAYAH_LI
+#num G_UNICODE_SCRIPT_LEPCHA
+#num G_UNICODE_SCRIPT_REJANG
+#num G_UNICODE_SCRIPT_SUNDANESE
+#num G_UNICODE_SCRIPT_SAURASHTRA
+#num G_UNICODE_SCRIPT_CHAM
+#num G_UNICODE_SCRIPT_OL_CHIKI
+#num G_UNICODE_SCRIPT_VAI
+#num G_UNICODE_SCRIPT_CARIAN
+#num G_UNICODE_SCRIPT_LYCIAN
+#num G_UNICODE_SCRIPT_LYDIAN
+
+#ccall g_unichar_get_script , <gunichar> -> IO <GUnicodeScript>
+#cinline g_utf8_next_char , Ptr <gchar> -> IO (Ptr <gchar>)
+
+#ccall g_utf8_get_char , Ptr <gchar> -> IO <gunichar>
+#ccall g_utf8_get_char_validated , Ptr <gchar> -> <gssize> -> IO <gunichar>
+#ccall g_utf8_offset_to_pointer , Ptr <gchar> -> <glong> -> IO (Ptr <gchar>)
+#ccall g_utf8_pointer_to_offset , Ptr <gchar> -> Ptr <gchar> -> IO <glong>
+#ccall g_utf8_prev_char , Ptr <gchar> -> IO (Ptr <gchar>)
+#ccall g_utf8_find_next_char , Ptr <gchar> -> Ptr <gchar> -> IO (Ptr <gchar>)
+#ccall g_utf8_find_prev_char , Ptr <gchar> -> Ptr <gchar> -> IO (Ptr <gchar>)
+#ccall g_utf8_strlen , Ptr <gchar> -> <gssize> -> IO <glong>
+#ccall g_utf8_strncpy , Ptr <gchar> -> Ptr <gchar> -> <gsize> -> IO (Ptr <gchar>)
+#ccall g_utf8_strchr , Ptr <gchar> -> <gssize> -> <gunichar> -> IO (Ptr <gchar>)
+#ccall g_utf8_strrchr , Ptr <gchar> -> <gssize> -> <gunichar> -> IO (Ptr <gchar>)
+#ccall g_utf8_strreverse , Ptr <gchar> -> <gssize> -> IO (Ptr <gchar>)
+#ccall g_utf8_validate , Ptr <gchar> -> <gssize> -> Ptr (Ptr <gchar>) -> IO <gboolean>
+#ccall g_utf8_strup , Ptr <gchar> -> <gssize> -> IO (Ptr <gchar>)
+#ccall g_utf8_strdown , Ptr <gchar> -> <gssize> -> IO (Ptr <gchar>)
+#ccall g_utf8_casefold , Ptr <gchar> -> <gssize> -> IO (Ptr <gchar>)
+#ccall g_utf8_normalize , Ptr <gchar> -> <gssize> -> <GNormalizeMode> -> IO (Ptr <gchar>)
+
+#integral_t GNormalizeMode
+
+#num G_NORMALIZE_DEFAULT
+#num G_NORMALIZE_NFD
+#num G_NORMALIZE_DEFAULT_COMPOSE
+#num G_NORMALIZE_NFC
+#num G_NORMALIZE_ALL
+#num G_NORMALIZE_NFKD
+#num G_NORMALIZE_ALL_COMPOSE
+#num G_NORMALIZE_NFKC
+
+#ccall g_utf8_collate , Ptr <gchar> -> Ptr <gchar> -> IO <gint> 
+#ccall g_utf8_collate_key , Ptr <gchar> -> <gssize> -> IO (Ptr <gchar>)
+#ccall g_utf8_collate_key_for_filename , Ptr <gchar> -> \
+    <gssize> -> IO (Ptr <gchar>)
+#ccall g_utf8_to_utf16 , Ptr <gchar> -> <glong> -> Ptr <glong> -> \
+    Ptr <glong> -> Ptr (Ptr <GError>) -> IO (Ptr <gunichar2>)
+#ccall g_utf8_to_ucs4 , Ptr <gchar> -> <glong> -> Ptr <glong> -> \
+    Ptr <glong> -> Ptr (Ptr <GError>) -> IO (Ptr <gunichar>)
+#ccall g_utf8_to_ucs4_fast , Ptr <gchar> -> <glong> -> \
+    Ptr <glong> -> IO (Ptr <gunichar>)
+#ccall g_utf16_to_ucs4 , Ptr <gunichar2> -> <glong> -> Ptr <glong> -> \
+    Ptr <glong> -> Ptr (Ptr <GError>) -> IO (Ptr <gunichar>)
+#ccall g_utf16_to_utf8 , Ptr <gunichar2> -> <glong> -> Ptr <glong> -> \
+    Ptr <glong> -> Ptr (Ptr <GError>) -> IO (Ptr <gchar>)
+#ccall g_ucs4_to_utf16 , Ptr <gunichar> -> <glong> -> Ptr <glong> -> \
+    Ptr <glong> -> Ptr (Ptr <GError>) -> IO (Ptr <gunichar2>)
+#ccall g_ucs4_to_utf8 , Ptr <gunichar> -> <glong> -> Ptr <glong> -> \
+    Ptr <glong> -> Ptr (Ptr <GError>) -> IO (Ptr <gchar>)
+#ccall g_unichar_to_utf8 , <gunichar> -> Ptr <gchar> -> IO <gint>
+
+
diff --git a/src/utilities.unicodemanipulation.c b/src/utilities.unicodemanipulation.c
new file mode 100644
--- /dev/null
+++ b/src/utilities.unicodemanipulation.c
@@ -0,0 +1,4 @@
+#include <bindings.cmacros.h>
+#include <glib.h>
+
+BC_INLINE1(g_utf8_next_char,gchar*,gchar*)
