diff --git a/src/66/66-inresolve.c b/src/66/66-inresolve.c
index f54ee580a69348e7f4d0ca204d7707520b40ca91..4ffcd5796139b0d318816e45420f63d556967c55 100644
--- a/src/66/66-inresolve.c
+++ b/src/66/66-inresolve.c
@@ -84,11 +84,8 @@ static void info_display_int(char const *field,unsigned int id)
 
 int main(int argc, char const *const *argv) 
 {
-	size_t newlen = 0, pos = 0 ;
 	int found = 0 ;
 	uint8_t logger = 0 ;
-	uid_t owner ;
-	char ownerstr[UID_FMT] ;
 	ss_resolve_t res = RESOLVE_ZERO ;
 	ss_resolve_t lres = RESOLVE_ZERO ;
 	stralloc satree = STRALLOC_ZERO ;
@@ -154,75 +151,22 @@ int main(int argc, char const *const *argv)
 	
 	if (!argc) log_usage(USAGE) ;
 	svname = *argv ;
-		
-	owner = getuid() ;
-	size_t ownerlen = uid_fmt(ownerstr,owner) ;
-	ownerstr[ownerlen] = 0 ;
-		
-	if (!set_ownersysdir(&src,owner)) log_dieusys(LOG_EXIT_SYS, "set owner directory") ;
-	if (!auto_stra(&src,SS_SYSTEM)) log_die_nomem("stralloc") ;
-	
-	if (!scan_mode(src.s,S_IFDIR))
-	{
+
+	found = ss_resolve_svtree(&src,svname,tname) ;
+	if (found == -1) log_dieu(LOG_EXIT_SYS,"resolve tree source of sv: ",svname) ;
+	else if (!found) {
 		log_info("no tree exist yet") ;
 		goto freed ;
 	}
-	
-	if (!auto_stra(&src,"/")) log_die_nomem("stralloc") ;
-	newlen = src.len ;
-	
-	if (!tname)
-	{	
-		if (!stralloc_0(&src) ||
-		!stralloc_copy(&tmp,&src)) log_die_nomem("stralloc") ;
-		
-		if (!sastr_dir_get(&satree, src.s,SS_BACKUP+1, S_IFDIR)) 
-			log_dieu(LOG_EXIT_SYS,"get tree from directory: ",src.s) ;
-		
-		if (satree.len)
-		{
-			for(pos = 0 ; pos < satree.len ; pos += strlen(satree.s + pos) + 1)
-			{
-				tmp.len = newlen ;
-				char *name = satree.s + pos ;
-				
-				if (!auto_stra(&tmp,name,SS_SVDIRS)) log_die_nomem("stralloc") ;
-				if (ss_resolve_check(tmp.s,svname))
-				{
-					src.len = 0 ;
-					if (!found)
-						if (!stralloc_copy(&src,&tmp)) log_die_nomem("stralloc") ;
-					found++ ;
-				}
-			}
-		}
-		else 
-		{
-			log_info("no tree exist yet") ;
-			goto freed ;
-		}
-	}
-	else
-	{
-		if (!auto_stra(&src,tname,SS_SVDIRS)) log_die_nomem("stralloc") ;
-		if (ss_resolve_check(src.s,svname)) found++;
-	}
-
-	if (!found)
-	{
-		log_die(LOG_EXIT_SYS,"unknown service: ",svname) ;
-	
-	}
-	else if (found > 1)
-	{
+	else if (found > 2) {
 		log_die(LOG_EXIT_SYS,svname," is set on different tree -- please use -t options") ;
 	}
-	if (!stralloc_0(&src)) log_die_nomem("stralloc") ;
-	
-	info_field_align(buf,fields,field_suffix,MAXOPTS) ;
-	
+	else if (found == 1) log_die(LOG_EXIT_SYS,"unknown service: ",svname) ;
+
 	if (!ss_resolve_read(&res,src.s,svname)) log_dieusys(111,"read resolve file") ;
 
+	info_field_align(buf,fields,field_suffix,MAXOPTS) ;
+
 	info_display_string(fields[0],res.sa.s + res.name) ;
 	info_display_string(fields[1],res.sa.s + res.description) ;
 	info_display_string(fields[2],res.sa.s + res.version) ;
diff --git a/src/66/66-instate.c b/src/66/66-instate.c
index 75de015627b61a32c12f89446232947f4d773cdb..92a414983b250a8d611b262947d4dfd28f8116af 100644
--- a/src/66/66-instate.c
+++ b/src/66/66-instate.c
@@ -58,7 +58,7 @@ static inline void info_help (void)
 static void info_display_string(char const *field,char const *str)
 {
 	info_display_field_name(field) ;
-	
+
 	if (!*str)
 	{
 		if (!bprintf(buffer_1,"%s%s",log_color->warning,"None"))
@@ -79,17 +79,14 @@ static void info_display_int(char const *field,unsigned int id)
 	char ival[UINT_FMT] ;
 	ival[uint_fmt(ival,id)] = 0 ;
 	str = ival ;
-	
+
 	info_display_string(field,str) ;		
 }
 
 int main(int argc, char const *const *argv) 
 {
-	size_t newlen = 0, pos = 0 ;
 	int found = 0 ;
 	uint8_t logger = 0 ;
-	uid_t owner ;
-	char ownerstr[UID_FMT] ;
 	ss_resolve_t res = RESOLVE_ZERO ;
 	stralloc satree = STRALLOC_ZERO ;
 	stralloc src = STRALLOC_ZERO ;
@@ -98,9 +95,9 @@ int main(int argc, char const *const *argv)
 	char const *tname = 0 ;
 	char const *svname = 0 ;
 	char const *ste = 0 ;
-	
+
 	log_color = &log_color_disable ;
-	
+
 	char buf[MAXOPTS][INFO_FIELD_MAXLEN] = {
 		"Reload",
 		"Init",
@@ -109,7 +106,7 @@ int main(int argc, char const *const *argv)
 		"Pid",
 		"Name" ,
 		"Real logger name" } ;
-	
+
 	PROG = "66-instate" ;
 	{
 		subgetopt_t l = SUBGETOPT_ZERO ;
@@ -130,96 +127,46 @@ int main(int argc, char const *const *argv)
 		}
 		argc -= l.ind ; argv += l.ind ;
 	}
-	
+
 	if (!argc) log_usage(USAGE) ;
 	svname = *argv ;
-		
-	owner = getuid() ;
-	size_t ownerlen = uid_fmt(ownerstr,owner) ;
-	ownerstr[ownerlen] = 0 ;
-		
-	if (!set_ownersysdir(&src,owner)) log_dieusys(LOG_EXIT_SYS, "set owner directory") ;
-	if (!auto_stra(&src,SS_SYSTEM)) log_die_nomem("stralloc") ;
-	
-	if (!scan_mode(src.s,S_IFDIR))
-	{
+
+	found = ss_resolve_svtree(&src,svname,tname) ;
+	if (found == -1) log_dieu(LOG_EXIT_SYS,"resolve tree source of sv: ",svname) ;
+	else if (!found) {
 		log_info("no tree exist yet") ;
 		goto freed ;
 	}
-	
-	if (!auto_stra(&src,"/")) log_die_nomem("stralloc") ;
-	newlen = src.len ;
-	
-	if (!tname)
-	{	
-		if (!stralloc_0(&src) ||
-		!stralloc_copy(&tmp,&src)) log_die_nomem("stralloc") ;
-		
-		if (!sastr_dir_get(&satree, src.s,SS_BACKUP+1, S_IFDIR)) 
-			log_dieu(LOG_EXIT_SYS,"get tree from directory: ",src.s) ;
-		
-		if (satree.len)
-		{
-			for(pos = 0 ; pos < satree.len ; pos += strlen(satree.s + pos) + 1)
-			{
-				tmp.len = newlen ;
-				char *name = satree.s + pos ;
-				
-				if (!auto_stra(&tmp,name,SS_SVDIRS)) log_die_nomem("stralloc") ;
-				if (ss_resolve_check(tmp.s,svname))
-				{
-					if (!found)
-						if (!stralloc_copy(&src,&tmp)) log_die_nomem("stralloc") ;
-					found++ ;
-				}
-			}
-		}
-		else 
-		{
-			log_info("no tree exist yet") ;
-			goto freed ;
-		}
-	}
-	else
-	{
-		if (!auto_stra(&src,tname,SS_SVDIRS)) log_die_nomem("stralloc") ;
-		if (ss_resolve_check(src.s,svname)) found++;
-	}
-
-	if (!found)
-	{
-		log_die(LOG_EXIT_SYS,"unknown service: ",svname) ;
-	
-	}
-	else if (found > 1)
-	{
+	else if (found > 2) {
 		log_die(LOG_EXIT_SYS,svname," is set on different tree -- please use -t options") ;
 	}
+	else if (found == 1) log_die(LOG_EXIT_SYS,"unknown service: ",svname) ;
+
 	if (!ss_resolve_read(&res,src.s,svname)) log_dieusys(111,"read resolve file of: ",src.s,"/.resolve/",svname) ;
-	
+
 	info_field_align(buf,fields,field_suffix,MAXOPTS) ;
-	
+
 	ste = res.sa.s + res.state ;
-	
+
 	if (!ss_state_check(ste,svname)) log_diesys(111,"unitialized service: ",svname) ;
 	if (!ss_state_read(&sta,ste,svname)) log_dieusys(111,"read state file of: ",ste,"/",svname) ;
-	
+
 	info_display_string(fields[5],svname) ;
 	info_display_int(fields[0],sta.reload) ;
 	info_display_int(fields[1],sta.init) ;
 	info_display_int(fields[2],sta.unsupervise) ;
 	info_display_int(fields[3],sta.state) ;
 	info_display_int(fields[4],sta.pid) ;
-	
+
 	if (res.logger && logger)
 	{
 		svname = res.sa.s + res.logger ;
 		if (!ss_state_check(ste,svname)) log_dieusys(111,"unitialized: ",svname) ;
 		if (!ss_state_read(&sta,ste,svname)) log_dieusys(111,"read state file of: ",ste,"/",svname) ;
-		
+
 		if (buffer_putsflush(buffer_1,"\n") == -1)
 			log_dieusys(LOG_EXIT_SYS,"write to stdout") ;
-		
+
 		info_display_string(fields[6],res.sa.s + res.logreal) ;
 		info_display_int(fields[0],sta.reload) ;
 		info_display_int(fields[1],sta.init) ;