49b504955b849e46000bfb9266a85d49d6cb32b0
diff --git a/atk/atkaction.c b/atk/atkaction.c
index f47687c..242b3da 100755
--- a/atk/atkaction.c
+++ b/atk/atkaction.c
@@ -22,21 +22,22 @@
 GType
 atk_action_get_type (void)
 {
-  static GType type = 0;
-
-  if (!type) {
-    GTypeInfo tinfo =
-    {
-      sizeof (AtkActionIface),
-      (GBaseInitFunc) NULL,
-      (GBaseFinalizeFunc) NULL,
-
-    };
-
-    type = g_type_register_static (G_TYPE_INTERFACE, "AtkAction", &tinfo, 0);
+  static volatile gsize g_define_type_id__volatile = 0;
+
+  if (g_once_init_enter (&g_define_type_id__volatile)) {
+    GType g_define_type_id =
+      g_type_register_static_simple (G_TYPE_INTERFACE,
+                                     g_intern_static_string ("AtkAction"),
+                                     sizeof (AtkActionIface),
+                                     NULL,
+                                     0,
+                                     NULL,
+                                     0);
+
+    g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
   }
 
-  return type;
+  return g_define_type_id__volatile;
 }
 
 /**
diff --git a/atk/atkcomponent.c b/atk/atkcomponent.c
index 6e9bd57..4efbf87 100755
--- a/atk/atkcomponent.c
+++ b/atk/atkcomponent.c
@@ -51,21 +51,25 @@ static guint atk_component_signals[LAST_SIGNAL] = { 0 };
 GType
 atk_component_get_type (void)
 {
-  static GType type = 0;
+  static volatile gsize g_define_type_id__volatile = 0;
 
-  if (!type) {
-    static const GTypeInfo tinfo =
+  if (g_once_init_enter (&g_define_type_id__volatile)) {
+    const GTypeInfo tinfo =
     {
       sizeof (AtkComponentIface),
       (GBaseInitFunc) atk_component_base_init,
       (GBaseFinalizeFunc) NULL,
 
     };
+    GType g_define_type_id =
+      g_type_register_static (G_TYPE_INTERFACE,
+                              g_intern_static_string ("AtkComponent"),
+                              &tinfo, 0);
 
-    type = g_type_register_static (G_TYPE_INTERFACE, "AtkComponent", &tinfo, 0);
+    g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
   }
 
-  return type;
+  return g_define_type_id__volatile;
 }
 
 static void
@@ -81,7 +85,7 @@ atk_component_base_init (AtkComponentIface *class)
       class->get_size = atk_component_real_get_size;
 
       atk_component_signals[BOUNDS_CHANGED] =
-        g_signal_new ("bounds_changed",
+        g_signal_new (g_intern_static_string ("bounds_changed"),
                       ATK_TYPE_COMPONENT,
                       G_SIGNAL_RUN_LAST,
                       G_STRUCT_OFFSET (AtkComponentIface, bounds_changed),
@@ -608,12 +612,16 @@ atk_rectangle_copy (const AtkRectangle *rectangle)
 GType
 atk_rectangle_get_type (void)
 {
-  static GType our_type = 0;
+  static volatile gsize g_define_type_id__volatile = 0;
 
-  if (our_type == 0)
-    our_type = g_boxed_type_register_static ("AtkRectangle",
-                                             (GBoxedCopyFunc)atk_rectangle_copy,
-                                             (GBoxedFreeFunc)g_free);
-  return our_type;
-}
+  if (g_once_init_enter (&g_define_type_id__volatile)) {
+    GType g_define_type_id =
+      g_boxed_type_register_static (g_intern_static_string ("AtkRectangle"),
+                                    (GBoxedCopyFunc)atk_rectangle_copy,
+                                    (GBoxedFreeFunc)g_free);
+
+    g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
+  }
 
+  return g_define_type_id__volatile;
+}
diff --git a/atk/atkdocument.c b/atk/atkdocument.c
index 4364c8b..298bb54 100755
--- a/atk/atkdocument.c
+++ b/atk/atkdocument.c
@@ -33,21 +33,24 @@ static guint atk_document_signals[LAST_SIGNAL] = {0};
 GType
 atk_document_get_type (void)
 {
-  static GType type = 0;
+  static volatile gsize g_define_type_id__volatile = 0;
 
-  if (!type) {
-    static const GTypeInfo tinfo =
+  if (g_once_init_enter (&g_define_type_id__volatile)) {
+    const GTypeInfo tinfo =
     {
       sizeof (AtkDocumentIface),
       (GBaseInitFunc) atk_document_base_init,
       (GBaseFinalizeFunc) NULL,
-
     };
+    GType g_define_type_id =
+      g_type_register_static (G_TYPE_INTERFACE,
+                              g_intern_static_string ("AtkDocument"),
+                              &tinfo, 0);
 
-    type = g_type_register_static (G_TYPE_INTERFACE, "AtkDocument", &tinfo, 0);
+    g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
   }
 
-  return type;
+  return g_define_type_id__volatile;
 }
 
 static void
@@ -57,7 +60,7 @@ atk_document_base_init (AtkDocumentIface *class)
   if (!initialized)
     {
       atk_document_signals[LOAD_COMPLETE] =
-        g_signal_new ("load_complete",
+        g_signal_new (g_intern_static_string ("load_complete"),
                       ATK_TYPE_DOCUMENT,
                       G_SIGNAL_RUN_LAST,
                       0,
@@ -65,7 +68,7 @@ atk_document_base_init (AtkDocumentIface *class)
                       g_cclosure_marshal_VOID__VOID,
                       G_TYPE_NONE, 0);
       atk_document_signals[RELOAD] =
-        g_signal_new ("reload",
+        g_signal_new (g_intern_static_string ("reload"),
                       ATK_TYPE_DOCUMENT,
                       G_SIGNAL_RUN_LAST,
                       0,
@@ -73,7 +76,7 @@ atk_document_base_init (AtkDocumentIface *class)
                       g_cclosure_marshal_VOID__VOID,
                       G_TYPE_NONE, 0);
       atk_document_signals[LOAD_STOPPED] =
-        g_signal_new ("load_stopped",
+        g_signal_new (g_intern_static_string ("load_stopped"),
                       ATK_TYPE_DOCUMENT,
                       G_SIGNAL_RUN_LAST,
                       0,
diff --git a/atk/atkeditabletext.c b/atk/atkeditabletext.c
index 6ff8a97..5e785e3 100755
--- a/atk/atkeditabletext.c
+++ b/atk/atkeditabletext.c
@@ -19,25 +19,25 @@
 
 #include "atkeditabletext.h"
 
-
 GType
 atk_editable_text_get_type (void)
 {
-  static GType type = 0;
-
-  if (!type) {
-    static const GTypeInfo tinfo =
-    {
-      sizeof (AtkEditableTextIface),
-      (GBaseInitFunc) NULL,
-      (GBaseFinalizeFunc) NULL,
-
-    };
-
-    type = g_type_register_static (G_TYPE_INTERFACE, "AtkEditableText", &tinfo, 0);
+  static volatile gsize g_define_type_id__volatile = 0;
+
+  if (g_once_init_enter (&g_define_type_id__volatile)) {
+    GType g_define_type_id =
+      g_type_register_static_simple (G_TYPE_INTERFACE,
+                                     g_intern_static_string ("AtkEditableText"),
+                                     sizeof (AtkEditableTextIface),
+                                     NULL,
+                                     0,
+                                     NULL,
+                                     0);
+
+    g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
   }
 
-  return type;
+  return g_define_type_id__volatile;
 }
 
 /**
diff --git a/atk/atkgobjectaccessible.c b/atk/atkgobjectaccessible.c
index a6c7270..ba33d02 100644
--- a/atk/atkgobjectaccessible.c
+++ b/atk/atkgobjectaccessible.c
@@ -26,35 +26,8 @@ static void       atk_gobject_accessible_dispose          (gpointer          dat
 
 static GQuark quark_accessible_object = 0;
 static GQuark quark_object = 0;
-static gpointer parent_class = NULL;
 
-GType
-atk_gobject_accessible_get_type (void)
-{
-  static GType type = 0;
-
-  if (!type)
-    {
-      static const GTypeInfo tinfo =
-      {
-        sizeof (AtkGObjectAccessibleClass),
-        (GBaseInitFunc) NULL, /* base init */
-        (GBaseFinalizeFunc) NULL, /* base finalize */
-        (GClassInitFunc) atk_gobject_accessible_class_init,
-        (GClassFinalizeFunc) NULL, /* class finalize */
-        NULL, /* class data */
-        sizeof (AtkGObjectAccessible),
-        0, /* nb preallocs */
-        (GInstanceInitFunc) NULL, /* instance init */
-        NULL /* value table */
-      };
-
-      type = g_type_register_static (ATK_TYPE_OBJECT,
-                                     "AtkGObjectAccessible", &tinfo, 0);
-    }
-
-  return type;
-}
+G_DEFINE_TYPE (AtkGObjectAccessible, atk_gobject_accessible, ATK_TYPE_OBJECT)
 
 /**
  * atk_gobject_accessible_for_object:
@@ -151,8 +124,6 @@ atk_gobject_accessible_class_init (AtkGObjectAccessibleClass *klass)
 
   class = ATK_OBJECT_CLASS (klass);
 
-  parent_class = g_type_class_peek_parent (klass);
-
   class->initialize = atk_real_gobject_accessible_initialize;
 
   if (!quark_accessible_object)
diff --git a/atk/atkhyperlink.c b/atk/atkhyperlink.c
index 58bc849..131f20e 100755
--- a/atk/atkhyperlink.c
+++ b/atk/atkhyperlink.c
@@ -39,8 +39,7 @@ enum
 };
 
 static void atk_hyperlink_class_init (AtkHyperlinkClass *klass);
-static void atk_hyperlink_init       (AtkHyperlink      *link,
-                                      AtkHyperlinkClass *klass);
+static void atk_hyperlink_init       (AtkHyperlink      *link);
 
 static void atk_hyperlink_real_get_property (GObject            *object,
                                              guint              prop_id,
@@ -51,48 +50,14 @@ static void atk_hyperlink_action_iface_init (AtkActionIface *iface);
 
 static guint atk_hyperlink_signals[LAST_SIGNAL] = { 0, };
 
-static gpointer  parent_class = NULL;
-
-GType
-atk_hyperlink_get_type (void)
-{
-  static GType type = 0;
-
-  if (!type)
-    {
-      static const GTypeInfo typeInfo =
-      {
-        sizeof (AtkHyperlinkClass),
-        (GBaseInitFunc) NULL,
-        (GBaseFinalizeFunc) NULL,
-        (GClassInitFunc) atk_hyperlink_class_init,
-        (GClassFinalizeFunc) NULL,
-        NULL,
-        sizeof (AtkHyperlink),
-        0,
-        (GInstanceInitFunc) atk_hyperlink_init,
-      } ;
-
-      static const GInterfaceInfo action_info =
-      {
-        (GInterfaceInitFunc) atk_hyperlink_action_iface_init,
-        (GInterfaceFinalizeFunc) NULL,
-        NULL
-      };
-
-      type = g_type_register_static (G_TYPE_OBJECT, "AtkHyperlink", &typeInfo, 0) ;
-      g_type_add_interface_static (type, ATK_TYPE_ACTION, &action_info);
-    }
-  return type;
-}
+G_DEFINE_TYPE_WITH_CODE (AtkHyperlink, atk_hyperlink, G_TYPE_OBJECT,
+                         G_IMPLEMENT_INTERFACE (ATK_TYPE_ACTION, atk_hyperlink_action_iface_init))
 
 static void
 atk_hyperlink_class_init (AtkHyperlinkClass *klass)
 {
   GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
 
-  parent_class = g_type_class_peek_parent (klass);
-
   gobject_class->get_property = atk_hyperlink_real_get_property;
 
   klass->link_activated = NULL;
@@ -103,7 +68,8 @@ atk_hyperlink_class_init (AtkHyperlinkClass *klass)
                                                          _("Selected Link"),
                                                          _("Specifies whether the AtkHyperlink object is selected"),
                                                          FALSE,
-                                                         G_PARAM_READABLE));
+                                                         G_PARAM_READABLE |
+                                                         G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
   g_object_class_install_property (gobject_class,
                                    PROP_NUMBER_ANCHORS,
                                    g_param_spec_int ("number-of-anchors",
@@ -112,7 +78,8 @@ atk_hyperlink_class_init (AtkHyperlinkClass *klass)
                                                      0,
                                                      G_MAXINT,
                                                      0,
-                                                     G_PARAM_READABLE));
+                                                     G_PARAM_READABLE |
+                                                     G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
   g_object_class_install_property (gobject_class,
                                    PROP_END_INDEX,
                                    g_param_spec_int ("end-index",
@@ -121,7 +88,8 @@ atk_hyperlink_class_init (AtkHyperlinkClass *klass)
                                                      0,
                                                      G_MAXINT,
                                                      0,
-                                                     G_PARAM_READABLE));
+                                                     G_PARAM_READABLE |
+                                                     G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
   g_object_class_install_property (gobject_class,
                                    PROP_START_INDEX,
                                    g_param_spec_int ("start-index",
@@ -130,9 +98,10 @@ atk_hyperlink_class_init (AtkHyperlinkClass *klass)
                                                      0,
                                                      G_MAXINT,
                                                      0,
-                                                     G_PARAM_READABLE));
+                                                     G_PARAM_READABLE |
+                                                     G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
   atk_hyperlink_signals[LINK_ACTIVATED] =
-    g_signal_new ("link_activated",
+    g_signal_new (g_intern_static_string ("link_activated"),
                   G_TYPE_FROM_CLASS (klass),
                   G_SIGNAL_RUN_LAST,
                   G_STRUCT_OFFSET (AtkHyperlinkClass, link_activated),
@@ -144,8 +113,7 @@ atk_hyperlink_class_init (AtkHyperlinkClass *klass)
 }
 
 static void
-atk_hyperlink_init  (AtkHyperlink        *link,
-                     AtkHyperlinkClass   *klass)
+atk_hyperlink_init  (AtkHyperlink *link)
 {
 }
 
diff --git a/atk/atkhyperlinkimpl.c b/atk/atkhyperlinkimpl.c
index ecf3124..be1770e 100644
--- a/atk/atkhyperlinkimpl.c
+++ b/atk/atkhyperlinkimpl.c
@@ -17,27 +17,29 @@
  * Boston, MA 02111-1307, USA.
  */
 
