diff --git a/gplugin/gplugin-manager.h b/gplugin/gplugin-manager.h
--- a/gplugin/gplugin-manager.h
+++ b/gplugin/gplugin-manager.h
@@ -30,7 +30,7 @@
 G_BEGIN_DECLS
 
 #define GPLUGIN_TYPE_MANAGER (gplugin_manager_get_type())
-G_DECLARE_DERIVABLE_TYPE(
+G_DECLARE_FINAL_TYPE(
 	GPluginManager,
 	gplugin_manager,
 	GPLUGIN,
@@ -42,29 +42,6 @@
 	GSList *plugins,
 	gpointer data);
 
-struct _GPluginManagerClass {
-	/*< private >*/
-	GObjectClass parent;
-
-	/*< public >*/
-	gboolean (*loading_plugin)(
-		GPluginManager *manager,
-		GPluginPlugin *plugin,
-		GError **error);
-	void (*loaded_plugin)(GPluginManager *manager, GPluginPlugin *plugin);
-	void (*load_failed)(GPluginManager *manager, GPluginPlugin *plugin);
-	gboolean (*unloading_plugin)(
-		GPluginManager *manager,
-		GPluginPlugin *plugin,
-		GError **error);
-	void (*unloaded_plugin)(GPluginManager *manager, GPluginPlugin *plugin);
-	void (
-		*unload_plugin_failed)(GPluginManager *manager, GPluginPlugin *plugin);
-
-	/*< private >*/
-	gpointer reserved[8];
-};
-
 void gplugin_manager_append_path(GPluginManager *manager, const gchar *path);
 void gplugin_manager_prepend_path(GPluginManager *manager, const gchar *path);
 void gplugin_manager_remove_path(GPluginManager *manager, const gchar *path);
# HG changeset patch
# Node ID c9964f224a55
# Parent  d926130c6d12
diff --git a/gplugin/gplugin-manager.c b/gplugin/gplugin-manager.c
--- a/gplugin/gplugin-manager.c
+++ b/gplugin/gplugin-manager.c
@@ -74,6 +74,10 @@
 /******************************************************************************
  * Structs
  *****************************************************************************/
+struct _GPluginManager {
+	GObject parent;
+};
+
 typedef struct {
 	GObject parent;
 
@@ -295,15 +299,9 @@
 gplugin_manager_class_init(GPluginManagerClass *klass)
 {
 	GObjectClass *obj_class = G_OBJECT_CLASS(klass);
-	GPluginManagerClass *manager_class = GPLUGIN_MANAGER_CLASS(klass);
 
 	obj_class->finalize = gplugin_manager_finalize;
 
-	manager_class->loading_plugin = gplugin_manager_loading_cb;
-	manager_class->unloading_plugin = gplugin_manager_unloading_cb;
-
-	/* signals */
-
 	/**
 	 * GPluginManager::loading-plugin:
 	 * @manager: The [class@GPlugin.Manager] instance.
@@ -314,11 +312,11 @@
 	 *
 	 * Return FALSE to stop loading
 	 */
-	signals[SIG_LOADING] = g_signal_new(
+	signals[SIG_LOADING] = g_signal_new_class_handler(
 		"loading-plugin",
-		G_OBJECT_CLASS_TYPE(manager_class),
+		G_OBJECT_CLASS_TYPE(klass),
 		G_SIGNAL_RUN_LAST,
-		G_STRUCT_OFFSET(GPluginManagerClass, loading_plugin),
+		G_CALLBACK(gplugin_manager_loading_cb),
 		gplugin_boolean_accumulator,
 		NULL,
 		NULL,
@@ -336,9 +334,9 @@
 	 */
 	signals[SIG_LOADED] = g_signal_new(
 		"loaded-plugin",
-		G_OBJECT_CLASS_TYPE(manager_class),
+		G_OBJECT_CLASS_TYPE(klass),
 		G_SIGNAL_RUN_LAST,
-		G_STRUCT_OFFSET(GPluginManagerClass, loaded_plugin),
+		0,
 		NULL,
 		NULL,
 		NULL,
@@ -355,9 +353,9 @@
 	 */
 	signals[SIG_LOAD_FAILED] = g_signal_new(
 		"load-plugin-failed",
-		G_OBJECT_CLASS_TYPE(manager_class),
+		G_OBJECT_CLASS_TYPE(klass),
 		G_SIGNAL_RUN_LAST,
-		G_STRUCT_OFFSET(GPluginManagerClass, load_failed),
+		0,
 		NULL,
 		NULL,
 		NULL,
@@ -375,11 +373,11 @@
 	 *
 	 * Return FALSE to stop unloading
 	 */
-	signals[SIG_UNLOADING] = g_signal_new(
+	signals[SIG_UNLOADING] = g_signal_new_class_handler(
 		"unloading-plugin",
-		G_OBJECT_CLASS_TYPE(manager_class),
+		G_OBJECT_CLASS_TYPE(klass),
 		G_SIGNAL_RUN_LAST,
-		G_STRUCT_OFFSET(GPluginManagerClass, unloading_plugin),
+		G_CALLBACK(gplugin_manager_unloading_cb),
 		gplugin_boolean_accumulator,
 		NULL,
 		NULL,
@@ -397,9 +395,9 @@
 	 */
 	signals[SIG_UNLOADED] = g_signal_new(
 		"unloaded-plugin",
-		G_OBJECT_CLASS_TYPE(manager_class),
+		G_OBJECT_CLASS_TYPE(klass),
 		G_SIGNAL_RUN_LAST,
-		G_STRUCT_OFFSET(GPluginManagerClass, unloaded_plugin),
+		0,
 		NULL,
 		NULL,
 		NULL,
@@ -418,9 +416,9 @@
 	 */
 	signals[SIG_UNLOAD_FAILED] = g_signal_new(
 		"unload-plugin-failed",
-		G_OBJECT_CLASS_TYPE(manager_class),
+		G_OBJECT_CLASS_TYPE(klass),
 		G_SIGNAL_RUN_LAST,
-		G_STRUCT_OFFSET(GPluginManagerClass, unload_plugin_failed),
+		0,
 		NULL,
 		NULL,
 		NULL,
