diff --git a/gobject/gobject.c b/gobject/gobject.c
index 454d8c2..10b7213 100644
--- a/gobject/gobject.c
+++ b/gobject/gobject.c
@@ -113,6 +113,9 @@
     ((G_DATALIST_GET_FLAGS (&(object)->qdata) & OBJECT_HAS_TOGGLE_REF_FLAG) != 0)
 #define OBJECT_FLOATING_FLAG 0x2
 
+#define CLASS_HAS_PROPS_FLAG 0x1
+#define CLASS_HAS_PROPS(class) \
+    ((class)->flags & CLASS_HAS_PROPS_FLAG)
 
 /* --- signals --- */
 enum {
@@ -131,7 +134,8 @@ enum {
 static void	g_object_base_class_init		(GObjectClass	*class);
 static void	g_object_base_class_finalize		(GObjectClass	*class);
 static void	g_object_do_class_init			(GObjectClass	*class);
-static void	g_object_init				(GObject	*object);
+static void	g_object_init				(GObject	*object,
+							 GObjectClass	*class);
 static GObject*	g_object_constructor			(GType                  type,
 							 guint                  n_construct_properties,
 							 GObjectConstructParam *construct_params);
@@ -409,6 +413,9 @@ g_object_class_install_property (GObjectClass *class,
 {
   g_return_if_fail (G_IS_OBJECT_CLASS (class));
   g_return_if_fail (G_IS_PARAM_SPEC (pspec));
+
+  class->flags |= CLASS_HAS_PROPS_FLAG;
+
   if (pspec->flags & G_PARAM_WRITABLE)
     g_return_if_fail (class->set_property != NULL);
   if (pspec->flags & G_PARAM_READABLE)
@@ -682,13 +689,18 @@ g_object_interface_list_properties (gpointer      g_iface,
 }
 
 static void
-g_object_init (GObject *object)
+g_object_init (GObject		*object,
+	       GObjectClass	*class)
 {
   object->ref_count = 1;
   g_datalist_init (&object->qdata);
-  
-  /* freeze object's notification queue, g_object_newv() preserves pairedness */
-  g_object_notify_queue_freeze (object, &property_notify_context);
+
+  if (CLASS_HAS_PROPS (class))
+    {
+      /* freeze object's notification queue, g_object_newv() preserves pairedness */
+      g_object_notify_queue_freeze (object, &property_notify_context);
+    }
+
   /* enter construction list for notify_queue_thaw() and to allow construct-only properties */
   G_LOCK (construction_mutex);
   construction_objects = g_slist_prepend (construction_objects, object);
@@ -1113,7 +1125,7 @@ g_object_newv (GType       object_type,
 	       guint       n_parameters,
 	       GParameter *parameters)
 {
-  GObjectConstructParam *cparams, *oparams;
+  GObjectConstructParam *cparams = NULL, *oparams;
   GObjectNotifyQueue *nqueue = NULL; /* shouldn't be initialized, just to silence compiler */
   GObject *object;
   GObjectClass *class, *unref_class = NULL;
@@ -1223,10 +1235,14 @@ g_object_newv (GType       object_type,
   G_LOCK (construction_mutex);
   newly_constructed = slist_maybe_remove (&construction_objects, object);
   G_UNLOCK (construction_mutex);
-  if (newly_constructed || n_oparams)
-    nqueue = g_object_notify_queue_freeze (object, &property_notify_context);
-  if (newly_constructed)
-    g_object_notify_queue_thaw (object, nqueue);
+
+  if (CLASS_HAS_PROPS (class))
+    {
+      if (newly_constructed || n_oparams)
+	nqueue = g_object_notify_queue_freeze (object, &property_notify_context);
+      if (newly_constructed)
+	g_object_notify_queue_thaw (object, nqueue);
+    }
 
   /* run 'constructed' handler if there is one */
   if (newly_constructed && class->constructed)
@@ -1237,9 +1253,12 @@ g_object_newv (GType       object_type,
     object_set_property (object, oparams[i].pspec, oparams[i].value, nqueue);
   g_free (oparams);
 
-  /* release our own freeze count and handle notifications */
-  if (newly_constructed || n_oparams)
-    g_object_notify_queue_thaw (object, nqueue);
+  if (CLASS_HAS_PROPS (class))
+    {
+      /* release our own freeze count and handle notifications */
+      if (newly_constructed || n_oparams)
+	g_object_notify_queue_thaw (object, nqueue);
+    }
 
   if (unref_class)
     g_type_class_unref (unref_class);
diff --git a/gobject/gobject.h b/gobject/gobject.h
index a75f03c..751e5f2 100644
--- a/gobject/gobject.h
+++ b/gobject/gobject.h
@@ -344,8 +344,10 @@ struct  _GObjectClass
   void	     (*constructed)		(GObject	*object);
 
   /*< private >*/
+  gsize		flags;
+
   /* padding */
-  gpointer	pdummy[7];
+  gpointer	pdummy[6];
 };
 /**
  * GObjectConstructParam:
