diff --git a/src/lib66/tree/tree.c b/src/lib66/tree/tree.c
index 13aafb734e921fa9fc57e670165d98fe39656889..3465d08e539f0fc3e545fe9ddd71bff81fca7275 100644
--- a/src/lib66/tree/tree.c
+++ b/src/lib66/tree/tree.c
@@ -99,26 +99,29 @@ int tree_iscurrent(char const *base, char const *treename)
         return e ;
 }
 
-int tree_isinitialized(char const *live, char const *treename, uid_t owner)
+int tree_isinitialized(char const *base, char const *treename)
 {
     log_flow() ;
 
-    int init = 0 ;
-
-    size_t livelen = strlen(live), treelen = strlen(treename) ;
+    int e = -1 ;
+    size_t baselen = strlen(base) ;
+    resolve_tree_t tres = RESOLVE_TREE_ZERO ;
+    resolve_wrapper_t_ref wres = resolve_set_struct(DATA_TREE, &tres) ;
+    char solve[baselen + SS_SYSTEM_LEN + 1] ;
 
-    char pack[UID_FMT] ;
-    uint32_pack(pack,owner) ;
-    size_t packlen = uint_fmt(pack,owner) ;
-    pack[packlen] = 0 ;
+    auto_strings(solve, base, SS_SYSTEM) ;
 
-    char t[livelen + SS_STATE_LEN + 1 + packlen + 1 + treelen + 6] ;
-    auto_strings(t, live, SS_STATE + 1, "/", pack, "/", treename, "/init") ;
+    if (!resolve_read(wres, solve, treename))
+        goto err ;
 
-    if (!access(t, F_OK))
-        init = 1 ;
+    if (tres.init)
+        e = 1 ;
+    else
+        e = 0 ;
 
-    return init ;
+    err:
+        resolve_free(wres) ;
+        return e ;
 }
 
 int tree_isenabled(char const *base, char const *treename)