diff --git a/src/lib66/exec/ssexec_tree.c b/src/lib66/exec/ssexec_tree.c
index f8bc658f41e4ee512e8bb112fd266f4496ef63bb..1b263b604839dc8ea17bd862ba80b31c5f70db62 100644
--- a/src/lib66/exec/ssexec_tree.c
+++ b/src/lib66/exec/ssexec_tree.c
@@ -301,7 +301,7 @@ void sanitize_system(ssexec_t *info)
 
     if (!scan_mode(dst, S_IFREG))
         if (!tree_resolve_master_create(info->base.s, info->owner))
-            log_dieu(LOG_EXIT_SYS, "write resolve file of inner tree") ;
+            log_dieu(LOG_EXIT_SYS, "write Master resolve file of trees") ;
 
     auto_strings(dst + baselen, SS_TREE_CURRENT) ;
     auto_check(dst) ;
@@ -634,7 +634,7 @@ void create_tree(ssexec_t *info)
     dst[newlen] = 0 ;
 
     if (!service_resolve_master_create(info->base.s, info->treename.s))
-        log_dieusys_nclean(LOG_EXIT_SYS,&cleanup,"write resolve file of inner bundle") ;
+        log_dieusys_nclean(LOG_EXIT_SYS,&cleanup,"write Master resolve file of services") ;
 
     auto_strings(sym,dst, "/", SS_SYM_SVC) ;
     auto_strings(dstsym, dst, SS_SVC) ;
@@ -736,6 +736,48 @@ void create_backupdir(char const *base, char const *treename)
     auto_dir(tmp,0755) ;
 }
 
+void tree_master_modify_contents(char const *base, char const *treename)
+{
+    stralloc sa = STRALLOC_ZERO ;
+    resolve_tree_master_t mres = RESOLVE_TREE_MASTER_ZERO ;
+    resolve_wrapper_t_ref wres = resolve_set_struct(DATA_TREE_MASTER, &mres) ;
+    size_t baselen = strlen(base) ;
+    char solve[baselen + SS_SYSTEM_LEN + SS_RESOLVE_LEN + 1] ;
+
+    char const *exclude[2] = { SS_MASTER + 1, 0 } ;
+
+    log_trace("modify field contents of resolve Master of file of trees") ;
+
+    auto_strings(solve, base, SS_SYSTEM, SS_RESOLVE) ;
+
+    if (!sastr_dir_get(&sa, solve, exclude, S_IFREG))
+        log_dieu_nclean(LOG_EXIT_SYS, &cleanup,"get resolve file of tree: ", treename) ;
+
+    size_t ncontents = sastr_nelement(&sa) ;
+
+    if (ncontents)
+        if (!sastr_rebuild_in_oneline(&sa))
+            log_dieu_nclean(LOG_EXIT_SYS, &cleanup, "rebuild stralloc") ;
+
+    solve[baselen + SS_SYSTEM_LEN] = 0 ;
+
+    if (!resolve_read(wres, solve, SS_MASTER + 1))
+        log_dieusys(LOG_EXIT_SYS, "read resolve Master file of trees") ;
+
+    mres.ncontents = (uint32_t)ncontents ;
+
+    if (ncontents)
+        mres.contents = resolve_add_string(wres, sa.s) ;
+    else
+        mres.contents = resolve_add_string(wres, "") ;
+
+    if (!resolve_write(wres, solve, SS_MASTER + 1))
+        log_dieusys(LOG_EXIT_SYS, "write resolve Master file of trees") ;
+
+    stralloc_free(&sa) ;
+    resolve_free(wres) ;
+}
+
 void tree_create(graph_t *g, ssexec_t *info, tree_what_t *what, char const *const *envp)
 {
     log_flow() ;
@@ -743,7 +785,7 @@ void tree_create(graph_t *g, ssexec_t *info, tree_what_t *what, char const *cons
     resolve_tree_t tres = RESOLVE_TREE_ZERO ;
     resolve_wrapper_t_ref wres = resolve_set_struct(DATA_TREE, &tres) ;
     tree_seed_t seed = TREE_SEED_ZERO ;
-    char solve[info->base.len + SS_SYSTEM_LEN + 1] ;
+    char solve[info->base.len + SS_SYSTEM_LEN + SS_RESOLVE_LEN + 1] ;
 
     auto_strings(solve, info->base.s, SS_SYSTEM) ;
 
@@ -795,6 +837,8 @@ void tree_create(graph_t *g, ssexec_t *info, tree_what_t *what, char const *cons
     if (what->requiredby && seed.sa.len)
         tree_parse_options_depends(g, info, seed.sa.s + seed.requiredby, 1, what) ;
 
+    tree_master_modify_contents(info->base.s, info->treename.s) ;
+
     resolve_free(wres) ;
     tree_seed_free(&seed) ;
 
@@ -946,9 +990,6 @@ void tree_enable_disable(graph_t *g, char const *base, char const *treename, uin
 
         auto_strings(solve, base, SS_SYSTEM) ;
 
-        if (!resolve_read(wres, solve, treename))
-            log_dieusys(LOG_EXIT_SYS, "read resolve file of: ", solve, "/", treename) ;
-
         if (!resolve_modify_field_g(wres, base, treename, TREE_ENUM_DISEN, !action ? "0" : "1"))
             log_dieu(LOG_EXIT_SYS, "modify field: ", resolve_tree_field_table[TREE_ENUM_DISEN].field," of tree: ", treename, " with value: ", !action ? "0" : "1") ;
 
@@ -1297,6 +1338,8 @@ void tree_remove(graph_t *g, char const *base, char const *treename)
 
     }
 
+    tree_master_modify_contents(base, treename) ;
+
     resolve_free(wres) ;
 
     log_info("Deleted successfully: ", treename) ;
@@ -1584,7 +1627,7 @@ int ssexec_tree(int argc, char const *const *argv, char const *const *envp, ssex
     if (!r && what.remove)
         log_dieusys(LOG_EXIT_SYS,"find tree: ", info->treename.s) ;
 
-    if (!graph_build_g(&graph, info->base.s, info->treename.s, DATA_TREE))
+    if (!graph_build_g(&graph, info->base.s, info->treename.s, DATA_TREE, 0))
         log_dieu(LOG_EXIT_SYS,"build the graph") ;
 
     if (what.remove) {