diff --git a/lib/wp/si-factory.c b/lib/wp/si-factory.c
index 47c61a6013b8977de6ed89dbe612d65763a9850a..74c0cec8977bd9e087dfd992ca39d70871ab50e3 100644
--- a/lib/wp/si-factory.c
+++ b/lib/wp/si-factory.c
@@ -291,7 +291,7 @@ wp_si_factory_new_simple (const gchar * factory_name,
   g_return_val_if_fail (factory_name != NULL, NULL);
   g_return_val_if_fail (g_type_is_a (si_type, WP_TYPE_SESSION_ITEM), NULL);
   g_return_val_if_fail (
-      g_variant_is_of_type (config_spec, G_VARIANT_TYPE ("a{sv}")), NULL);
+      g_variant_is_of_type (config_spec, G_VARIANT_TYPE ("a(ssymv)")), NULL);
 
   WpSimpleSiFactory *self = g_object_new (
       wp_simple_si_factory_get_type (), NULL);
diff --git a/modules/module-si-adapter.c b/modules/module-si-adapter.c
index 17f8a933d5bde527be35d66ba75626fa2f3782c4..0ee54532405c2a84944aa5b3755ea48165a9ad98 100644
--- a/modules/module-si-adapter.c
+++ b/modules/module-si-adapter.c
@@ -524,7 +524,7 @@ wireplumber__module_init (WpModule * module, WpCore * core, GVariant * args)
 {
   GVariantBuilder b;
 
-  g_variant_builder_init (&b, G_VARIANT_TYPE_VARDICT);
+  g_variant_builder_init (&b, G_VARIANT_TYPE ("a(ssymv)"));
   g_variant_builder_add (&b, "(ssymv)", "node", "t",
       WP_SI_CONFIG_OPTION_WRITEABLE | WP_SI_CONFIG_OPTION_REQUIRED, NULL);
   g_variant_builder_add (&b, "(ssymv)", "name", "s",
diff --git a/modules/module-si-simple-node-endpoint.c b/modules/module-si-simple-node-endpoint.c
index b6420c1f459615cd99c6049d47b3b19be0510cb6..f0034413159f4f5009995a49c0915eea5f1519b5 100644
--- a/modules/module-si-simple-node-endpoint.c
+++ b/modules/module-si-simple-node-endpoint.c
@@ -58,6 +58,7 @@ si_simple_node_endpoint_reset (WpSessionItem * item)
   self->role[0] = '\0';
   self->priority = 0;
   self->direction = WP_DIRECTION_INPUT;
+  wp_session_item_clear_flag (item, WP_SI_FLAG_CONFIGURED);
 }
 
 static gpointer
@@ -395,7 +396,7 @@ wireplumber__module_init (WpModule * module, WpCore * core, GVariant * args)
 {
   GVariantBuilder b;
 
-  g_variant_builder_init (&b, G_VARIANT_TYPE_VARDICT);
+  g_variant_builder_init (&b, G_VARIANT_TYPE ("a(ssymv)"));
   g_variant_builder_add (&b, "(ssymv)", "node", "t",
       WP_SI_CONFIG_OPTION_WRITEABLE | WP_SI_CONFIG_OPTION_REQUIRED, NULL);
   g_variant_builder_add (&b, "(ssymv)", "name", "s",
diff --git a/modules/module-si-standard-link.c b/modules/module-si-standard-link.c
index a1531ce27c9799e4b2624ce70508229576c83078..991231e452a96e248b47f5edfe16821d492906c3 100644
--- a/modules/module-si-standard-link.c
+++ b/modules/module-si-standard-link.c
@@ -457,7 +457,7 @@ wireplumber__module_init (WpModule * module, WpCore * core, GVariant * args)
 {
   GVariantBuilder b;
 
-  g_variant_builder_init (&b, G_VARIANT_TYPE_VARDICT);
+  g_variant_builder_init (&b, G_VARIANT_TYPE ("a(ssymv)"));
   g_variant_builder_add (&b, "(ssymv)", "out-stream", "t",
       WP_SI_CONFIG_OPTION_WRITEABLE | WP_SI_CONFIG_OPTION_REQUIRED, NULL);
   g_variant_builder_add (&b, "(ssymv)", "in-stream", "t",