+#include <config.h>
 #include <string.h>
 #include "atkhyperlinkimpl.h"
 
 GType
 atk_hyperlink_impl_get_type (void)
 {
-  static GType type = 0;
+  static volatile gsize g_define_type_id__volatile = 0;
 
-  if (!type) {
-    GTypeInfo tinfo =
-    {
-      sizeof (AtkHyperlinkImplIface),
-      (GBaseInitFunc) NULL,
-      (GBaseFinalizeFunc) NULL,
-
-    };
+  if (g_once_init_enter (&g_define_type_id__volatile)) {
+    GType g_define_type_id =
+      g_type_register_static_simple (G_TYPE_INTERFACE,
+                                     g_intern_static_string ("AtkHyperlinkImpl"),
+                                     sizeof (AtkHyperlinkImplIface),
+                                     NULL,
+                                     0,
+                                     NULL,
+                                     0);
 
-    type = g_type_register_static (G_TYPE_INTERFACE, "AtkHyperlinkImpl", &tinfo, 0);
+    g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
   }
 
-  return type;
+  return g_define_type_id__volatile;
 }
 
 /**
diff --git a/atk/atkhypertext.c b/atk/atkhypertext.c
index c9b123a..66203ca 100755
--- a/atk/atkhypertext.c
+++ b/atk/atkhypertext.c
@@ -28,25 +28,27 @@ static void atk_hypertext_base_init (AtkHypertextIface *class);
 
 static guint atk_hypertext_signals[LAST_SIGNAL] = { 0 };
 
-
 GType
 atk_hypertext_get_type (void)
 {
-  static GType type = 0;
+  static volatile gsize g_define_type_id__volatile = 0;
 
-  if (!type) {
-    static const GTypeInfo tinfo =
+  if (g_once_init_enter (&g_define_type_id__volatile)) {
+    const GTypeInfo tinfo =
     {
       sizeof (AtkHypertextIface),
       (GBaseInitFunc) atk_hypertext_base_init,
       (GBaseFinalizeFunc) NULL,
-
     };
+    GType g_define_type_id =
+      g_type_register_static (G_TYPE_INTERFACE,
+                              g_intern_static_string ("AtkHypertext"),
+                              &tinfo, 0);
 
-    type = g_type_register_static (G_TYPE_INTERFACE, "AtkHypertext", &tinfo, 0);
+    g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
   }
 
-  return type;
+  return g_define_type_id__volatile;
 }
 
 static void
@@ -57,7 +59,7 @@ atk_hypertext_base_init (AtkHypertextIface *class)
   if (!initialized)
     {
       atk_hypertext_signals[LINK_SELECTED] =
-        g_signal_new ("link_selected",
+        g_signal_new (g_intern_static_string ("link_selected"),
                       ATK_TYPE_HYPERTEXT,
                       G_SIGNAL_RUN_LAST,
                       G_STRUCT_OFFSET (AtkHypertextIface, link_selected),
diff --git a/atk/atkimage.c b/atk/atkimage.c
index 2f9edea..e94320a 100755
--- a/atk/atkimage.c
+++ b/atk/atkimage.c
@@ -22,20 +22,22 @@
 GType
 atk_image_get_type (void)
 {
-  static GType type = 0;
-
-  if (!type) {
-    static const GTypeInfo tinfo =
-    {
-      sizeof (AtkImageIface),
-      (GBaseInitFunc) NULL,
-      (GBaseFinalizeFunc) NULL
-    };
-
-    type = g_type_register_static (G_TYPE_INTERFACE, "AtkImage", &tinfo, 0);
+  static volatile gsize g_define_type_id__volatile = 0;
+
+  if (g_once_init_enter (&g_define_type_id__volatile)) {
+    GType g_define_type_id =
+      g_type_register_static_simple (G_TYPE_INTERFACE,
+                                     g_intern_static_string ("AtkImage"),
+                                     sizeof (AtkImageIface),
+                                     NULL,
+                                     0,
+                                     NULL,
+                                     0);
+
+    g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
   }
 
-  return type;
+  return g_define_type_id__volatile;
 }
 
 /**
diff --git a/atk/atkmisc.c b/atk/atkmisc.c
index 8a16b45..a2e8fc5 100755
--- a/atk/atkmisc.c
+++ b/atk/atkmisc.c
@@ -20,30 +20,9 @@
 #include "atkmisc.h"
 
 static void atk_misc_class_init (AtkMiscClass *klass);
+static void atk_misc_init       (AtkMisc *misc);
 
-GType
-atk_misc_get_type (void)
-{
-  static GType type = 0;
-
-  if (!type)
-    {
-      static const GTypeInfo typeInfo =
-      {
-        sizeof (AtkMiscClass),
-        (GBaseInitFunc) NULL,
-        (GBaseFinalizeFunc) NULL,
-        (GClassInitFunc) atk_misc_class_init,
-        (GClassFinalizeFunc) NULL,
-        NULL,
-        sizeof (AtkMisc),
-        0,
-        (GInstanceInitFunc) NULL,
-      } ;
-      type = g_type_register_static (G_TYPE_OBJECT, "AtkMisc", &typeInfo, 0) ;
-    }
-  return type;
-}
+G_DEFINE_TYPE (AtkMisc, atk_misc, G_TYPE_OBJECT)
 
 static void
 atk_misc_class_init (AtkMiscClass *klass)
@@ -52,6 +31,11 @@ atk_misc_class_init (AtkMiscClass *klass)
   klass->threads_leave = NULL;
 }
 
+static void
+atk_misc_init (AtkMisc *misc)
+{
+}
+
 /**
  * atk_misc_threads_enter:
  * @misc: an AtkMisc instance for this application. 
diff --git a/atk/atknoopobject.c b/atk/atknoopobject.c
index 543f515..120101c 100644
--- a/atk/atknoopobject.c
+++ b/atk/atknoopobject.c
@@ -21,131 +21,43 @@
 #include "atknoopobject.h"
 
 static void atk_no_op_object_class_init (AtkNoOpObjectClass *klass);
+static void atk_no_op_object_init       (AtkNoOpObject      *object);
+static void atk_no_op_object_initialize (AtkObject          *accessible,
+                                         gpointer            data);
+
+G_DEFINE_TYPE_WITH_CODE (AtkNoOpObject, atk_no_op_object, ATK_TYPE_OBJECT,
+                         G_IMPLEMENT_INTERFACE (ATK_TYPE_COMPONENT, NULL)
+                         G_IMPLEMENT_INTERFACE (ATK_TYPE_ACTION, NULL)
+                         G_IMPLEMENT_INTERFACE (ATK_TYPE_EDITABLE_TEXT, NULL)
+                         G_IMPLEMENT_INTERFACE (ATK_TYPE_IMAGE, NULL)
+                         G_IMPLEMENT_INTERFACE (ATK_TYPE_SELECTION, NULL)
+                         G_IMPLEMENT_INTERFACE (ATK_TYPE_TABLE, NULL)
+                         G_IMPLEMENT_INTERFACE (ATK_TYPE_TEXT, NULL)
+                         G_IMPLEMENT_INTERFACE (ATK_TYPE_HYPERTEXT, NULL)
+                         G_IMPLEMENT_INTERFACE (ATK_TYPE_VALUE, NULL)
+                         G_IMPLEMENT_INTERFACE (ATK_TYPE_DOCUMENT, NULL))
 
-static gpointer parent_class = NULL;
-
-
-GType
-atk_no_op_object_get_type (void)
+static void
+atk_no_op_object_class_init (AtkNoOpObjectClass *klass)
 {
-  static GType type = 0;
-
-  if (!type)
-  {
-    static const GTypeInfo tinfo =
-    {
-      sizeof (AtkObjectClass),
-      (GBaseInitFunc) NULL, /* base init */
-      (GBaseFinalizeFunc) NULL, /* base finalize */
-      (GClassInitFunc) atk_no_op_object_class_init, /* class init */
-      (GClassFinalizeFunc) NULL, /* class finalize */
-      NULL, /* class data */
-      sizeof (AtkNoOpObject), /* instance size */
-      0, /* nb preallocs */
-      (GInstanceInitFunc) NULL, /* instance init */
-      NULL /* value table */
-    };
-
-    static const GInterfaceInfo atk_component_info =
-    {
-        (GInterfaceInitFunc) NULL,
-        (GInterfaceFinalizeFunc) NULL,
-        NULL
-    };
-
-    static const GInterfaceInfo atk_action_info =
-    {
-        (GInterfaceInitFunc) NULL,
-        (GInterfaceFinalizeFunc) NULL,
-        NULL
-    };
-
-    static const GInterfaceInfo atk_editable_text_info =
-    {
-        (GInterfaceInitFunc) NULL,
-        (GInterfaceFinalizeFunc) NULL,
-        NULL
-    };
-
-    static const GInterfaceInfo atk_image_info =
-    {
-        (GInterfaceInitFunc) NULL,
-        (GInterfaceFinalizeFunc) NULL,
-        NULL
-    };
-
-    static const GInterfaceInfo atk_selection_info =
-    {
-        (GInterfaceInitFunc) NULL,
-        (GInterfaceFinalizeFunc) NULL,
-        NULL
-    };
-
-    static const GInterfaceInfo atk_table_info =
-    {
-        (GInterfaceInitFunc) NULL,
-        (GInterfaceFinalizeFunc) NULL,
-        NULL
-    };
-
-    static const GInterfaceInfo atk_text_info =
-    {
-        (GInterfaceInitFunc) NULL,
-        (GInterfaceFinalizeFunc) NULL,
-        NULL
-    };
-
-    static const GInterfaceInfo atk_hypertext_info =
-    {
-        (GInterfaceInitFunc) NULL,
-        (GInterfaceFinalizeFunc) NULL,
-        NULL
-    };
+  AtkObjectClass *atk_object_class = ATK_OBJECT_CLASS (klass);
 
