diff --git a/gtkdoc-scangobj.in b/gtkdoc-scangobj.in
index 6eb906f..11a536f 100644
--- a/gtkdoc-scangobj.in
+++ b/gtkdoc-scangobj.in
@@ -156,21 +156,21 @@ print OUTPUT <<EOT;
 #ifdef GTK_IS_WIDGET_CLASS
 #include <gtk/gtk.h>
 #endif
-GType object_types[$ntypes];
+GType all_types[$ntypes];
 
 static GType *
-get_object_types (void)
+get_all_types (void)
 {
     gpointer g_object_class;
     gint i = 0;
 EOT
 
 for (@types) {
-    print OUTPUT "    object_types[i++] = $_ ();\n";
+    print OUTPUT "    all_types[i++] = $_ ();\n";
 }
 
 print OUTPUT <<EOT;
-    object_types[i] = 0;
+    all_types[i] = 0;
 
     /* reference the GObjectClass to initialize the param spec pool
      * potentially needed by interfaces. See http://bugs.gnome.org/571820 */
@@ -179,17 +179,17 @@ print OUTPUT <<EOT;
     /* Need to make sure all the types are loaded in and initialize
      * their signals and properties.
      */
-    for (i=0; object_types[i]; i++)
+    for (i=0; all_types[i]; i++)
       {
-        if (G_TYPE_IS_CLASSED (object_types[i]))
-          g_type_class_ref (object_types[i]);
-        if (G_TYPE_IS_INTERFACE (object_types[i]))
-          g_type_default_interface_ref (object_types[i]);
+        if (G_TYPE_IS_CLASSED (all_types[i]))
+          g_type_class_ref (all_types[i]);
+        if (G_TYPE_IS_INTERFACE (all_types[i]))
+          g_type_default_interface_ref (all_types[i]);
       }
 
     g_type_class_unref (g_object_class);
 
-    return object_types;
+    return all_types;
 }
 
 /*
@@ -238,7 +238,7 @@ main (int argc, char *argv[])
 {
   $TYPE_INIT_FUNC;
 
-  get_object_types ();
+  get_all_types ();
 
   output_signals ();
   output_object_hierarchy ();
@@ -263,8 +263,8 @@ output_signals (void)
       return;
     }
 
-  for (i = 0; object_types[i]; i++)
-    output_object_signals (fp, object_types[i]);
+  for (i = 0; all_types[i]; i++)
+    output_object_signals (fp, all_types[i]);
 
   fclose (fp);
 }
@@ -827,13 +827,16 @@ output_object_hierarchy (void)
     }
   output_hierarchy (fp, G_TYPE_OBJECT, 0);
   output_hierarchy (fp, G_TYPE_INTERFACE, 0);
+  output_hierarchy (fp, G_TYPE_BOXED, 0);
+  output_hierarchy (fp, G_TYPE_ENUM, 0);
+  output_hierarchy (fp, G_TYPE_FLAGS, 0);
   
-  for (i=0; object_types[i]; i++) {
-    if (!g_type_parent (object_types[i]) &&
-      (object_types[i] != G_TYPE_OBJECT) &&
-      (object_types[i] != G_TYPE_INTERFACE)
+  for (i=0; all_types[i]; i++) {
+    if (!g_type_parent (all_types[i]) &&
+      (all_types[i] != G_TYPE_OBJECT) &&
+      (all_types[i] != G_TYPE_INTERFACE)
     ) {
-      output_hierarchy (fp, object_types[i], 0);
+      output_hierarchy (fp, all_types[i], 0);
     }
   }
 
@@ -878,13 +881,13 @@ static void output_object_interfaces (void)
     }
   output_interfaces (fp, G_TYPE_OBJECT);
 
-  for (i = 0; object_types[i]; i++)
+  for (i = 0; all_types[i]; i++)
     {
-      if (!g_type_parent (object_types[i]) &&
-          (object_types[i] != G_TYPE_OBJECT) &&
-          G_TYPE_IS_INSTANTIATABLE (object_types[i]))
+      if (!g_type_parent (all_types[i]) &&
+          (all_types[i] != G_TYPE_OBJECT) &&
+          G_TYPE_IS_INSTANTIATABLE (all_types[i]))
         {
-          output_interfaces (fp, object_types[i]);
+          output_interfaces (fp, all_types[i]);
         }
     }
   fclose (fp);
@@ -979,8 +982,8 @@ output_args (void)
       return;
     }
 
-  for (i = 0; object_types[i]; i++) {
-    output_object_args (fp, object_types[i]);
+  for (i = 0; all_types[i]; i++) {
+    output_object_args (fp, all_types[i]);
   }
 
   fclose (fp);
