diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 5bfcaffb7b91ef262e04fb7c5d51bbe1ac5c350f..27e96413b0f452dd5cca85adb5448459524d1f97 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -10,7 +10,7 @@ test:
   script:
   - ./configure --bindir=/usr/bin --shebangdir=/usr/bin
   - make
-  - make install DESTDIR=gitlab-ci
+  - make DESTDIR=gitlab-ci install
 
   only:
   - merge_requests
@@ -21,11 +21,7 @@ build:
   script:
   - ./configure --bindir=/usr/bin --shebangdir=/usr/bin
   - make
-  - make
-  - make install DESTDIR=gitlab-ci
-
-  retry:
-    max: 2
+  - make DESTDIR=gitlab-ci install
 
   only:
     refs:
diff --git a/INSTALL.md b/INSTALL.md
index 29c0583dd2d9c551f5c093b712227c28bd376531..5032c64ecf7f8a438f80c49a6c9937580a782390 100644
--- a/INSTALL.md
+++ b/INSTALL.md
@@ -5,11 +5,11 @@ Build Instructions
 
 - A POSIX-compliant C development environment
 - GNU make version 3.81 or later
-- skalibs version 2.10.0.3: http://skarnet.org/software/skalibs/
-- execline version 2.8.0.1: http://skarnet.org/software/execline/
-- s6 version 2.10.0.3: http://skarnet.org/software/s6/
-- s6-rc version 0.5.2.2: http://skarnet.org/software/s6-rc/
-- oblibs version 0.1.3.0: https://framagit.org/Obarun/oblibs/
+- skalibs version 2.11.0.0: http://skarnet.org/software/skalibs/
+- execline version 2.8.1.0: http://skarnet.org/software/execline/
+- s6 version 2.11.0.0: http://skarnet.org/software/s6/
+- s6-rc version 0.5.2.3: http://skarnet.org/software/s6-rc/
+- oblibs version 0.1.4.0: https://framagit.org/Obarun/oblibs/
 - lowdown version 0.6.4 or later for man and html pages: https://kristaps.bsd.lv/lowdown/
 - linux-api-headers 5.8 or later: https://www.gnu.org/software/libc (only for linux system)
 
diff --git a/build_toolchain.sh b/build_toolchain.sh
index 3a2a77eb55795207470334a4daea9d8740195b6e..22f7d92e83648fcff1d01bafcd6161d839f396dc 100755
--- a/build_toolchain.sh
+++ b/build_toolchain.sh
@@ -1,16 +1,16 @@
 #!/bin/sh
 
-tag=0
+tag=1
 
 if [ "$1" == "commit" ]; then
-    tag=1
+    tag=0
 fi
 