-    static const GInterfaceInfo atk_value_info =
-    {
-        (GInterfaceInitFunc) NULL,
-        (GInterfaceFinalizeFunc) NULL,
-        NULL
-    };
-
-    static const GInterfaceInfo atk_document_info =
-    {
-        (GInterfaceInitFunc) NULL,
-        (GInterfaceFinalizeFunc) NULL,
-        NULL
-    };
+  atk_object_class->initialize = atk_no_op_object_initialize;
+}
 
-    type = g_type_register_static (ATK_TYPE_OBJECT,
-                                    "AtkNoOpObject", &tinfo, 0);
-    g_type_add_interface_static (type, ATK_TYPE_COMPONENT,
-                                 &atk_component_info);
-    g_type_add_interface_static (type, ATK_TYPE_ACTION,
-                                 &atk_action_info);
-    g_type_add_interface_static (type, ATK_TYPE_EDITABLE_TEXT,
-                                 &atk_editable_text_info);
-    g_type_add_interface_static (type, ATK_TYPE_IMAGE,
-                                 &atk_image_info);
-    g_type_add_interface_static (type, ATK_TYPE_SELECTION,
-                                 &atk_selection_info);
-    g_type_add_interface_static (type, ATK_TYPE_TABLE,
-                                 &atk_table_info);
-    g_type_add_interface_static (type, ATK_TYPE_TEXT,
-                                 &atk_text_info);
-    g_type_add_interface_static (type, ATK_TYPE_HYPERTEXT,
-                                 &atk_hypertext_info);
-    g_type_add_interface_static (type, ATK_TYPE_VALUE,
-                                 &atk_value_info);
-    g_type_add_interface_static (type, ATK_TYPE_DOCUMENT,
-                                 &atk_document_info);
-  }
-  return type;
+static void
+atk_no_op_object_init (AtkNoOpObject *object)
+{
 }
 
 static void
