diff --git a/src/Makefile b/src/Makefile
index 72570a1ef5b447848a1d05ed902b3cbb5ced1aec..dc54ceeaf4910a6bbe129bbde5c3d2b4f32e4681 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -8,7 +8,7 @@ LIB = libswmodd.so
 OBJS = swmod.o swmod_host.o swmod_opkg.o swmod_uci.o tools.o
 LIB_OBJS = datamodel.o
 
-PROG_CFLAGS = $(CFLAGS) -fstrict-aliasing -Wall -fPIC
+PROG_CFLAGS = $(CFLAGS) -fstrict-aliasing -Wall -Werror -fPIC
 PROG_LDFLAGS = $(LDFLAGS) -luci -lubus -lubox -lblobmsg_json -luuid
 
 ifeq ($(SWMOD_LXC),yes)
diff --git a/src/datamodel.c b/src/datamodel.c
index 2d7b2a9f5ff5dc640ae5c5687db3dd7aaca1e65f..43fb0d229060efac226a199570d02839dc343f4c 100644
--- a/src/datamodel.c
+++ b/src/datamodel.c
@@ -40,12 +40,12 @@ static int get_du_linker(char *refparam, struct dmctx *dmctx, void *data, char *
 static int browseSoftwareModulesExecEnvInst(struct dmctx *dmctx, DMNODE *parent_node, void *prev_data, char *prev_instance)
 {
 	json_object *res = NULL, *du_obj = NULL, *arrobj = NULL;
-	char *inst = NULL, *max_inst = NULL;
+	char *inst = NULL;
 	int id = 0, env = 0;
 
 	dmubus_call("swmodules", "environment", UBUS_ARGS{}, 0, &res);
 	dmjson_foreach_obj_in_array(res, arrobj, du_obj, env, 1, "environment") {
-		inst = handle_update_instance(1, dmctx, &max_inst, update_instance_without_section, 1, ++id);
+		inst = handle_instance_without_section(dmctx, parent_node, ++id);
 		if (DM_LINK_INST_OBJ(dmctx, parent_node, (void *)du_obj, inst) == DM_STOP)
 			break;
 	}
@@ -55,12 +55,12 @@ static int browseSoftwareModulesExecEnvInst(struct dmctx *dmctx, DMNODE *parent_
 static int browseSoftwareModulesDeploymentUnitInst(struct dmctx *dmctx, DMNODE *parent_node, void *prev_data, char *prev_instance)
 {
 	json_object *res = NULL, *du_obj = NULL, *arrobj = NULL;
-	char *inst = NULL, *max_inst = NULL;
+	char *inst = NULL;
 	int id = 0, du = 0;
 
 	dmubus_call("swmodules", "du_list", UBUS_ARGS{}, 0, &res);
 	dmjson_foreach_obj_in_array(res, arrobj, du_obj, du, 1, "deployment_unit") {
-		inst = handle_update_instance(1, dmctx, &max_inst, update_instance_without_section, 1, ++id);
+		inst = handle_instance_without_section(dmctx, parent_node, ++id);
 		if (DM_LINK_INST_OBJ(dmctx, parent_node, (void *)du_obj, inst) == DM_STOP)
 			break;
 	}
@@ -70,12 +70,12 @@ static int browseSoftwareModulesDeploymentUnitInst(struct dmctx *dmctx, DMNODE *
 static int browseSoftwareModulesExecutionUnitInst(struct dmctx *dmctx, DMNODE *parent_node, void *prev_data, char *prev_instance)
 {
 	json_object *res = NULL, *du_obj = NULL, *arrobj = NULL;
-	char *inst = NULL, *max_inst = NULL;
+	char *inst = NULL;
 	int id = 0, eu = 0;
 
 	dmubus_call("swmodules", "eu_list", UBUS_ARGS{}, 0, &res);
 	dmjson_foreach_obj_in_array(res, arrobj, du_obj, eu, 1, "execution_unit") {
-		inst = handle_update_instance(1, dmctx, &max_inst, update_instance_without_section, 1, ++id);
+		inst = handle_instance_without_section(dmctx, parent_node, ++id);
 		if (DM_LINK_INST_OBJ(dmctx, parent_node, (void *)du_obj, inst) == DM_STOP)
 			break;
 	}