diff --git a/src/lib66/exec/ssexec_init.c b/src/lib66/exec/ssexec_init.c
index 211ba5d66c5e0915e1c677fefac4ab095fde6c15..3e65fbbc6a0f92a2d3fb924a10bb84c6b5fb5527 100644
--- a/src/lib66/exec/ssexec_init.c
+++ b/src/lib66/exec/ssexec_init.c
@@ -142,7 +142,7 @@ int ssexec_init(int argc, char const *const *argv, ssexec_t *info)
     int r ;
     uint8_t earlier = 0 ;
     char const *treename = 0 ;
-    char const *exclude[2] = { SS_MASTER + 1 , 0 } ;
+
 
     stralloc sa = STRALLOC_ZERO ;
 
@@ -150,9 +150,8 @@ int ssexec_init(int argc, char const *const *argv, ssexec_t *info)
         log_usage(usage_init) ;
 
     treename = argv[1] ;
-
     size_t treenamelen = strlen(treename) ;
-    size_t treelen = info->base.len + SS_SYSTEM_LEN + 1 + treenamelen + SS_SVDIRS_LEN + SS_RESOLVE_LEN ;
+    size_t treelen = info->base.len + SS_SYSTEM_LEN + 1 + treenamelen + 1 ;
     char tree[treelen + 1] ;
 
     auto_strings(tree, info->base.s, SS_SYSTEM, "/", treename) ;
@@ -170,9 +169,7 @@ int ssexec_init(int argc, char const *const *argv, ssexec_t *info)
     r = svc_scandir_ok(info->scandir.s) ;
     if (r != 1) earlier = 1 ;
 
-    auto_strings(tree + info->base.len + SS_SYSTEM_LEN + 1 + treenamelen, SS_SVDIRS, SS_RESOLVE) ;
-
-    if (!sastr_dir_get(&sa, tree, exclude, S_IFREG))
+    if (!resolve_get_field_tosa_g(&sa, info->base.s, treename, DATA_TREE, E_RESOLVE_TREE_CONTENTS))
         log_dieu(LOG_EXIT_SYS, "get services list from tree: ", treename) ;
 
     if (sa.len) {
diff --git a/src/lib66/parse/parse_service.c b/src/lib66/parse/parse_service.c
index 2d6234f99072c22ff3573dd7ea23ab4a75c54809..d5a5beebfca6aeb331b9ba502c80ab32931a748e 100644
--- a/src/lib66/parse/parse_service.c
+++ b/src/lib66/parse/parse_service.c
@@ -34,6 +34,7 @@
 #include <66/state.h>
 #include <66/resolve.h>
 #include <66/service.h>
+#include <66/tree.h>
 
 parse_mill_t MILL_GET_SECTION_NAME = \
 { \
@@ -69,7 +70,7 @@ parse_mill_t MILL_GET_VALUE = \
  * At the end, i think that good API to know/acknowledge of a global system state changes should be provide. After all, handling events will appear in the future.
  *
  *
- * */
+ *
 void service_master_modify_contents(resolve_service_t *res, resolve_service_master_enum_t ENUM)
 {
     stralloc sa = STRALLOC_ZERO ;
@@ -171,6 +172,54 @@ void service_master_modify_contents(resolve_service_t *res, resolve_service_mast
     stralloc_free(&sa) ;
     resolve_free(wres) ;
 }
+*/
+
+static void service_notify_add_string(stralloc *sa, char const *name, char const *str)
+{
+    if (!sastr_clean_string(sa, str))
+        log_dieu(LOG_EXIT_SYS, "clean string") ;
+
+    if (!sastr_add_string(sa, name))
+        log_dieu(LOG_EXIT_SYS, "clean string") ;
+
+    if (!sastr_sortndrop_element(sa))
+        log_dieu(LOG_EXIT_SYS, "sort string") ;
+}
+
+static void service_notify_tree(char const *name, char const *base, char const *treename, uint8_t field)
+{
+    resolve_tree_t tres = RESOLVE_TREE_ZERO ;
+    resolve_wrapper_t_ref wres = resolve_set_struct(DATA_TREE, &tres) ;
+    stralloc sa = STRALLOC_ZERO ;
+
+    log_trace("modify field contents of resolve tree file: ", treename) ;
+
+    if (!resolve_read_g(wres, base, treename))
+        log_dieusys(LOG_EXIT_SYS, "read resolve file of tree: ", treename) ;
+
+    if (field == E_RESOLVE_TREE_CONTENTS) {
+
+        if (tres.ncontents)
+            service_notify_add_string(&sa, name, tres.sa.s + tres.contents) ;
+        else if (!sastr_add_string(&sa, name))
+            log_dieu(LOG_EXIT_SYS, "add string") ;
+
+        tres.ncontents += 1 ;
+    } else goto freed ;
+
+    if (!sastr_rebuild_in_oneline(&sa))
+        log_dieu(LOG_EXIT_SYS, "rebuild stralloc list") ;
+
+    if (!resolve_modify_field(wres, field, sa.s))
+        log_dieusys(LOG_EXIT_SYS, "modify resolve file of: ", treename) ;
+
+    if (!resolve_write_g(wres, base, treename))
+        log_dieusys(LOG_EXIT_SYS, "write resolve file of tree: ", treename) ;
+
+    freed :
+    stralloc_free(&sa) ;
+    resolve_free(wres) ;
+}
 
 void parse_service(char const *sv, ssexec_t *info, uint8_t force, uint8_t conf)
 {
@@ -206,7 +255,8 @@ void parse_service(char const *sv, ssexec_t *info, uint8_t force, uint8_t conf)
             if (!state_write(&sta, ares[pos].sa.s + ares[pos].path.home, ares[pos].sa.s + ares[pos].logger.name))
                 log_dieu(LOG_EXIT_SYS, "write state file of: ", ares[pos].sa.s + ares[pos].logger.name) ;
 
-        service_master_modify_contents(&ares[pos], E_RESOLVE_SERVICE_MASTER_CONTENTS) ;
+        //service_master_modify_contents(&ares[pos], E_RESOLVE_SERVICE_MASTER_CONTENTS) ;
+        service_notify_tree(ares[pos].sa.s + ares[pos].name, info->base.s, ares[pos].sa.s + ares[pos].treename, E_RESOLVE_TREE_CONTENTS) ;
 
         log_info("Parsed successfully: ", ares[pos].sa.s + ares[pos].name, " at tree: ", ares[pos].sa.s + ares[pos].treename) ;
     }