-atk_no_op_object_class_init (AtkNoOpObjectClass *klass)
+atk_no_op_object_initialize (AtkObject *accessible,
+                             gpointer data)
 {
-  parent_class = g_type_class_peek_parent (klass);
+  ATK_OBJECT_CLASS (atk_no_op_object_parent_class)->initialize (accessible, data);
+
+  accessible->role = ATK_ROLE_INVALID;
+  accessible->layer = ATK_LAYER_INVALID;
 }
 
 /**
@@ -166,10 +78,7 @@ atk_no_op_object_new (GObject *obj)
 
   accessible = g_object_new (ATK_TYPE_NO_OP_OBJECT, NULL);
   g_return_val_if_fail (accessible != NULL, NULL);
-
-  accessible->role = ATK_ROLE_INVALID;
-  accessible->layer = ATK_LAYER_INVALID;
+  atk_object_initialize (ATK_OBJECT (accessible), obj);
 
   return accessible;
 }
-
diff --git a/atk/atknoopobjectfactory.c b/atk/atknoopobjectfactory.c
index 951332f..fbe3b6d 100755
--- a/atk/atknoopobjectfactory.c
+++ b/atk/atknoopobjectfactory.c
@@ -23,52 +23,29 @@
 
 static void atk_no_op_object_factory_class_init (
                               AtkNoOpObjectFactoryClass        *klass);
+static void atk_no_op_object_factory_init (
+                              AtkNoOpObjectFactory             *factory);
 
 static AtkObject* atk_no_op_object_factory_create_accessible (
                               GObject                          *obj);
 static GType      atk_no_op_object_factory_get_accessible_type (void);
 
-static gpointer    parent_class = NULL;
-
-GType
-atk_no_op_object_factory_get_type (void)
-{
-  static GType type = 0;
-
-  if (!type) 
-  {
-    static const GTypeInfo tinfo =
-    {
-      sizeof (AtkNoOpObjectFactoryClass),
-      (GBaseInitFunc) NULL, /* base init */
-      (GBaseFinalizeFunc) NULL, /* base finalize */
-      (GClassInitFunc) atk_no_op_object_factory_class_init, /* class init */
-      (GClassFinalizeFunc) NULL, /* class finalize */
-      NULL, /* class data */
-      sizeof (AtkNoOpObjectFactory), /* instance size */
-      0, /* nb preallocs */
-      (GInstanceInitFunc) NULL, /* instance init */
-      NULL /* value table */
-    };
-    type = g_type_register_static (
-                           ATK_TYPE_OBJECT_FACTORY, 
-                           "AtkNoOpObjectFactory" , &tinfo, 0);
-  }
-
-  return type;
-}
+G_DEFINE_TYPE (AtkNoOpObjectFactory, atk_no_op_object_factory, ATK_TYPE_OBJECT_FACTORY)
 
 static void 
 atk_no_op_object_factory_class_init (AtkNoOpObjectFactoryClass *klass)
 {
   AtkObjectFactoryClass *class = ATK_OBJECT_FACTORY_CLASS (klass);
 
-  parent_class = g_type_class_peek_parent (klass);
-
   class->create_accessible = atk_no_op_object_factory_create_accessible;
   class->get_accessible_type = atk_no_op_object_factory_get_accessible_type;
 }
 