-skalibs_tag="v2.10.0.0"
-execline_tag="v2.7.0.0"
-s6_tag="v2.10.0.0"
-s6_rc_tag="v0.5.2.1"
-oblibs_tag="v0.1.3.0"
+skalibs_tag="v2.11.0.0"
+execline_tag="v2.8.1.0"
+s6_tag="v2.11.0.0"
+s6_rc_tag="v0.5.2.3"
+oblibs_tag="v0.1.4.0"
 
 check_tag(){
 
diff --git a/doc/upgrade.md b/doc/upgrade.md
index 8efd907816c02f6109f8582a20fcfbe6dafa37a3..efc72e5233b718e4f591270c3b8f1a30c1cf1a41 100644
--- a/doc/upgrade.md
+++ b/doc/upgrade.md
@@ -11,6 +11,22 @@ author: Eric Vidal <eric@obarun.org>
 
 ---
 
+# In 0.6.2.0
+
+- **WARNING**: `66-update` is no longer compatible with 66 version under 0.5.0.0.
+
+- Adapt to skalibs 2.11.0.0
+
+- Adapt to execline 2.8.1.0
+
+- Adapt to s6 2.11.0.0
+
+- Adapt to s6-rc 0.5.2.3
+
+- Adapt to oblibs 0.1.4.0
+
+---
+
 # In 0.6.1.3
 
 - Adapt to skalibs 2.10.0.3.
diff --git a/package/deps.mak b/package/deps.mak
index 1c8441a5c7ce124cf414ac3113ed82e4a6e30c38..c9434e13ec4204c523ac7fd9d007a31c25a4eccf 100644
--- a/package/deps.mak
+++ b/package/deps.mak
@@ -37,6 +37,7 @@ src/66/66-start.o src/66/66-start.lo: src/66/66-start.c src/include/66/ssexec.h
 src/66/66-stop.o src/66/66-stop.lo: src/66/66-stop.c src/include/66/ssexec.h
 src/66/66-svctl.o src/66/66-svctl.lo: src/66/66-svctl.c src/include/66/ssexec.h
 src/66/66-tree.o src/66/66-tree.lo: src/66/66-tree.c src/include/66/config.h src/include/66/constants.h src/include/66/db.h src/include/66/enum.h src/include/66/resolve.h src/include/66/state.h src/include/66/tree.h src/include/66/utils.h
+src/66/66-tree_backup.o src/66/66-tree_backup.lo: src/66/66-tree_backup.c src/include/66/config.h src/include/66/constants.h src/include/66/db.h src/include/66/enum.h src/include/66/resolve.h src/include/66/state.h src/include/66/tree.h src/include/66/utils.h
 src/extra-tools/66-echo.o src/extra-tools/66-echo.lo: src/extra-tools/66-echo.c
 src/extra-tools/66-nuke.o src/extra-tools/66-nuke.lo: src/extra-tools/66-nuke.c
 src/extra-tools/66-umountall.o src/extra-tools/66-umountall.lo: src/extra-tools/66-umountall.c src/include/66/config.h
@@ -88,8 +89,10 @@ src/lib66/svc_unsupervise.o src/lib66/svc_unsupervise.lo: src/lib66/svc_unsuperv
 src/lib66/tree_cmd_state.o src/lib66/tree_cmd_state.lo: src/lib66/tree_cmd_state.c src/include/66/constants.h src/include/66/utils.h
 src/lib66/tree_copy.o src/lib66/tree_copy.lo: src/lib66/tree_copy.c src/include/66/constants.h src/include/66/tree.h
 src/lib66/tree_copy_tmp.o src/lib66/tree_copy_tmp.lo: src/lib66/tree_copy_tmp.c src/include/66/constants.h src/include/66/enum.h src/include/66/ssexec.h src/include/66/tree.h src/include/66/utils.h
+src/lib66/tree_create_from_seed.o src/lib66/tree_create_from_seed.lo: src/lib66/tree_create_from_seed.c src/include/66/config.h src/include/66/enum.h src/include/66/tree.h src/include/66/utils.h
 src/lib66/tree_find_current.o src/lib66/tree_find_current.lo: src/lib66/tree_find_current.c src/include/66/constants.h src/include/66/utils.h
 src/lib66/tree_get_permissions.o src/lib66/tree_get_permissions.lo: src/lib66/tree_get_permissions.c src/include/66/constants.h src/include/66/utils.h
+src/lib66/tree_isvalid.o src/lib66/tree_isvalid.lo: src/lib66/tree_isvalid.c src/include/66/constants.h src/include/66/ssexec.h src/include/66/tree.h
 src/lib66/tree_sethome.o src/lib66/tree_sethome.lo: src/lib66/tree_sethome.c src/include/66/constants.h src/include/66/tree.h
 src/lib66/tree_setname.o src/lib66/tree_setname.lo: src/lib66/tree_setname.c src/include/66/tree.h
 src/lib66/tree_switch_current.o src/lib66/tree_switch_current.lo: src/lib66/tree_switch_current.c src/include/66/config.h src/include/66/constants.h src/include/66/tree.h src/include/66/utils.h
@@ -142,8 +145,8 @@ src/lib66/tree_switch_current.o src/lib66/tree_switch_current.lo: src/lib66/tree
 66-tree: src/66/66-tree.o ${LIB66}
 66-echo: EXTRA_LIBS := -loblibs -lskarnet
 66-echo: src/extra-tools/66-echo.o 
-66-nuke: EXTRA_LIBS :=
-66-nuke: src/extra-tools/66-nuke.o 
+66-nuke: EXTRA_LIBS := -loblibs -lskarnet
+66-nuke: src/extra-tools/66-nuke.o
 66-umountall: EXTRA_LIBS := -loblibs -lskarnet
 66-umountall: src/extra-tools/66-umountall.o
 execl-envfile: EXTRA_LIBS := -loblibs -lexecline -lskarnet
diff --git a/package/info b/package/info
index 131592d58c7e4241d2970d8e073c3d9aeec5220e..6bd168152f9cecdfbeb82253a2e861ce5b49adb5 100644
--- a/package/info
+++ b/package/info
@@ -1,4 +1,4 @@
 package=66
-version=0.6.1.3
+version=0.6.2.0
 category=admin
 package_macro_name=SS
diff --git a/src/66/66-boot.c b/src/66/66-boot.c
index 66d8d67be86e5ebdfbd44ea8c84772c46cb942aa..3d97fd0e2cf5ee8f9719c83225f275fd42e4db0c 100644
--- a/src/66/66-boot.c
+++ b/src/66/66-boot.c
@@ -547,7 +547,7 @@ int main(int argc, char const *const *argv,char const *const *envp)
 
     PROG = "66-boot" ;
     {
-        subgetopt_t l = SUBGETOPT_ZERO ;
+        subgetopt l = SUBGETOPT_ZERO ;
 
         for (;;)
         {
diff --git a/src/66/66-hpr.c b/src/66/66-hpr.c
index 24757b6fd6c9a19801da2078fa7301d91af5c9d9..a6f24ddf0fb6f05b8b0775232cff687a8a84a96e 100644
--- a/src/66/66-hpr.c
+++ b/src/66/66-hpr.c
@@ -89,7 +89,8 @@ int main (int argc, char const *const *argv)
 
     PROG = "66-hpr" ;
     {
-        subgetopt_t l = SUBGETOPT_ZERO ;
+        subgetopt l = SUBGETOPT_ZERO ;
+
         for (;;)
         {
             int opt = subgetopt_r(argc, argv, "Hl:hprfdwWb:n", &l) ;
diff --git a/src/66/66-inresolve.c b/src/66/66-inresolve.c
index b9f721cec90b62bd873c21dd0abcd3ece668292f..e607a05e2a1ce51e17b84c806a540574dbf2eaf6 100644
--- a/src/66/66-inresolve.c
+++ b/src/66/66-inresolve.c
@@ -130,7 +130,7 @@ int main(int argc, char const *const *argv)
 
     PROG = "66-inresolve" ;
     {
-        subgetopt_t l = SUBGETOPT_ZERO ;
+        subgetopt l = SUBGETOPT_ZERO ;
 
         for (;;)
         {
diff --git a/src/66/66-inservice.c b/src/66/66-inservice.c
index bdd3640684d4ef0d018802bdd25847d0e4307d54..8280fab02a97695b25b380e04ad685dbac6734d3 100644
--- a/src/66/66-inservice.c
+++ b/src/66/66-inservice.c
@@ -43,7 +43,7 @@
 #include <66/environ.h>
 #include <66/state.h>
 
-#include <s6/s6-supervise.h>
+#include <s6/supervise.h>
 
 static unsigned int REVERSE = 0 ;
 static unsigned int NOFIELD = 1 ;
@@ -864,7 +864,7 @@ int main(int argc, char const *const *argv, char const *const *envp)
 
     PROG = "66-inservice" ;
     {
-        subgetopt_t l = SUBGETOPT_ZERO ;
+        subgetopt l = SUBGETOPT_ZERO ;
 
         for (;;)
         {
diff --git a/src/66/66-instate.c b/src/66/66-instate.c
index 0e0078d2111d5469a5993ec0baaee1445b9fdce7..799bcdfbdd7b45f2cd148c341368ba191a4a259b 100644
--- a/src/66/66-instate.c
+++ b/src/66/66-instate.c
@@ -109,7 +109,7 @@ int main(int argc, char const *const *argv)
 
     PROG = "66-instate" ;
     {
-        subgetopt_t l = SUBGETOPT_ZERO ;
+        subgetopt l = SUBGETOPT_ZERO ;
 
         for (;;)
         {
diff --git a/src/66/66-intree.c b/src/66/66-intree.c
index e71350469652c35cddf1fd311c633d59c24eea9c..a8761079f3c58276426b0155fb18c4d05faa8cf1 100644
--- a/src/66/66-intree.c
+++ b/src/66/66-intree.c
@@ -478,7 +478,7 @@ int main(int argc, char const *const *argv, char const *const *envp)
 
     PROG = "66-intree" ;
     {
-        subgetopt_t l = SUBGETOPT_ZERO ;
+        subgetopt l = SUBGETOPT_ZERO ;
 
         for (;;)
         {
diff --git a/src/66/66-parser.c b/src/66/66-parser.c
index 4fbdb3227030237041703f2a36fa125d162d5a3a..344ed9b584fae55d17ca4614191398af1b8a49aa 100644
--- a/src/66/66-parser.c
+++ b/src/66/66-parser.c
@@ -89,7 +89,7 @@ int main(int argc, char const *const *argv,char const *const *envp)
 
     PROG = "66-parser" ;
     {
-        subgetopt_t l = SUBGETOPT_ZERO ;
+        subgetopt l = SUBGETOPT_ZERO ;
 
         for (;;)
         {
diff --git a/src/66/66-rebuild.c b/src/66/66-rebuild.c
index 9a3205faff2c105b95f14c4620598c2bc488e5be..ad4929fb6abe743f2ff2e62bd1ca1bccc964ca78 100644
--- a/src/66/66-rebuild.c
+++ b/src/66/66-rebuild.c
@@ -131,98 +131,37 @@ void tree_allowed(stralloc *list,char const *base, char const *treename)
     stralloc_free(&sa) ;
 }
 
-static int tree_contents_format(char const *tree)
-{
-    log_flow() ;
-
-    /** even on empty tree Master bundle is always present.
-     * Check its format. Cdb format allow to retrieve all information
-     * of the service whatever the 66 version whereas ss_resolve_src_path
-     * may cause troubles with module if multiple same module was enabled.
-     * So, check the validity of the cdb format and use it if we can.*/
-    int r = 1, e = errno, fd ;
-    size_t treelen = strlen(tree) ;
-    cdb_t c = CDB_ZERO ;
-    char d[treelen + SS_SVDIRS_LEN + SS_RESOLVE_LEN + SS_MASTER_LEN + 1] ;
-    auto_strings(d,tree,SS_SVDIRS,SS_RESOLVE,SS_MASTER) ;
-
-    fd = open_readb(d) ;
-    if (fd < 0)
-        log_dieusys_nclean(LOG_EXIT_SYS,&cleanup,"open: ",d) ;
-
-    if (!cdb_init_map(&c, fd, 1))
-        log_dieusys_nclean(LOG_EXIT_SYS,&cleanup,"cdb_init: ", d) ;
-
-    errno = 0 ;
-    r = cdb_find(&c, "name", 4) ;
-    if (r == -1 && errno == EPROTO) r == 0 ;
-    else r = 1 ;
-
-    fd_close(fd) ;
-    cdb_free(&c) ;
-    errno = e ;
-    return r ;
-}
-
 void tree_contents(stralloc *list,char const *tree,ssexec_t *info)
 {
     log_flow() ;
 
-    int format = tree_contents_format(tree) ;
-
-    size_t treelen = strlen(tree), pos, newlen ;
+    size_t treelen = strlen(tree), pos ;
     stralloc sa = STRALLOC_ZERO ;
     char solve[treelen + SS_SVDIRS_LEN + SS_RESOLVE_LEN + SS_DB_LEN + SS_SRC_LEN + 1] ;
 
-    if (format == 1)
-    {
-        ss_resolve_t res = RESOLVE_ZERO ;
-        auto_strings(solve,tree,SS_SVDIRS,SS_RESOLVE) ;
-        if (!sastr_dir_get(&sa,solve,SS_MASTER + 1,S_IFREG))
-            log_dieusys_nclean(LOG_EXIT_SYS,&cleanup,"get the service resolve files of: ",tree) ;
-
-        auto_strings(solve,tree,SS_SVDIRS) ;
-
-        for (pos = 0 ;pos < sa.len; pos += strlen(sa.s + pos) + 1)
-        {
-            char *name = sa.s + pos ;
-            int logname = get_rstrlen_until(name,SS_LOG_SUFFIX) ;
-            if (logname > 0) continue ;
-
-            if (!ss_resolve_read(&res,solve,name))
-                log_dieusys_nclean(LOG_EXIT_SYS,&cleanup,"read resolve file of: ",solve,"/",name) ;
+    ss_resolve_t res = RESOLVE_ZERO ;
+    auto_strings(solve,tree,SS_SVDIRS,SS_RESOLVE) ;
+    if (!sastr_dir_get(&sa,solve,SS_MASTER + 1,S_IFREG))
+        log_dieusys_nclean(LOG_EXIT_SYS,&cleanup,"get the service resolve files of: ",tree) ;
 
-            if (res.disen)
-                if (!stralloc_catb(list,res.sa.s + res.src,strlen(res.sa.s + res.src) + 1))
-                    log_diesys_nclean(LOG_EXIT_SYS,&cleanup,"stralloc") ;
+    auto_strings(solve,tree,SS_SVDIRS) ;
 
-            log_trace(DRYRUN ? drun : "","tree: ",info->treename.s," contain service: ",res.sa.s + res.src) ;
-        }
-    }
-    else
+    for (pos = 0 ;pos < sa.len; pos += strlen(sa.s + pos) + 1)
     {
-        newlen = treelen + SS_SVDIRS_LEN ;
-        auto_strings(solve,tree,SS_SVDIRS,SS_SVC) ;
-
-        if (!sastr_dir_get(&sa,solve,"",S_IFDIR))
-            log_dieusys_nclean(LOG_EXIT_SYS,&cleanup,"get the source svc service files of: ",tree) ;
+        char *name = sa.s + pos ;
+        int logname = get_rstrlen_until(name,SS_LOG_SUFFIX) ;
+        if (logname > 0) continue ;
 
-        auto_string_from(solve,newlen,SS_DB,SS_SRC) ;
+        if (!ss_resolve_read(&res,solve,name))
+            log_dieusys_nclean(LOG_EXIT_SYS,&cleanup,"read resolve file of: ",solve,"/",name) ;
 
-        if (!sastr_dir_get(&sa,solve,SS_MASTER + 1,S_IFDIR))
-            log_dieusys_nclean(LOG_EXIT_SYS,&cleanup,"get source of atomic service files of: ",tree) ;
+        if (res.disen)
+            if (!stralloc_catb(list,res.sa.s + res.src,strlen(res.sa.s + res.src) + 1))
+                log_diesys_nclean(LOG_EXIT_SYS,&cleanup,"stralloc") ;
 
-        for (pos = 0 ;pos < sa.len; pos += strlen(sa.s + pos) + 1)
-        {
-            char *name = sa.s + pos ;
-            int logname = get_rstrlen_until(name,SS_LOG_SUFFIX) ;
-            if (logname > 0) continue ;
-            log_trace(DRYRUN ? drun : "","tree: ",info->treename.s," contain service: ",name) ;
-            if (ss_resolve_src_path(list,name,info->owner,0) < 1)
-                log_dieu_nclean(LOG_EXIT_SYS,&cleanup,"resolve source path of: ",name) ;
-
-        }
+        log_trace(DRYRUN ? drun : "","tree: ",info->treename.s," contain service: ",res.sa.s + res.src) ;
     }
+
     stralloc_free(&sa) ;
 }
 
@@ -271,7 +210,8 @@ int main(int argc, char const *const *argv,char const *const *envp)
 
     PROG = "66-rebuild" ;
     {
-        subgetopt_t l = SUBGETOPT_ZERO ;
+        subgetopt l = SUBGETOPT_ZERO ;
+
         for (;;)
         {
             int opt = subgetopt_r(argc,argv, "hzv:l:d", &l) ;
diff --git a/src/66/66-scanctl.c b/src/66/66-scanctl.c
index 2be6ac83030b6dc7c84a0352ebc83238fd3f0d55..8ae5075d62efed46034efec4e3152277093e9bcd 100644
--- a/src/66/66-scanctl.c
+++ b/src/66/66-scanctl.c
@@ -192,7 +192,7 @@ int main(int argc, char const *const *argv, char const *const *envp)
 
     PROG = "66-scanctl" ;
     {
-        subgetopt_t l = SUBGETOPT_ZERO ;
+        subgetopt l = SUBGETOPT_ZERO ;
 
         for (;;)
         {
diff --git a/src/66/66-scandir.c b/src/66/66-scandir.c
index 4c6544e1ea2113b0c02b87560f97978ebd5c5aa3..4caaa4d146cb371bccd445915f410da67345127f 100644
--- a/src/66/66-scandir.c
+++ b/src/66/66-scandir.c
@@ -582,7 +582,7 @@ int main(int argc, char const *const *argv, char const *const *envp)
 
     PROG = "66-scandir" ;
     {
-        subgetopt_t l = SUBGETOPT_ZERO ;
+        subgetopt l = SUBGETOPT_ZERO ;
 
         for (;;)
         {
diff --git a/src/66/66-shutdown.c b/src/66/66-shutdown.c
index 53e4571ac3dc40e0af71e75516d660e8c5582de3..eb956b8ba4db690d348150b197e6176fd04eccec 100644
--- a/src/66/66-shutdown.c
+++ b/src/66/66-shutdown.c
@@ -90,11 +90,11 @@ static inline void add_one_day (struct tm *tm)
     tm->tm_year++ ;
 }
 
-static inline void parse_hourmin (tain_t *when, char const *s)
+static inline void parse_hourmin (tain *when, char const *s)
 {
     log_flow() ;
 
-    tai_t taithen ;
+    tai taithen ;
     struct tm tmthen ;
     unsigned int hour, minute ;
     size_t len = uint_scan(s, &hour) ;
@@ -110,18 +110,18 @@ static inline void parse_hourmin (tain_t *when, char const *s)
     tmthen.tm_min = minute ;
     tmthen.tm_sec = 0 ;
     if (!tai_from_localtm(&taithen, &tmthen))
-        log_dieusys(LOG_EXIT_SYS, "assemble broken-down time into tain_t") ;
+        log_dieusys(LOG_EXIT_SYS, "assemble broken-down time into tain") ;
     if (tai_less(&taithen, tain_secp(&STAMP)))
     {
         add_one_day(&tmthen) ;
         if (!tai_from_localtm(&taithen, &tmthen))
-            log_dieusys(LOG_EXIT_SYS, "assemble broken-down time into tain_t") ;
+            log_dieusys(LOG_EXIT_SYS, "assemble broken-down time into tain") ;
     }
     when->sec = taithen ;
     when->nano = 0 ;
 }
 
-static void parse_mins (tain_t *when, char const *s)
+static void parse_mins (tain *when, char const *s)
 {
     log_flow() ;
 
@@ -130,7 +130,7 @@ static void parse_mins (tain_t *when, char const *s)
     tain_addsec_g(when, mins * 60) ;
 }
 
-static inline void parse_time (tain_t *when, char const *s)
+static inline void parse_time (tain *when, char const *s)
 {
     log_flow() ;
 
@@ -253,11 +253,12 @@ int main (int argc, char const *const *argv)
     int what = 0 ;
     int doactl = 0 ;
     int docancel = 0 ;
-    tain_t when ;
+    tain when ;
 
     PROG = "66-shutdown" ;
     {
-        subgetopt_t l = SUBGETOPT_ZERO ;
+        subgetopt l = SUBGETOPT_ZERO ;
+
         for (;;)
         {
             int opt = subgetopt_r(argc, argv, "v:Hl:hprkafFct:", &l) ;
diff --git a/src/66/66-shutdownd.c b/src/66/66-shutdownd.c
index 1f577c66a97f59397edd8e65b1126ddbbd7be4f3..b74a9551ddf85f782a6f637ac65079ba660a9f5f 100644
--- a/src/66/66-shutdownd.c
+++ b/src/66/66-shutdownd.c
@@ -45,7 +45,7 @@
 
 #include <execline/config.h>
 
-#include <s6/s6-supervise.h>
+#include <s6/supervise.h>
 #include <s6/config.h>
 
 #include <66/config.h>
@@ -188,7 +188,7 @@ static inline void run_rcshut (void)
     else log_warnusys("spawn ", rcshut) ;
 }
 
-static inline void prepare_shutdown (buffer *b, tain_t *deadline, unsigned int *grace_time)
+static inline void prepare_shutdown (buffer *b, tain *deadline, unsigned int *grace_time)
 {
     log_flow() ;
 
@@ -203,7 +203,7 @@ static inline void prepare_shutdown (buffer *b, tain_t *deadline, unsigned int *
     if (u && u <= 300000) *grace_time = u ;
 }
 
-static inline void handle_fifo (buffer *b, char *what, tain_t *deadline, unsigned int *grace_time)
+static inline void handle_fifo (buffer *b, char *what, tain *deadline, unsigned int *grace_time)
 {
     log_flow() ;
 
@@ -347,7 +347,7 @@ static inline void unsupervise_tree (void)
 int main (int argc, char const *const *argv)
 {
     unsigned int grace_time = 3000 ;
-    tain_t deadline ;
+    tain deadline ;
     int fdr, fdw ;
     buffer b ;
     char what = 'S' ;
@@ -355,7 +355,8 @@ int main (int argc, char const *const *argv)
 
     PROG = "66-shutdownd" ;
     {
-        subgetopt_t l = SUBGETOPT_ZERO ;
+        subgetopt l = SUBGETOPT_ZERO ;
+
         for (;;)
         {
             int opt = subgetopt_r(argc, argv, "hl:s:g:CB", &l) ;
@@ -419,7 +420,7 @@ int main (int argc, char const *const *argv)
     fdw = open_write(SHUTDOWND_FIFO) ;
     if (fdw == -1 || coe(fdw) == -1)
         log_dieusys(LOG_EXIT_SYS, "open ", SHUTDOWND_FIFO, " for writing") ;
-    if (sig_ignore(SIGPIPE) == -1)
+    if (!sig_ignore(SIGPIPE))
         log_dieusys(LOG_EXIT_SYS, "sig_ignore SIGPIPE") ;
     buffer_init(&b, &buffer_read, fdr, buf, 64) ;
     tain_now_set_stopwatch_g() ;
@@ -452,7 +453,7 @@ int main (int argc, char const *const *argv)
     prepare_stage4(what) ;
     unsupervise_tree() ;
 
-    if (sig_ignore(SIGTERM) == -1) log_warnusys("sig_ignore SIGTERM") ;
+    if (!sig_ignore(SIGTERM)) log_warnusys("sig_ignore SIGTERM") ;
 
     if (!inns)
     {
diff --git a/src/66/66-tree.c b/src/66/66-tree.c
index 605c22570e2c9a004b99ced8528563bbe122f828..84f5226ebd65d6308529db54e4e0e69ed839d1c5 100644
--- a/src/66/66-tree.c
+++ b/src/66/66-tree.c
@@ -40,7 +40,7 @@
 #include <66/state.h>
 #include <66/resolve.h>
 
-#include <s6/s6-supervise.h>
+#include <s6/supervise.h>
 #include <s6-rc/s6rc-servicedir.h>
 #include <s6-rc/s6rc-constants.h>
 
@@ -499,7 +499,7 @@ int main(int argc, char const *const *argv,char const *const *envp)
 
     PROG = "66-tree" ;
     {
-        subgetopt_t l = SUBGETOPT_ZERO ;
+        subgetopt l = SUBGETOPT_ZERO ;
 
         for (;;)
         {
diff --git a/src/extra-tools/66-echo.c b/src/extra-tools/66-echo.c
index 85878e16a85a15eddbb506883849f292f18acac0..8b42c2bde028758f36f83fed8e462f1bb48fa910 100644
--- a/src/extra-tools/66-echo.c
+++ b/src/extra-tools/66-echo.c
@@ -42,7 +42,8 @@ int main (int argc, char const *const *argv)
     char donl = 1 ;
     PROG = "66-echo" ;
     {
-        subgetopt_t l = SUBGETOPT_ZERO ;
+        subgetopt l = SUBGETOPT_ZERO ;
+
         for (;;)
         {
             int opt = subgetopt_r(argc, argv, "hns:", &l) ;
diff --git a/src/extra-tools/66-nuke.c b/src/extra-tools/66-nuke.c
index 2f3162f73d688f8b0173e7d151bf05af22a7cfc4..ffb09f08ac52c02c4b8f5de36775fa29636a124a 100644
--- a/src/extra-tools/66-nuke.c
+++ b/src/extra-tools/66-nuke.c
@@ -42,7 +42,7 @@ int main (int argc, char const *const *argv)
 {
 
     {
-        subgetopt_t l = SUBGETOPT_ZERO ;
+        subgetopt l = SUBGETOPT_ZERO ;
 
         for (;;)
         {
diff --git a/src/extra-tools/execl-envfile.c b/src/extra-tools/execl-envfile.c
index 3a979357f3893398fbac88aae3125d20342d211e..0bb9683ec6840276fb3b6795a23abd2df64f59d1 100644
--- a/src/extra-tools/execl-envfile.c
+++ b/src/extra-tools/execl-envfile.c
@@ -201,7 +201,7 @@ int main (int argc, char const *const *argv, char const *const *envp)
 
     PROG = "execl-envfile" ;
     {
-        subgetopt_t l = SUBGETOPT_ZERO ;
+        subgetopt l = SUBGETOPT_ZERO ;
 
         for (;;)
         {
diff --git a/src/include/66/hpr.h b/src/include/66/hpr.h
index 5a0d8017618adeaf6a29343c187d065ec5d0037b..b3be701e080dda7cea2c01c075eb131e97dbde7f 100644
--- a/src/include/66/hpr.h
+++ b/src/include/66/hpr.h
@@ -32,7 +32,7 @@
 
 #define hpr_send(l,s, n) openwritenclose_unsafe(l, (s), n)
 #define hpr_cancel(l) hpr_send(l,"c", 1)
-extern int hpr_shutdown (char const *live, unsigned int, tain_t const *, unsigned int) ;
+extern int hpr_shutdown (char const *live, unsigned int, tain const *, unsigned int) ;
 extern void hpr_wall (char const *) ;
 
 #endif
diff --git a/src/include/66/resolve.h b/src/include/66/resolve.h
index 1c56de3be33c89d5463e817d81aac7f0d84fff1d..4e3822e1214790bb5f06bd5c14cce2c380394b88 100644
--- a/src/include/66/resolve.h
+++ b/src/include/66/resolve.h
@@ -22,7 +22,7 @@
 #include <skalibs/stralloc.h>
 #include <skalibs/types.h>
 #include <skalibs/cdb.h>
-#include <skalibs/cdb_make.h>
+#include <skalibs/cdbmake.h>
 #include <skalibs/gccattributes.h>
 
 #include <66/ssexec.h>
@@ -195,8 +195,8 @@ extern int ss_resolve_graph_publish(ss_resolve_graph_t *graph,unsigned int rever
 /** cdb */
 extern int ss_resolve_read_cdb(ss_resolve_t *dres, char const *name) ;
 extern int ss_resolve_write_cdb(ss_resolve_t *res, char const *dst, char const *name) ;
-extern int ss_resolve_add_cdb(struct cdb_make *c,char const *key,char const *data) ;
-extern int ss_resolve_add_cdb_uint(struct cdb_make *c, char const *key,uint32_t data) ;
-extern int ss_resolve_find_cdb(stralloc *result, cdb_t *c,char const *key) ;
+extern int ss_resolve_add_cdb(cdbmaker *c,char const *key,char const *data) ;
+extern int ss_resolve_add_cdb_uint(cdbmaker *c, char const *key,uint32_t data) ;
+extern int ss_resolve_find_cdb(stralloc *result, cdb const *c,char const *key) ;
 
 #endif
diff --git a/src/include/66/svc.h b/src/include/66/svc.h
index aba7a464470e2d52a1f48b59cd861969125cde1a..8c6cdb487c8ebc664d8d71525afa8cf800a54547 100644
--- a/src/include/66/svc.h
+++ b/src/include/66/svc.h
@@ -29,7 +29,7 @@ struct ss_resolve_sig_s
     ss_resolve_t res ;
     unsigned int notify ;
     unsigned int ndeath;
-    tain_t deadline ;
+    tain deadline ;
     uint16_t ids ;
     char *sigtosend ;
     int sig ;
@@ -77,7 +77,7 @@ enum sigactions_e
 
 extern int svc_switch_to(ssexec_t *info,unsigned int where) ;
 extern int svc_init(ssexec_t *info,char const *src, genalloc *ga) ;
-extern int svc_init_pipe(ftrigr_t *fifo,genalloc *gasv,tain_t *deadline) ;
+extern int svc_init_pipe(ftrigr_t *fifo,genalloc *gasv,tain *deadline) ;
 extern int svc_send(ssexec_t *info,genalloc *ga,char const *sig,char const *const *envp) ;
 extern int svc_unsupervise(ssexec_t *info,genalloc *ga,char const *sig,char const *const *envp) ;
 
diff --git a/src/lib66/backup_cmd_switcher.c b/src/lib66/backup_cmd_switcher.c
index 4cff08c6215977b5fef3304a9fc06acf67c02a40..a0441891225433135040b2a62dae2c5d2c24cca9 100644
--- a/src/lib66/backup_cmd_switcher.c
+++ b/src/lib66/backup_cmd_switcher.c
@@ -51,7 +51,7 @@ int backup_switcher(int argc, char const *const *argv,ssexec_t *info)
     type = -1 ;
 
     {
-        subgetopt_t l = SUBGETOPT_ZERO ;
+        subgetopt l = SUBGETOPT_ZERO ;
 
         for (;;)
         {
diff --git a/src/lib66/hpr_shutdown.c b/src/lib66/hpr_shutdown.c
index 0e2dcdb7c73f979dc527e8a4c5a450fb89ec299a..c5f5384c09efc48774806411a836a815a2ed28cf 100644
--- a/src/lib66/hpr_shutdown.c
+++ b/src/lib66/hpr_shutdown.c
@@ -25,7 +25,7 @@
 
 #include <66/hpr.h>
 
-int hpr_shutdown (char const *live, unsigned int what, tain_t const *when, unsigned int grace)
+int hpr_shutdown (char const *live, unsigned int what, tain const *when, unsigned int grace)
 {
     log_flow() ;
 
diff --git a/src/lib66/rc_manage.c b/src/lib66/rc_manage.c
index 62ed0ab9bfa0bc9b9836856366828ada7fd2c706..551b6085effd5cfd321082585e135b8ff2ac2875 100644
--- a/src/lib66/rc_manage.c
+++ b/src/lib66/rc_manage.c
@@ -43,7 +43,7 @@ int rc_manage(ssexec_t *info,genalloc *ga)
     stralloc sares = STRALLOC_ZERO ;
     size_t newlen ;
 
-    tain_t deadline ;
+    tain deadline ;
     if (info->timeout) tain_from_millisecs(&deadline, info->timeout) ;
     else deadline = tain_infinite_relative ;
     tain_now_g() ;
diff --git a/src/lib66/ss_info_utils.c b/src/lib66/ss_info_utils.c
index 277336291437d2cdb23767f02f20e655d6ba0552..4c6e3e528aef9c68cb5c3380614bcfb97c43a81f 100644
--- a/src/lib66/ss_info_utils.c
+++ b/src/lib66/ss_info_utils.c
@@ -28,7 +28,7 @@
 #include <skalibs/buffer.h>
 #include <skalibs/lolstdio.h>
 
-#include <s6/s6-supervise.h>
+#include <s6/supervise.h>
 
 #include <66/resolve.h>
 #include <66/state.h>
diff --git a/src/lib66/ss_resolve.c b/src/lib66/ss_resolve.c
index 6c66a34259abfe98771bc91caa2707f81f2f612b..9f4130e0dc0205808d2cde93f1ebc4b2f48a31de 100644
--- a/src/lib66/ss_resolve.c
+++ b/src/lib66/ss_resolve.c
@@ -31,7 +31,7 @@
 #include <skalibs/direntry.h>
 #include <skalibs/unix-transactional.h>
 #include <skalibs/diuint32.h>
-#include <skalibs/cdb_make.h>
+#include <skalibs/cdbmake.h>
 #include <skalibs/cdb.h>
 #include <skalibs/posixplz.h>//unlink_void
 
@@ -43,7 +43,7 @@
 #include <66/ssexec.h>
 #include <66/state.h>
 
-#include <s6/s6-supervise.h>
+#include <s6/supervise.h>
 
 ss_resolve_field_table_t ss_resolve_field_table[] = {
 
@@ -1470,7 +1470,7 @@ int ss_resolve_svtree(stralloc *svtree,char const *svname,char const *tree)
         return -1 ;
 }
 
-int ss_resolve_add_cdb_uint(struct cdb_make *c, char const *key,uint32_t data)
+int ss_resolve_add_cdb_uint(cdbmaker *c, char const *key,uint32_t data)
 {
     log_flow() ;
 
@@ -1478,20 +1478,20 @@ int ss_resolve_add_cdb_uint(struct cdb_make *c, char const *key,uint32_t data)
     size_t klen = strlen(key) ;
 
     uint32_pack_big(pack, data) ;
-    if (cdb_make_add(c,key,klen,pack,4) < 0)
+    if (!cdbmake_add(c,key,klen,pack,4))
         log_warnsys_return(LOG_EXIT_ZERO,"cdb_make_add: ",key) ;
 
     return 1 ;
 }
 
-int ss_resolve_add_cdb(struct cdb_make *c,char const *key,char const *data)
+int ss_resolve_add_cdb(cdbmaker *c,char const *key,char const *data)
 {
     log_flow() ;
 
     size_t klen = strlen(key) ;
     size_t dlen = strlen(data) ;
 
-    if (cdb_make_add(c,key,klen,dlen ? data : 0,dlen) < 0)
+    if (!cdbmake_add(c,key,klen,dlen ? data : 0,dlen))
         log_warnsys_return(LOG_EXIT_ZERO,"cdb_make_add: ",key) ;
 
     return 1 ;
@@ -1503,7 +1503,7 @@ int ss_resolve_write_cdb(ss_resolve_t *res, char const *dst, char const *name)
 
     int fd ;
     size_t dstlen = strlen(dst), namelen = strlen(name);
-    struct cdb_make c = CDB_MAKE_ZERO ;
+    cdbmaker c = CDBMAKER_ZERO ;
     char tfile[dstlen + 1 + namelen + namelen + 9] ;
     char dfile[dstlen + 1 + namelen + 1] ;
 
@@ -1519,8 +1519,8 @@ int ss_resolve_write_cdb(ss_resolve_t *res, char const *dst, char const *name)
         goto err_fd ;
     }
 
-    if (cdb_make_start(&c, fd) < 0) {
-        log_warnusys("cdb_make_start") ;
+    if (!cdbmake_start(&c, fd)) {
+        log_warnusys("cdbmake_start") ;
         goto err ;
     }
 
@@ -1620,7 +1620,7 @@ int ss_resolve_write_cdb(ss_resolve_t *res, char const *dst, char const *name)
     /* disen */
     !ss_resolve_add_cdb_uint(&c,"disen",res->disen)) goto err ;
 
-    if (cdb_make_finish(&c) < 0 || fsync(fd) < 0) {
+    if (!cdbmake_finish(&c) || fsync(fd) < 0) {
         log_warnusys("write to: ", tfile) ;
         goto err ;
     }
@@ -1641,31 +1641,34 @@ int ss_resolve_write_cdb(ss_resolve_t *res, char const *dst, char const *name)
         return 0 ;
 }
 
-int ss_resolve_find_cdb(stralloc *result, cdb_t *c,char const *key)
+int ss_resolve_find_cdb(stralloc *result, cdb const *c,char const *key)
 {
     log_flow() ;
 
     uint32_t x = 0 ;
     size_t klen = strlen(key) ;
+    cdb_data cdata ;
 
     result->len = 0 ;
 
-    int r = cdb_find(c, key, klen) ;
-    if (r == -1) log_warnusys_return(LOG_EXIT_LESSONE,"search on cdb key: ",key) ;
-    if (!r) log_warnusys_return(LOG_EXIT_ZERO,"unknown key on cdb: ",key) ;
-    {
-        char pack[cdb_datalen(c) + 1] ;
+    int r = cdb_find(c, &cdata, key, klen) ;
+    if (r == -1)
+        log_warnusys_return(LOG_EXIT_LESSONE,"search on cdb key: ",key) ;
 
-        if (cdb_read(c, pack, cdb_datalen(c),cdb_datapos(c)) < 0)
-            log_warnusys_return(LOG_EXIT_LESSONE,"read on cdb value of key: ",key) ;
+    if (!r)
+        log_warnusys_return(LOG_EXIT_ZERO,"unknown cdb key: ",key) ;
 
-        pack[cdb_datalen(c)] = 0 ;
-        uint32_unpack_big(pack, &x) ;
+    char pack[cdata.len + 1] ;
+    memcpy(pack,cdata.s, cdata.len) ;
+    pack[cdata.len] = 0 ;
 
-        if (!auto_stra(result,pack)) log_warnusys_return(LOG_EXIT_LESSONE,"stralloc") ;
-    }
+    uint32_unpack_big(pack, &x) ;
+
+    if (!auto_stra(result,pack))
+        log_warnusys_return(LOG_EXIT_LESSONE,"stralloc") ;
 
     return x ;
+
 }
 
 int ss_resolve_read_cdb(ss_resolve_t *dres, char const *name)
@@ -1675,7 +1678,7 @@ int ss_resolve_read_cdb(ss_resolve_t *dres, char const *name)
     int fd ;
     uint32_t x ;
 
-    cdb_t c = CDB_ZERO ;
+    cdb c = CDB_ZERO ;
     stralloc tmp = STRALLOC_ZERO ;
     ss_resolve_t res = RESOLVE_ZERO ;
 
@@ -1684,7 +1687,7 @@ int ss_resolve_read_cdb(ss_resolve_t *dres, char const *name)
         log_warnusys("open: ",name) ;
         goto err_fd ;
     }
-    if (!cdb_init_map(&c, fd, 1)) {
+    if (!cdb_init_fromfd(&c, fd)) {
         log_warnusys("cdb_init: ", name) ;
         goto err ;
     }
@@ -1796,7 +1799,7 @@ int ss_resolve_read_cdb(ss_resolve_t *dres, char const *name)
     res.ndeps = x ;
 
     /* noptsdeps */
-    x =ss_resolve_find_cdb(&tmp,&c,"noptsdeps") ;
+    x = ss_resolve_find_cdb(&tmp,&c,"noptsdeps") ;
     res.noptsdeps = x ;
 
     /* nextdeps */
diff --git a/src/lib66/ss_utils.c b/src/lib66/ss_utils.c
index dc8f1ec499e479a001fff63242d06edac6ccc5ee..abba2223801a8f9aeaa75329d1c8e798cd945976 100644
--- a/src/lib66/ss_utils.c
+++ b/src/lib66/ss_utils.c
@@ -35,7 +35,7 @@
 #include <66/resolve.h>
 #include <66/parser.h>
 
-#include <s6/s6-supervise.h>
+#include <s6/supervise.h>
 
 sv_alltype const sv_alltype_zero = SV_ALLTYPE_ZERO ;
 sv_name_t const sv_name_zero = SV_NAME_ZERO ;
diff --git a/src/lib66/ssexec_all.c b/src/lib66/ssexec_all.c
index ee4b232349b5e36c7d79c5692d367c59690aa0b7..f8dc88545e4a667f90c498b5599c235efecf72d6 100644
--- a/src/lib66/ssexec_all.c
+++ b/src/lib66/ssexec_all.c
@@ -237,7 +237,7 @@ int ssexec_all(int argc, char const *const *argv,char const *const *envp,ssexec_
     stralloc contents = STRALLOC_ZERO ;
 
     {
-        subgetopt_t l = SUBGETOPT_ZERO ;
+        subgetopt l = SUBGETOPT_ZERO ;
 
         for (;;)
         {
diff --git a/src/lib66/ssexec_dbctl.c b/src/lib66/ssexec_dbctl.c
index de43916ae3824e48deae797a493f9449dc2978b9..a0207afed32a86e5e10c8860739a122c02063f27 100644
--- a/src/lib66/ssexec_dbctl.c
+++ b/src/lib66/ssexec_dbctl.c
@@ -26,7 +26,7 @@
 #include <skalibs/genalloc.h>
 #include <skalibs/djbunix.h>
 
-#include <s6/s6-supervise.h>
+#include <s6/supervise.h>
 #include <s6-rc/config.h>
 
 #include <66/constants.h>
@@ -175,7 +175,7 @@ static pid_t send(genalloc *gasv, char const *livetree, char const *signal,char
 {
     log_flow() ;
 
-    tain_t deadline ;
+    tain deadline ;
     tain_from_millisecs(&deadline, DEADLINE) ;
 
     tain_now_g() ;
@@ -232,7 +232,7 @@ int ssexec_dbctl(int argc, char const *const *argv,char const *const *envp,ssexe
 
     //PROG = "66-dbctl" ;
     {
-        subgetopt_t l = SUBGETOPT_ZERO ;
+        subgetopt l = SUBGETOPT_ZERO ;
 
         for (;;)
         {
diff --git a/src/lib66/ssexec_disable.c b/src/lib66/ssexec_disable.c
index 3e1d238208893910fce7e43c82838f76bc72f12c..efd4916faf50010268fb6e555fd14122aa958c23 100644
--- a/src/lib66/ssexec_disable.c
+++ b/src/lib66/ssexec_disable.c
@@ -196,7 +196,7 @@ int ssexec_disable(int argc, char const *const *argv,char const *const *envp,sse
     r = nclassic = nlongrun = stop = logname = force = 0 ;
 
     {
-        subgetopt_t l = SUBGETOPT_ZERO ;
+        subgetopt l = SUBGETOPT_ZERO ;
 
         for (;;)
         {
diff --git a/src/lib66/ssexec_enable.c b/src/lib66/ssexec_enable.c
index e435f1b837a3a3fb1e90b88535ef72a4ee76d98b..650be9871d5707f18ee0aff5e690f32624c1826a 100644
--- a/src/lib66/ssexec_enable.c
+++ b/src/lib66/ssexec_enable.c
@@ -260,7 +260,7 @@ int ssexec_enable(int argc, char const *const *argv,char const *const *envp,ssex
     r = nbsv = nclassic = nlongrun = start = 0 ;
 
     {
-        subgetopt_t l = SUBGETOPT_ZERO ;
+        subgetopt l = SUBGETOPT_ZERO ;
 
         for (;;)
         {
diff --git a/src/lib66/ssexec_env.c b/src/lib66/ssexec_env.c
index dd569836d65a055d524c4a61ecd87138d5ed0cc0..14b890dd850f6eda984fbedccfcf7541f580c64c 100644
--- a/src/lib66/ssexec_env.c
+++ b/src/lib66/ssexec_env.c
@@ -222,7 +222,7 @@ int ssexec_env(int argc, char const *const *argv,char const *const *envp,ssexec_
     char const *sv = 0, *svconf = 0, *src = 0, *treename = 0, *import = 0 ;
 
     {
-        subgetopt_t l = SUBGETOPT_ZERO ;
+        subgetopt l = SUBGETOPT_ZERO ;
 
         for (;;)
         {
diff --git a/src/lib66/ssexec_main.c b/src/lib66/ssexec_main.c
index 3bcca8cfa4487634cf0e45fbc26476106925db81..fc70cfa81916377f6a42817585833e3df25ad247 100644
--- a/src/lib66/ssexec_main.c
+++ b/src/lib66/ssexec_main.c
@@ -115,7 +115,8 @@ int ssexec_main(int argc, char const *const *argv,char const *const *envp,ssexec
 
     nargv[n++] = "fake_name" ;
     {
-        subgetopt_t l = SUBGETOPT_ZERO ;
+        subgetopt l = SUBGETOPT_ZERO ;
+
         int f = 0 ;
         for (;;)
         {
diff --git a/src/lib66/ssexec_start.c b/src/lib66/ssexec_start.c
index 65bca8877704f383b00abf4e02e67d7f7f40331f..38c0c3bd3cd6cd7602d82d6fcd408ff671e34683 100644
--- a/src/lib66/ssexec_start.c
+++ b/src/lib66/ssexec_start.c
@@ -224,7 +224,7 @@ int ssexec_start(int argc, char const *const *argv,char const *const *envp,ssexe
     cl = rc = logname = 0  ;
 
     {
-        subgetopt_t l = SUBGETOPT_ZERO ;
+        subgetopt l = SUBGETOPT_ZERO ;
 
         for (;;)
         {
diff --git a/src/lib66/ssexec_stop.c b/src/lib66/ssexec_stop.c
index aeee76bb3c590cad2c970bbe6ed8f84dd7115e27..e33b9f378d98c3bbd0dc0310171de477fa59cd48 100644
--- a/src/lib66/ssexec_stop.c
+++ b/src/lib66/ssexec_stop.c
@@ -133,7 +133,7 @@ int ssexec_stop(int argc, char const *const *argv,char const *const *envp,ssexec
     cl = rc = sigopt = 0 ;
 
     {
-        subgetopt_t l = SUBGETOPT_ZERO ;
+        subgetopt l = SUBGETOPT_ZERO ;
 
         for (;;)
         {
diff --git a/src/lib66/ssexec_svctl.c b/src/lib66/ssexec_svctl.c
index 3654279e27f629eab2cba7d2dbfeec24f3ed4440..9c347da8d62a8e681949baec15ccab85361a3644 100644
--- a/src/lib66/ssexec_svctl.c
+++ b/src/lib66/ssexec_svctl.c
@@ -34,7 +34,7 @@
 #include <skalibs/tai.h>
 #include <skalibs/sig.h>//sig_ignore
 
-#include <s6/s6-supervise.h>//s6_svstatus_t
+#include <s6/supervise.h>//s6_svstatus_t
 #include <s6/ftrigr.h>
 
 
@@ -339,11 +339,11 @@ static int handle_signal_pipe(genalloc *gakeep)
     return ok ;
 
 }
-static int compute_timeout(tain_t *start,tain_t *tsv)
+static int compute_timeout(tain *start,tain *tsv)
 {
     log_flow() ;
 
-    tain_t now,tpass ;
+    tain now,tpass ;
     tain_now_g() ;
     tain_copynow(&now) ;
     tain_sub(&tpass,&now,start) ;
@@ -359,12 +359,12 @@ static void svc_listen_less(int state_val, int *state,unsigned int *did,unsigned
     did[pos] = 1 ;
     (*loop)--;
 }
-static void svc_listen(unsigned int nsv,tain_t *deadline)
+static void svc_listen(unsigned int nsv,tain *deadline)
 {
     log_flow() ;
 
     int r ;
-    tain_t start ;
+    tain start ;
     stralloc sa = STRALLOC_ZERO ;
     iopause_fd x = { .fd = ftrigr_fd(&fifo), .events = IOPAUSE_READ } ;
     ss_resolve_sig_t_ref svc ;
@@ -449,7 +449,7 @@ static void svc_async(unsigned int i,unsigned int nsv)
     return ;
 }
 
-int doit (int spfd, genalloc *gakeep, tain_t *deadline)
+int doit (int spfd, genalloc *gakeep, tain *deadline)
 {
     log_flow() ;
 
@@ -492,7 +492,7 @@ int ssexec_svctl(int argc, char const *const *argv,char const *const *envp,ssexe
     int e, isup, r, ret = 1 ;
     unsigned int death, tsv, reverse, tsv_g ;
     int SIGNAL = -1 ;
-    tain_t ttmain ;
+    tain ttmain ;
 
     genalloc gakeep = GENALLOC_ZERO ; //type ss_resolve_sig
     stralloc sares = STRALLOC_ZERO ;
@@ -509,7 +509,7 @@ int ssexec_svctl(int argc, char const *const *argv,char const *const *envp,ssexe
 
     //PROG = "66-svctl" ;
     {
-        subgetopt_t l = SUBGETOPT_ZERO ;
+        subgetopt l = SUBGETOPT_ZERO ;
 
         for (;;)
         {
@@ -631,7 +631,7 @@ int ssexec_svctl(int argc, char const *const *argv,char const *const *envp,ssexe
         }
         else sv_signal.ndeath = death ;
 
-        tain_t tcheck ;
+        tain tcheck ;
         tain_from_millisecs(&tcheck,tsv) ;
         int check = tain_to_millisecs(&tcheck) ;
         if (check > 0)
@@ -681,10 +681,10 @@ int ssexec_svctl(int argc, char const *const *argv,char const *const *envp,ssexe
 
     int spfd = selfpipe_init() ;
     if (spfd < 0) log_dieusys(LOG_EXIT_SYS, "selfpipe_init") ;
-    if (selfpipe_trap(SIGCHLD) < 0) log_dieusys(LOG_EXIT_SYS, "selfpipe_trap") ;
-    if (selfpipe_trap(SIGINT) < 0) log_dieusys(LOG_EXIT_SYS, "selfpipe_trap") ;
-    if (selfpipe_trap(SIGTERM) < 0) log_dieusys(LOG_EXIT_SYS, "selfpipe_trap") ;
-    if (sig_ignore(SIGPIPE) < 0) log_dieusys(LOG_EXIT_SYS,"ignore SIGPIPE") ;
+    if (!selfpipe_trap(SIGCHLD)) log_dieusys(LOG_EXIT_SYS, "selfpipe_trap") ;
+    if (!selfpipe_trap(SIGINT)) log_dieusys(LOG_EXIT_SYS, "selfpipe_trap") ;
+    if (!selfpipe_trap(SIGTERM)) log_dieusys(LOG_EXIT_SYS, "selfpipe_trap") ;
+    if (!sig_ignore(SIGPIPE)) log_dieusys(LOG_EXIT_SYS,"ignore SIGPIPE") ;
 
     if (!svc_init_pipe(&fifo,&gakeep,&ttmain)) log_dieu(LOG_EXIT_SYS,"init pipe") ;
 
diff --git a/src/lib66/svc_init.c b/src/lib66/svc_init.c
index d834b5f5be9aa3cbf798bf861d4b0bcfb27b51be..a4642b20a6da1fbfc3489aa12ee8f438a933c5b0 100644
--- a/src/lib66/svc_init.c
+++ b/src/lib66/svc_init.c
@@ -28,7 +28,7 @@
 #include <skalibs/djbunix.h>
 #include <skalibs/posixplz.h>//touch
 
-#include <s6/s6-supervise.h>
+#include <s6/supervise.h>
 #include <s6/ftrigr.h>
 #include <s6/ftrigw.h>
 
@@ -52,7 +52,7 @@ int svc_init(ssexec_t *info,char const *src, genalloc *ga)
     genalloc ids = GENALLOC_ZERO ; // uint16_t
     ss_state_t sta = STATE_ZERO ;
 
-    tain_t deadline ;
+    tain deadline ;
     tain_now_set_stopwatch_g() ;
     tain_addsec(&deadline,&STAMP,2) ;
 
diff --git a/src/lib66/svc_init_pipe.c b/src/lib66/svc_init_pipe.c
index e03502957fa770469c750407e43223b51fa481bc..6747fc37709416ae6325eec00f128269aa23c853 100644
--- a/src/lib66/svc_init_pipe.c
+++ b/src/lib66/svc_init_pipe.c
@@ -24,13 +24,13 @@
 
 #include <s6/ftrigr.h>
 #include <s6/ftrigw.h>
-#include <s6/s6-supervise.h>
+#include <s6/supervise.h>
 
 #include <66/utils.h>
 #include <66/resolve.h>
 
 
-int svc_init_pipe(ftrigr_t *fifo,genalloc *gasv,tain_t *deadline)
+int svc_init_pipe(ftrigr_t *fifo,genalloc *gasv,tain *deadline)
 {
     log_flow() ;
 
diff --git a/src/lib66/tree_cmd_state.c b/src/lib66/tree_cmd_state.c
index 239bfa8c7cdc7e4fbfa8b5faa5bc2a7a591ae290..5d8ae727ef384d52df34885c31f69b0c88410e36 100644
--- a/src/lib66/tree_cmd_state.c
+++ b/src/lib66/tree_cmd_state.c
@@ -45,7 +45,7 @@ int tree_state(int argc, char const *const *argv)
     verbosity = 1 ;
     add = del = sch = err = 0 ;
     {
-        subgetopt_t l = SUBGETOPT_ZERO ;
+        subgetopt l = SUBGETOPT_ZERO ;
 
         for (;;)
         {