diff --git a/src/lib66/service/service_enable_disable.c b/src/lib66/service/service_enable_disable.c
index 20d309ce9b173b96229b4ff05dd68dcd36a46272..0ff196a214437c855fbcfb8b6af4fcb294708a34 100644
--- a/src/lib66/service/service_enable_disable.c
+++ b/src/lib66/service/service_enable_disable.c
@@ -79,9 +79,9 @@ void service_enable_disable(graph_t *g, struct resolve_hash_s *hash, struct reso
         if (action) {
 
             if (info->opt_tree)
-                tree_service_remove(res->sa.s + res->path.home, res->sa.s + res->treename, res->sa.s + res->name) ;
-
-            tree_service_add(treename, res->sa.s + res->name, info) ;
+                service_switch_tree(res, res->sa.s + res->path.home, treename, info) ;
+            else
+                tree_service_add(treename, res->sa.s + res->name, info) ;
         }
 
         res->enabled = action ;
@@ -146,9 +146,9 @@ void service_enable_disable(graph_t *g, struct resolve_hash_s *hash, struct reso
                         if (action) {
 
                             if (info->opt_tree)
-                                tree_service_remove(h->res.sa.s + h->res.path.home, h->res.sa.s + h->res.treename, h->res.sa.s + h->res.name) ;
-
-                            tree_service_add(treename, h->res.sa.s + h->res.name, info) ;
+                                service_switch_tree(&h->res, h->res.sa.s + h->res.path.home, treename, info) ;
+                            else
+                                tree_service_add(treename, h->res.sa.s + h->res.name, info) ;
                         }
 
                         h->res.enabled = action ;