+static void 
+atk_no_op_object_factory_init (AtkNoOpObjectFactory *factory)
+{
+}
+
 /**
  * atk_no_op_object_factory_new:
  *
diff --git a/atk/atkobject.c b/atk/atkobject.c
index 5e88303..c56365f 100755
--- a/atk/atkobject.c
+++ b/atk/atkobject.c
@@ -168,9 +168,8 @@ static const AtkRoleItem role_items [] =
 };
 
 static void            atk_object_class_init        (AtkObjectClass  *klass);
-static void            atk_object_init              (AtkObject       *accessible,
-                                                     AtkObjectClass  *klass);
-static AtkRelationSet* atk_object_real_ref_relation_set 
+static void            atk_object_init              (AtkObject       *accessible);
+static AtkRelationSet* atk_object_real_ref_relation_set
                                                     (AtkObject       *accessible);
 static void            atk_object_real_initialize   (AtkObject       *accessible,
                                                      gpointer        data);
@@ -215,8 +214,6 @@ static void            atk_object_notify           (GObject         *obj,
 
 static guint atk_object_signals[LAST_SIGNAL] = { 0, };
 
-static gpointer parent_class = NULL;
-
 static const gchar* const atk_object_name_property_name = "accessible-name";
 static const gchar* const atk_object_name_property_description = "accessible-description";
 static const gchar* const atk_object_name_property_parent = "accessible-parent";
@@ -282,37 +279,13 @@ gettext_initialization (void)
 #endif
 }
 
-GType
-atk_object_get_type (void)
-{
-  static GType type = 0;
-
-  if (!type)
-    {
-      static const GTypeInfo typeInfo =
-      {
-        sizeof (AtkObjectClass),
-        (GBaseInitFunc) NULL,
-        (GBaseFinalizeFunc) NULL,
-        (GClassInitFunc) atk_object_class_init,
-        (GClassFinalizeFunc) NULL,
-        NULL,
-        sizeof (AtkObject),
-        0,
-        (GInstanceInitFunc) atk_object_init,
-      } ;
-      type = g_type_register_static (G_TYPE_OBJECT, "AtkObject", &typeInfo, 0) ;
-    }
-  return type;
-}
+G_DEFINE_TYPE (AtkObject, atk_object, G_TYPE_OBJECT)
 
 static void
 atk_object_class_init (AtkObjectClass *klass)
 {
   GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
 
-  parent_class = g_type_class_peek_parent (klass);
-
   gobject_class->set_property = atk_object_real_set_property;
   gobject_class->get_property = atk_object_real_get_property;
   gobject_class->finalize = atk_object_finalize;
@@ -356,21 +329,24 @@ atk_object_class_init (AtkObjectClass *klass)
                                                         _("Accessible Name"),
                                                         _("Object instance\'s name formatted for assistive technology access"),
                                                         NULL,
-                                                        G_PARAM_READWRITE));
+                                                        G_PARAM_READWRITE |
+                                                        G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
   g_object_class_install_property (gobject_class,
                                    PROP_DESCRIPTION,
                                    g_param_spec_string (atk_object_name_property_description,
                                                         _("Accessible Description"),
                                                         _("Description of an object, formatted for assistive technology access"),
                                                         NULL,
-                                                        G_PARAM_READWRITE));
+                                                        G_PARAM_READWRITE |
+                                                        G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
   g_object_class_install_property (gobject_class,
                                    PROP_PARENT,
                                    g_param_spec_object (atk_object_name_property_parent,
                                                         _("Accessible Parent"),
                                                         _("Is used to notify that the parent has changed"),
                                                         ATK_TYPE_OBJECT,
-                                                        G_PARAM_READWRITE));
+                                                        G_PARAM_READWRITE |
+                                                        G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
   g_object_class_install_property (gobject_class,
                                    PROP_VALUE,
                                    g_param_spec_double (atk_object_name_property_value,
@@ -379,7 +355,8 @@ atk_object_class_init (AtkObjectClass *klass)
                                                         0.0,
                                                         G_MAXDOUBLE,
                                                         0.0,
-                                                        G_PARAM_READWRITE));
+                                                        G_PARAM_READWRITE |
+                                                        G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
   g_object_class_install_property (gobject_class,
                                    PROP_ROLE,
                                    g_param_spec_int    (atk_object_name_property_role,
@@ -388,7 +365,8 @@ atk_object_class_init (AtkObjectClass *klass)
                                                         0,
                                                         G_MAXINT,
                                                         0,
-                                                        G_PARAM_READWRITE));
+                                                        G_PARAM_READWRITE |
+                                                        G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
   g_object_class_install_property (gobject_class,
                                    PROP_LAYER,
                                    g_param_spec_int    (atk_object_name_property_component_layer,
@@ -397,7 +375,8 @@ atk_object_class_init (AtkObjectClass *klass)
                                                         0,
                                                         G_MAXINT,
                                                         0,
-                                                        G_PARAM_READABLE));
+                                                        G_PARAM_READABLE |
+                                                        G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
   g_object_class_install_property (gobject_class,
                                    PROP_MDI_ZORDER,
                                    g_param_spec_int    (atk_object_name_property_component_mdi_zorder,
@@ -406,56 +385,64 @@ atk_object_class_init (AtkObjectClass *klass)
                                                         G_MININT,
                                                         G_MAXINT,
                                                         G_MININT,
-                                                        G_PARAM_READABLE));
+                                                        G_PARAM_READABLE |
+                                                        G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
   g_object_class_install_property (gobject_class,
                                    PROP_TABLE_CAPTION,
                                    g_param_spec_string (atk_object_name_property_table_caption,
                                                         _("Accessible Table Caption"),
                                                         _("Is used to notify that the table caption has changed; this property should not be used. accessible-table-caption-object should be used instead"),
                                                         NULL,
-                                                        G_PARAM_READWRITE));
+                                                        G_PARAM_READWRITE |
+                                                        G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
   g_object_class_install_property (gobject_class,
                                    PROP_TABLE_COLUMN_HEADER,
                                    g_param_spec_object (atk_object_name_property_table_column_header,
                                                         _("Accessible Table Column Header"),
                                                         _("Is used to notify that the table column header has changed"),
                                                         ATK_TYPE_OBJECT,
-                                                        G_PARAM_READWRITE));
+                                                        G_PARAM_READWRITE |
+                                                        G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
   g_object_class_install_property (gobject_class,
                                    PROP_TABLE_COLUMN_DESCRIPTION,
                                    g_param_spec_string (atk_object_name_property_table_column_description,
                                                         _("Accessible Table Column Description"),
                                                         _("Is used to notify that the table column description has changed"),
                                                         NULL,
-                                                        G_PARAM_READWRITE));
+                                                        G_PARAM_READWRITE |
+                                                        G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
   g_object_class_install_property (gobject_class,
                                    PROP_TABLE_ROW_HEADER,
                                    g_param_spec_object (atk_object_name_property_table_row_header,
                                                         _("Accessible Table Row Header"),
                                                         _("Is used to notify that the table row header has changed"),
                                                         ATK_TYPE_OBJECT,
-                                                        G_PARAM_READWRITE));
+                                                        G_PARAM_READWRITE |
+                                                        G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
   g_object_class_install_property (gobject_class,
                                    PROP_TABLE_ROW_DESCRIPTION,
                                    g_param_spec_string (atk_object_name_property_table_row_description,
                                                         _("Accessible Table Row Description"),
                                                         _("Is used to notify that the table row description has changed"),
                                                         NULL,
-                                                        G_PARAM_READWRITE));
+                                                        G_PARAM_READWRITE |
+                                                        G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
   g_object_class_install_property (gobject_class,
                                    PROP_TABLE_SUMMARY,
                                    g_param_spec_object (atk_object_name_property_table_summary,
                                                         _("Accessible Table Summary"),
                                                         _("Is used to notify that the table summary has changed"),
                                                         ATK_TYPE_OBJECT,
-                                                        G_PARAM_READWRITE));
+                                                        G_PARAM_READWRITE |
+                                                        G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
   g_object_class_install_property (gobject_class,
                                    PROP_TABLE_CAPTION_OBJECT,
                                    g_param_spec_object (atk_object_name_property_table_caption_object,
                                                         _("Accessible Table Caption Object"),
                                                         _("Is used to notify that the table caption has changed"),
                                                         ATK_TYPE_OBJECT,
-                                                        G_PARAM_READWRITE));
+                                                        G_PARAM_READWRITE |
+                                                        G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
   g_object_class_install_property (gobject_class,
                                    PROP_HYPERTEXT_NUM_LINKS,
                                    g_param_spec_int    (atk_object_name_property_hypertext_num_links,
@@ -464,9 +451,10 @@ atk_object_class_init (AtkObjectClass *klass)
                                                         0,
                                                         G_MAXINT,
                                                         0,
-                                                        G_PARAM_READABLE));
+                                                        G_PARAM_READABLE |
+                                                        G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
   atk_object_signals[CHILDREN_CHANGED] =
-    g_signal_new ("children_changed",
+    g_signal_new (g_intern_static_string ("children_changed"),
 		  G_TYPE_FROM_CLASS (klass),
 		  G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED,
 		  G_STRUCT_OFFSET (AtkObjectClass, children_changed),
@@ -475,7 +463,7 @@ atk_object_class_init (AtkObjectClass *klass)
 		  G_TYPE_NONE,
 		  2, G_TYPE_UINT, G_TYPE_POINTER);
   atk_object_signals[FOCUS_EVENT] =
-    g_signal_new ("focus_event",
+    g_signal_new (g_intern_static_string ("focus_event"),
 		  G_TYPE_FROM_CLASS (klass),
 		  G_SIGNAL_RUN_LAST,
 		  G_STRUCT_OFFSET (AtkObjectClass, focus_event), 
@@ -484,7 +472,7 @@ atk_object_class_init (AtkObjectClass *klass)
 		  G_TYPE_NONE,
 		  1, G_TYPE_BOOLEAN);
   atk_object_signals[PROPERTY_CHANGE] =
-    g_signal_new ("property_change",
+    g_signal_new (g_intern_static_string ("property_change"),
                   G_TYPE_FROM_CLASS (klass),
                   G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED,
                   G_STRUCT_OFFSET (AtkObjectClass, property_change),
@@ -493,7 +481,7 @@ atk_object_class_init (AtkObjectClass *klass)
                   G_TYPE_NONE, 1,
                   G_TYPE_POINTER);
   atk_object_signals[STATE_CHANGE] =
-    g_signal_new ("state_change",
+    g_signal_new (g_intern_static_string ("state_change"),
                   G_TYPE_FROM_CLASS (klass),
                   G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED,
                   G_STRUCT_OFFSET (AtkObjectClass, state_change),
@@ -503,7 +491,7 @@ atk_object_class_init (AtkObjectClass *klass)
                   G_TYPE_STRING,
                   G_TYPE_BOOLEAN);
   atk_object_signals[VISIBLE_DATA_CHANGED] =
-    g_signal_new ("visible_data_changed",
+    g_signal_new (g_intern_static_string ("visible_data_changed"),
                   G_TYPE_FROM_CLASS (klass),
                   G_SIGNAL_RUN_LAST,
                   G_STRUCT_OFFSET (AtkObjectClass, visible_data_changed),
@@ -511,7 +499,7 @@ atk_object_class_init (AtkObjectClass *klass)
                   g_cclosure_marshal_VOID__VOID,
                   G_TYPE_NONE, 0);
   atk_object_signals[ACTIVE_DESCENDANT_CHANGED] =
-    g_signal_new ("active_descendant_changed",
+    g_signal_new (g_intern_static_string ("active_descendant_changed"),
 		  G_TYPE_FROM_CLASS (klass),
 		  G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED,
 		  G_STRUCT_OFFSET (AtkObjectClass, active_descendant_changed),
@@ -522,8 +510,7 @@ atk_object_class_init (AtkObjectClass *klass)
 }
 
 static void
-atk_object_init  (AtkObject        *accessible,
-                  AtkObjectClass   *klass)
+atk_object_init  (AtkObject *accessible)
 {
   accessible->name = NULL;
   accessible->description = NULL;
@@ -535,21 +522,22 @@ atk_object_init  (AtkObject        *accessible,
 GType
 atk_implementor_get_type (void)
 {
-  static GType type = 0;
-
-  if (!type)
-    {
-      static const GTypeInfo typeInfo =
-      {
-        sizeof (AtkImplementorIface),
-        (GBaseInitFunc) NULL,
-        (GBaseFinalizeFunc) NULL,
-      } ;
-
-      type = g_type_register_static (G_TYPE_INTERFACE, "AtkImplementorIface", &typeInfo, 0) ;
-    }
-
-  return type;
+  static volatile gsize g_define_type_id__volatile = 0;
+
+  if (g_once_init_enter (&g_define_type_id__volatile)) {
+    GType g_define_type_id =
+      g_type_register_static_simple (G_TYPE_INTERFACE,
+                                     g_intern_static_string ("AtkImplementorIface"),
+                                     sizeof (AtkImplementorIface),
+                                     NULL,
+                                     0,
+                                     NULL,
+                                     0);
+
+    g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
+  }
+
+  return g_define_type_id__volatile;
 }
 
 /**
@@ -1184,7 +1172,7 @@ atk_object_finalize (GObject *object)
   if (accessible->accessible_parent)
     g_object_unref (accessible->accessible_parent);
 
-  G_OBJECT_CLASS (parent_class)->finalize (object);
+  G_OBJECT_CLASS (atk_object_parent_class)->finalize (object);
 }
 
 static G_CONST_RETURN gchar*
diff --git a/atk/atkobjectfactory.c b/atk/atkobjectfactory.c
index 81ab3b3..f7a0cea 100755
--- a/atk/atkobjectfactory.c
+++ b/atk/atkobjectfactory.c
@@ -21,39 +21,18 @@
 #include "atknoopobjectfactory.h"
 
 static void atk_object_factory_class_init   (AtkObjectFactoryClass        *klass);
+static void atk_object_factory_init         (AtkObjectFactory             *factory);
 
-static gpointer    parent_class = NULL;
+G_DEFINE_TYPE (AtkObjectFactory, atk_object_factory, G_TYPE_OBJECT)
 
-GType
-atk_object_factory_get_type (void)
+static void 
+atk_object_factory_class_init (AtkObjectFactoryClass *klass)
 {
-  static GType type = 0;
-
-  if (!type) {
-    GTypeInfo tinfo =
-    {
-      sizeof (AtkObjectFactoryClass),
-      (GBaseInitFunc) NULL, /* base init */
-      (GBaseFinalizeFunc) NULL, /* base finalize */
-      (GClassInitFunc) atk_object_factory_class_init, /* class init */
-      (GClassFinalizeFunc) NULL, /* class finalize */
-      NULL, /* class data */
-      sizeof (AtkObjectFactory), /* instance size */
-      0, /* nb preallocs */
-      (GInstanceInitFunc) NULL, /* instance init */
-      NULL /* value table */
-    };
-
-    type = g_type_register_static (G_TYPE_OBJECT, "AtkObjectFactory", &tinfo, 0);
-  }
-  return type;
 }
 
 static void 
