diff --git a/src/lib66/sanitize/sanitize_livestate.c b/src/lib66/sanitize/sanitize_livestate.c
index c633b706b88ec191c25b57fbcf73cfa225a34b18..6d747f26da4a0b03bfe6ba77fd5f453e73b5817c 100644
--- a/src/lib66/sanitize/sanitize_livestate.c
+++ b/src/lib66/sanitize/sanitize_livestate.c
@@ -85,7 +85,7 @@ static void sanitize_livestate_service_symlink(resolve_service_t *res)
        log_dieu(LOG_EXIT_SYS, "symlink: ", sym, " to: ", dst) ;
 }
 
-void sanitize_livestate(resolve_service_t *res, uint32_t flag)
+void sanitize_livestate(resolve_service_t *res)
 {
     log_flow() ;
 
@@ -94,11 +94,14 @@ void sanitize_livestate(resolve_service_t *res, uint32_t flag)
     size_t namelen = strlen(name) ;
     size_t livelen = strlen(res->sa.s + res->live.livedir) ;
     size_t ownerlen = strlen(res->sa.s + res->owner) ;
-
+    ss_state_t sta = STATE_ZERO ;
     char ste[livelen + SS_STATE_LEN + 1 + ownerlen + 1 + namelen + 1] ;
 
     auto_strings(ste, res->sa.s + res->live.livedir, SS_STATE + 1, "/", res->sa.s + res->ownerstr, "/", name) ;
 
+    if (!state_read(&sta, res))
+        log_dieu(LOG_EXIT_SYS, "read state file of: ", name) ;
+
     r = access(ste, F_OK) ;
     if (r == -1) {
 
@@ -108,17 +111,13 @@ void sanitize_livestate(resolve_service_t *res, uint32_t flag)
 
     } else {
 
-        if (FLAGS_ISSET(flag, STATE_FLAGS_TOUNSUPERVISE)) {
+        if (service_is(&sta, STATE_FLAGS_TOUNSUPERVISE) == STATE_FLAGS_TRUE) {
 
             log_trace("unlink: ", ste) ;
             unlink_void(ste) ;
 
-            if (!state_messenger(res, STATE_FLAGS_TORELOAD, STATE_FLAGS_FALSE))
+            if (!state_messenger(res, STATE_FLAGS_TOUNSUPERVISE, STATE_FLAGS_FALSE))
                 log_dieusys(LOG_EXIT_SYS, "send message to state of: ", name) ;
         }
     }
-
-    if (!state_messenger(res, STATE_FLAGS_TOINIT, STATE_FLAGS_FALSE))
-        log_dieusys(LOG_EXIT_SYS, "send message to state of: ", name) ;
-
 }