-atk_object_factory_class_init (AtkObjectFactoryClass *klass)
+atk_object_factory_init (AtkObjectFactory *factory)
 {
-  parent_class = g_type_class_peek_parent (klass);
-
 }
 
 /**
diff --git a/atk/atkregistry.c b/atk/atkregistry.c
index 1fbf443..713c4ca 100644
--- a/atk/atkregistry.c
+++ b/atk/atkregistry.c
@@ -22,48 +22,18 @@
 
 static AtkRegistry *default_registry = NULL;
 
-static void              atk_registry_init           (AtkRegistry      *instance,
-                                                      AtkRegistryClass *klass);
+static void              atk_registry_init           (AtkRegistry      *instance);
 static void              atk_registry_finalize       (GObject          *instance);
 static void              atk_registry_class_init     (AtkRegistryClass *klass);
 static AtkRegistry*      atk_registry_new            (void);
 
-static gpointer parent_class = NULL;
-
-GType
-atk_registry_get_type (void)
-{
-  static GType type = 0;
-
-  if (!type)
-    {
-      static const GTypeInfo info =
-      {
-        sizeof (AtkRegistryClass),
-        (GBaseInitFunc) NULL,                             /* base_init */
-        (GBaseFinalizeFunc) NULL,                         /* base_finalize */
-        (GClassInitFunc) atk_registry_class_init,         /* class_init */
-        (GClassFinalizeFunc) NULL,                        /* class_finalize */
-        NULL,                                             /* class_data */
-        sizeof (AtkRegistry),                             /* instance size */
-        0,                                                /* n_preallocs */
-        (GInstanceInitFunc) atk_registry_init,            /* instance init */
-        NULL                                              /* value table */
-      };
-
-      type = g_type_register_static (G_TYPE_OBJECT, "AtkRegistry", &info, 0);
-    }
-
-  return type;
-}
+G_DEFINE_TYPE (AtkRegistry, atk_registry, G_TYPE_OBJECT)
 
 static void
 atk_registry_class_init (AtkRegistryClass *klass)
 {
   GObjectClass *object_class = (GObjectClass *) klass;
 
-  parent_class = g_type_class_peek_parent (klass);
-
   object_class->finalize = atk_registry_finalize;
 }
 
@@ -82,7 +52,7 @@ atk_registry_class_finalize (GObjectClass *klass)
 #endif
 
 static void
-atk_registry_init (AtkRegistry *instance, AtkRegistryClass *klass)
+atk_registry_init (AtkRegistry *instance)
 {
   instance->factory_type_registry = g_hash_table_new ((GHashFunc) NULL, 
                                                       (GEqualFunc) NULL);
@@ -110,7 +80,7 @@ atk_registry_finalize (GObject *object)
   g_hash_table_destroy (registry->factory_type_registry);
   g_hash_table_destroy (registry->factory_singleton_cache);
 
-  G_OBJECT_CLASS (parent_class)->finalize (object);
+  G_OBJECT_CLASS (atk_registry_parent_class)->finalize (object);
 }
 
 /**
diff --git a/atk/atkrelation.c b/atk/atkrelation.c
index 92000c9..cd44605 100755
--- a/atk/atkrelation.c
+++ b/atk/atkrelation.c
@@ -33,9 +33,8 @@ enum {
 
 static GPtrArray *extra_names = NULL;
 
-static gpointer parent_class = NULL;
-  
 static void atk_relation_class_init   (AtkRelationClass *klass);
+static void atk_relation_init         (AtkRelation      *relation);
 static void atk_relation_finalize     (GObject          *object);
 static void atk_relation_set_property (GObject          *object,
                                        guint            prop_id,
@@ -49,37 +48,13 @@ static void atk_relation_get_property (GObject          *object,
 static GPtrArray* atk_relation_get_ptr_array_from_value_array (GValueArray *array);
 static GValueArray* atk_relation_get_value_array_from_ptr_array (GPtrArray *array);
 
-GType
-atk_relation_get_type (void)
-{
-  static GType type = 0;
-
-  if (!type)
-    {
-      static const GTypeInfo typeInfo =
-      {
-        sizeof (AtkRelationClass),
-        (GBaseInitFunc) NULL,
-        (GBaseFinalizeFunc) NULL,
-        (GClassInitFunc) atk_relation_class_init,
-        (GClassFinalizeFunc) NULL,
-        NULL,
-        sizeof (AtkRelation),
-        0,
-        (GInstanceInitFunc) NULL,
-      } ;
-      type = g_type_register_static (G_TYPE_OBJECT, "AtkRelation", &typeInfo, 0) ;
-    }
-  return type;
-}
+G_DEFINE_TYPE (AtkRelation, atk_relation, G_TYPE_OBJECT)
 
 static void
 atk_relation_class_init (AtkRelationClass *klass)
 {
   GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
 
-  parent_class = g_type_class_peek_parent (klass);
-  
   gobject_class->finalize = atk_relation_finalize;
   gobject_class->set_property = atk_relation_set_property;
   gobject_class->get_property = atk_relation_get_property;
@@ -91,15 +66,21 @@ atk_relation_class_init (AtkRelationClass *klass)
                                                       "The type of the relation",
                                                       ATK_TYPE_RELATION_TYPE,
                                                       ATK_RELATION_NULL,
-                                                      G_PARAM_READWRITE));
+                                                      G_PARAM_READWRITE |
+                                                      G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
   g_object_class_install_property (gobject_class,
                                    PROP_TARGET,
                                    g_param_spec_value_array ("target",
                                                              "Target",
                                                              "An array of the targets for the relation",
                                                              NULL,
+                                                             G_PARAM_READWRITE |
+                                                             G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
+}
 
-                                                             G_PARAM_READWRITE));
+static void
+atk_relation_init (AtkRelation *relation)
+{
 }
 
 /**
@@ -355,7 +336,7 @@ atk_relation_finalize (GObject *object)
     g_ptr_array_free (relation->target, TRUE);
   } 
 
-  G_OBJECT_CLASS (parent_class)->finalize (object);
+  G_OBJECT_CLASS (atk_relation_parent_class)->finalize (object);
 }
 
 static void 
diff --git a/atk/atkrelationset.c b/atk/atkrelationset.c
index 7de1d62..f98084d 100755
--- a/atk/atkrelationset.c
+++ b/atk/atkrelationset.c
@@ -21,45 +21,25 @@
 
 #include "atk.h"
 
-static gpointer parent_class = NULL;
-
 static void atk_relation_set_class_init (AtkRelationSetClass  *klass);
+static void atk_relation_set_init       (AtkRelationSet       *set);
 static void atk_relation_set_finalize   (GObject              *object);
 
-GType
-atk_relation_set_get_type (void)
-{
-  static GType type = 0;
-
-  if (!type)
-    {
-      static const GTypeInfo typeInfo =
-      {
-        sizeof (AtkRelationSetClass),
-        (GBaseInitFunc) NULL,
-        (GBaseFinalizeFunc) NULL,
-        (GClassInitFunc) atk_relation_set_class_init,
-        (GClassFinalizeFunc) NULL,
-        NULL,
-        sizeof (AtkRelationSet),
-        0,
-        (GInstanceInitFunc) NULL,
-      } ;
-      type = g_type_register_static (G_TYPE_OBJECT, "AtkRelationSet", &typeInfo, 0) ;
-    }
-  return type;
-}
+G_DEFINE_TYPE (AtkRelationSet, atk_relation_set, G_TYPE_OBJECT)
 
 static void
 atk_relation_set_class_init (AtkRelationSetClass *klass)
 {
   GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
 
-  parent_class = g_type_class_peek_parent (klass);
-
   gobject_class->finalize = atk_relation_set_finalize;
 }
 
+static void
+atk_relation_set_init (AtkRelationSet *set)
+{
+}
+
 /**
  * atk_relation_set_new:
  * 
@@ -262,7 +242,7 @@ atk_relation_set_finalize (GObject *object)
     g_ptr_array_free (array, TRUE);
   }
 
-  G_OBJECT_CLASS (parent_class)->finalize (object);
+  G_OBJECT_CLASS (atk_relation_set_parent_class)->finalize (object);
 }
 
 /**
diff --git a/atk/atkselection.c b/atk/atkselection.c
index 4088fa8..b5edd1c 100755
--- a/atk/atkselection.c
+++ b/atk/atkselection.c
@@ -31,21 +31,24 @@ static guint atk_selection_signals[LAST_SIGNAL] = { 0 };
 GType
 atk_selection_get_type (void)
 {
-  static GType type = 0;
+  static volatile gsize g_define_type_id__volatile = 0;
 
-  if (!type) {
-    GTypeInfo tinfo =
+  if (g_once_init_enter (&g_define_type_id__volatile)) {
+    const GTypeInfo tinfo =
     {
       sizeof (AtkSelectionIface),
       (GBaseInitFunc)atk_selection_base_init,
       (GBaseFinalizeFunc) NULL,
-
     };
+    GType g_define_type_id =
+      g_type_register_static (G_TYPE_INTERFACE,
+                              g_intern_static_string ("AtkSelection"),
+                              &tinfo, 0);
 
-    type = g_type_register_static (G_TYPE_INTERFACE, "AtkSelection", &tinfo, 0);
+    g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
   }
 
-  return type;
+  return g_define_type_id__volatile;
 }
 
 static void
@@ -56,7 +59,7 @@ atk_selection_base_init (gpointer *g_class)
   if (! initialized)
     {
       atk_selection_signals[SELECTION_CHANGED] =
-        g_signal_new ("selection_changed",
+        g_signal_new (g_intern_static_string ("selection_changed"),
                       ATK_TYPE_SELECTION,
                       G_SIGNAL_RUN_LAST,
                       G_STRUCT_OFFSET (AtkSelectionIface, selection_changed),
diff --git a/atk/atkstateset.c b/atk/atkstateset.c
index 2b98fa4..79af962 100755
--- a/atk/atkstateset.c
+++ b/atk/atkstateset.c
@@ -34,33 +34,17 @@ struct _AtkRealStateSet
 typedef struct _AtkRealStateSet      AtkRealStateSet;
 
 static void            atk_state_set_class_init       (AtkStateSetClass  *klass);
+static void            atk_state_set_init             (AtkStateSet *set);
 
-GType
-atk_state_set_get_type (void)
+G_DEFINE_TYPE (AtkStateSet, atk_state_set, G_TYPE_OBJECT)
+
+static void
+atk_state_set_class_init (AtkStateSetClass *klass)
 {
-  static GType type = 0;
-
-  if (!type)
-    {
-      static const GTypeInfo typeInfo =
-      {
-        sizeof (AtkStateSetClass),
-        (GBaseInitFunc) NULL,
-        (GBaseFinalizeFunc) NULL,
-        (GClassInitFunc) atk_state_set_class_init,
-        (GClassFinalizeFunc) NULL,
-        NULL,
-        sizeof (AtkRealStateSet),
-        0,
-        (GInstanceInitFunc) NULL,
-      } ;
-      type = g_type_register_static (G_TYPE_OBJECT, "AtkStateSet", &typeInfo, 0) ;
-    }
-  return type;
 }
 
 static void
-atk_state_set_class_init (AtkStateSetClass *klass)
+atk_state_set_init (AtkStateSet *set)
 {
 }
 
diff --git a/atk/atkstreamablecontent.c b/atk/atkstreamablecontent.c
index 37f5549..a9803c7 100755
--- a/atk/atkstreamablecontent.c
+++ b/atk/atkstreamablecontent.c
@@ -22,21 +22,22 @@
 GType
 atk_streamable_content_get_type (void)
 {
-  static GType type = 0;
-
-  if (!type) {
-    GTypeInfo tinfo =
-    {
-      sizeof (AtkStreamableContentIface),
-      (GBaseInitFunc) NULL,
-      (GBaseFinalizeFunc) NULL,
-
-    };
-
-    type = g_type_register_static (G_TYPE_INTERFACE, "AtkStreamableContent", &tinfo, 0);
+  static volatile gsize g_define_type_id__volatile = 0;
+
+  if (g_once_init_enter (&g_define_type_id__volatile)) {
+    GType g_define_type_id =
+      g_type_register_static_simple (G_TYPE_INTERFACE,
+                                     g_intern_static_string ("AtkStreamableContent"),
+                                     sizeof (AtkStreamableContentIface),
+                                     NULL,
+                                     0,
+                                     NULL,
+                                     0);
+
+    g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
   }
 
-  return type;
+  return g_define_type_id__volatile;
 }
 
 /**
diff --git a/atk/atktable.c b/atk/atktable.c
index 5cecaf6..100c9a8 100755
--- a/atk/atktable.c
+++ b/atk/atktable.c
@@ -38,23 +38,25 @@ static guint atk_table_signals[LAST_SIGNAL] = { 0 };
 GType
 atk_table_get_type (void)
 {
-  static GType type = 0;
-  
-  if (!type) {
-    GTypeInfo tinfo =
+  static volatile gsize g_define_type_id__volatile = 0;
+
+  if (g_once_init_enter (&g_define_type_id__volatile)) {
+    const GTypeInfo tinfo =
     {
       sizeof (AtkTableIface),
       (GBaseInitFunc) atk_table_base_init,
       (GBaseFinalizeFunc) NULL,
-      
     };
-    
-    type = g_type_register_static (G_TYPE_INTERFACE, "AtkTable", &tinfo, 0);
+    GType g_define_type_id =
+      g_type_register_static (G_TYPE_INTERFACE,
+                              g_intern_static_string ("AtkTable"),
+                              &tinfo, 0);
+
+    g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
   }
-  
-  return type;
-}
 
+  return g_define_type_id__volatile;
+}
 
 static void
 atk_table_base_init (gpointer *g_class)
@@ -64,7 +66,7 @@ atk_table_base_init (gpointer *g_class)
   if (!initialized)
     {
       atk_table_signals[ROW_INSERTED] =
-	g_signal_new ("row_inserted",
+	g_signal_new (g_intern_static_string ("row_inserted"),
 		      ATK_TYPE_TABLE,
 		      G_SIGNAL_RUN_LAST,
 		      G_STRUCT_OFFSET (AtkTableIface, row_inserted),
@@ -73,7 +75,7 @@ atk_table_base_init (gpointer *g_class)
 		      G_TYPE_NONE,
 		      2, G_TYPE_INT, G_TYPE_INT);
       atk_table_signals[COLUMN_INSERTED] =
-	g_signal_new ("column_inserted",
+	g_signal_new (g_intern_static_string ("column_inserted"),
 		      ATK_TYPE_TABLE,
 		      G_SIGNAL_RUN_LAST,
 		      G_STRUCT_OFFSET (AtkTableIface, column_inserted),
@@ -82,7 +84,7 @@ atk_table_base_init (gpointer *g_class)
 		      G_TYPE_NONE,
 		      2, G_TYPE_INT, G_TYPE_INT);
       atk_table_signals[ROW_DELETED] =
-	g_signal_new ("row_deleted",
+	g_signal_new (g_intern_static_string ("row_deleted"),
 		      ATK_TYPE_TABLE,
 		      G_SIGNAL_RUN_LAST,
 		      G_STRUCT_OFFSET (AtkTableIface, row_deleted),
@@ -91,7 +93,7 @@ atk_table_base_init (gpointer *g_class)
 		      G_TYPE_NONE,
 		      2, G_TYPE_INT, G_TYPE_INT);
       atk_table_signals[COLUMN_DELETED] =
-	g_signal_new ("column_deleted",
+	g_signal_new (g_intern_static_string ("column_deleted"),
 		      ATK_TYPE_TABLE,
 		      G_SIGNAL_RUN_LAST,
 		      G_STRUCT_OFFSET (AtkTableIface, column_deleted),
@@ -100,7 +102,7 @@ atk_table_base_init (gpointer *g_class)
 		      G_TYPE_NONE,
 		      2, G_TYPE_INT, G_TYPE_INT);
       atk_table_signals[ROW_REORDERED] =
-	g_signal_new ("row_reordered",
+	g_signal_new (g_intern_static_string ("row_reordered"),
 		      ATK_TYPE_TABLE,
 		      G_SIGNAL_RUN_LAST,
 		      G_STRUCT_OFFSET (AtkTableIface, row_reordered),
@@ -109,7 +111,7 @@ atk_table_base_init (gpointer *g_class)
 		      G_TYPE_NONE,
 		      0);
       atk_table_signals[COLUMN_REORDERED] =
-	g_signal_new ("column_reordered",
+	g_signal_new (g_intern_static_string ("column_reordered"),
 		      ATK_TYPE_TABLE,
 		      G_SIGNAL_RUN_LAST,
 		      G_STRUCT_OFFSET (AtkTableIface, column_reordered),
@@ -118,7 +120,7 @@ atk_table_base_init (gpointer *g_class)
 		      G_TYPE_NONE,
 		      0);
       atk_table_signals[MODEL_CHANGED] =
-        g_signal_new ("model_changed",
+        g_signal_new (g_intern_static_string ("model_changed"),
                       ATK_TYPE_TABLE,
                       G_SIGNAL_RUN_LAST,
                       G_STRUCT_OFFSET (AtkTableIface, model_changed),
diff --git a/atk/atktext.c b/atk/atktext.c
index 304a5eb..5edc16a 100755
--- a/atk/atktext.c
+++ b/atk/atktext.c
@@ -83,24 +83,24 @@ static guint atk_text_signals[LAST_SIGNAL] = { 0 };
 GType
 atk_text_get_type (void)
 {
-  static GType type = 0;
+  static volatile gsize g_define_type_id__volatile = 0;
 
-  if (!type) 
+  if (g_once_init_enter (&g_define_type_id__volatile)) {
+    const GTypeInfo tinfo =
     {
-      static const GTypeInfo tinfo =
-      {
-        sizeof (AtkTextIface),
-        (GBaseInitFunc) atk_text_base_init,
-        (GBaseFinalizeFunc) NULL,
-        (GClassInitFunc) NULL /* atk_text_interface_init */ ,
-        (GClassFinalizeFunc) NULL,
-
-      };
-
-      type = g_type_register_static (G_TYPE_INTERFACE, "AtkText", &tinfo, 0);
-    }
+      sizeof (AtkTextIface),
+      (GBaseInitFunc) atk_text_base_init,
+      (GBaseFinalizeFunc) NULL,
+    };
+    GType g_define_type_id =
+      g_type_register_static (G_TYPE_INTERFACE,
+                              g_intern_static_string ("AtkText"),
+                              &tinfo, 0);
+
+    g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
+  }
 
-  return type;
+  return g_define_type_id__volatile;
 }
 
 static void
@@ -119,7 +119,7 @@ atk_text_base_init (AtkTextIface *class)
       class->get_bounded_ranges = atk_text_real_get_bounded_ranges; 
 
       atk_text_signals[TEXT_CHANGED] =
-	g_signal_new ("text_changed",
+	g_signal_new (g_intern_static_string ("text_changed"),
 		      ATK_TYPE_TEXT,
 		      G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED,
 		      G_STRUCT_OFFSET (AtkTextIface, text_changed), 
@@ -129,7 +129,7 @@ atk_text_base_init (AtkTextIface *class)
 		      2, G_TYPE_INT, G_TYPE_INT);
       
       atk_text_signals[TEXT_CARET_MOVED] =
-	g_signal_new ("text_caret_moved",
+	g_signal_new (g_intern_static_string ("text_caret_moved"),
 		      ATK_TYPE_TEXT,
 		      G_SIGNAL_RUN_LAST,
 		      G_STRUCT_OFFSET (AtkTextIface, text_caret_moved),
@@ -138,7 +138,7 @@ atk_text_base_init (AtkTextIface *class)
 		      G_TYPE_NONE,
 		      1, G_TYPE_INT);
       atk_text_signals[TEXT_SELECTION_CHANGED] =
-        g_signal_new ("text_selection_changed",
+        g_signal_new (g_intern_static_string ("text_selection_changed"),
                       ATK_TYPE_TEXT,
                       G_SIGNAL_RUN_LAST,
                       G_STRUCT_OFFSET (AtkTextIface, text_selection_changed),
@@ -146,7 +146,7 @@ atk_text_base_init (AtkTextIface *class)
                       g_cclosure_marshal_VOID__VOID,
                       G_TYPE_NONE, 0);
       atk_text_signals[TEXT_ATTRIBUTES_CHANGED] =
-        g_signal_new ("text_attributes_changed",
+        g_signal_new (g_intern_static_string ("text_attributes_changed"),
                       ATK_TYPE_TEXT,
                       G_SIGNAL_RUN_LAST,
                       G_STRUCT_OFFSET (AtkTextIface, text_attributes_changed),
diff --git a/atk/atkutil.c b/atk/atkutil.c
index a36b6ad..441c6ae 100755
--- a/atk/atkutil.c
+++ b/atk/atkutil.c
@@ -17,37 +17,16 @@
  * Boston, MA 02111-1307, USA.
  */
 
+#include "config.h"
 #include "atkutil.h"
 #include "atkmarshal.c"
-#include "config.h"
 
 static void atk_util_class_init (AtkUtilClass *klass);
+static void atk_util_init       (AtkUtil      *util);
 
 static AtkObject *previous_focus_object = NULL;
 
-GType
-atk_util_get_type (void)
-{
-  static GType type = 0;
-
-  if (!type)
-    {
-      static const GTypeInfo typeInfo =
-      {
-        sizeof (AtkUtilClass),
-        (GBaseInitFunc) NULL,
-        (GBaseFinalizeFunc) NULL,
-        (GClassInitFunc) atk_util_class_init,
-        (GClassFinalizeFunc) NULL,
-        NULL,
-        sizeof (AtkUtil),
-        0,
-        (GInstanceInitFunc) NULL,
-      } ;
-      type = g_type_register_static (G_TYPE_OBJECT, "AtkUtil", &typeInfo, 0) ;
-    }
-  return type;
-}
+G_DEFINE_TYPE (AtkUtil, atk_util, G_TYPE_OBJECT)
 
 static void
 atk_util_class_init (AtkUtilClass *klass)
@@ -59,6 +38,11 @@ atk_util_class_init (AtkUtilClass *klass)
   klass->get_toolkit_version = NULL;
 }
 
+static void
+atk_util_init (AtkUtil *util)
+{
+}
+
 /*
  * This file supports the addition and removal of multiple focus handlers
  * as long as they are all called in the same thread.
diff --git a/atk/atkvalue.c b/atk/atkvalue.c
index f2856a1..f4a1a6d 100755
--- a/atk/atkvalue.c
+++ b/atk/atkvalue.c
@@ -23,21 +23,22 @@
 GType
 atk_value_get_type (void)
 {
-  static GType type = 0;
-
-  if (!type) {
-    GTypeInfo tinfo =
-    {
-      sizeof (AtkValueIface),
-      (GBaseInitFunc) NULL,
-      (GBaseFinalizeFunc) NULL,
-
-    };
-
-    type = g_type_register_static (G_TYPE_INTERFACE, "AtkValue", &tinfo, 0);
+  static volatile gsize g_define_type_id__volatile = 0;
+
+  if (g_once_init_enter (&g_define_type_id__volatile)) {
+    GType g_define_type_id =
+      g_type_register_static_simple (G_TYPE_INTERFACE,
+                                     g_intern_static_string ("AtkValue"),
+                                     sizeof (AtkValueIface),
+                                     NULL,
+                                     0,
+                                     NULL,
+                                     0);
+
+    g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
   }
 
-  return type;
+  return g_define_type_id__volatile;
 }
 
 /**
diff --git a/configure.in b/configure.in
index 74584a0..3a7bf71 100644
--- a/configure.in
+++ b/configure.in
@@ -141,15 +141,8 @@ if test "x$GCC" = "xyes"; then
 fi
 changequote([,])dnl
 
-AM_PATH_GLIB_2_0(2.5.7,have_no_export=true,have_no_export=false)
-if test "x$have_no_export" = "xtrue"; then
-   GLIB_REQUIRED_VERSION=2.5.7
-   glib_no_export_package="gmodule-no-export-2.0"
-else
-   GLIB_REQUIRED_VERSION=2.0.0
-   glib_no_export_package=
-fi
-GLIB_PACKAGES="gobject-2.0 $glib_no_export_package"
+GLIB_REQUIRED_VERSION=2.10.0
+GLIB_PACKAGES="gobject-2.0 gmodule-no-export-2.0"
 AC_SUBST(GLIB_PACKAGES)
 AC_SUBST(GLIB_REQUIRED_VERSION)
 
