diff --git a/src/lib66/parse/parse_frontend.c b/src/lib66/parse/parse_frontend.c
index f0bf2243a825237dda5adbe74052dc8a9f58d348..a448167455ebaa8bb6a455e519f5ed2b199432cf 100644
--- a/src/lib66/parse/parse_frontend.c
+++ b/src/lib66/parse/parse_frontend.c
@@ -101,6 +101,9 @@ int parse_frontend(char const *sv, resolve_service_t *ares, unsigned int *aresle
 
     if (inmodule) {
 
+        if (service_resolve_array_search(ares, *areslen, svname) >= 0)
+            log_warn_return(2, "ignoring: ", svname, " service -- already appended to the selection") ;
+
         char n[strlen(inmodule) + 1 + strlen(svname) + 1] ;
         auto_strings(n, inmodule, ":", svname) ;
 
@@ -140,12 +143,11 @@ int parse_frontend(char const *sv, resolve_service_t *ares, unsigned int *aresle
     isparsed = service_is_g(atree, svname, STATE_FLAGS_ISPARSED) ;
     if (isparsed == -1)
         log_dieusys(LOG_EXIT_SYS, "get information of service: ", svname, " -- please make a bug report") ;
+    else if (!isparsed)
+        isparsed = STATE_FLAGS_FALSE ;
 
-    if (isparsed == STATE_FLAGS_TRUE) {
-
-        if (!force)
-            log_warn_return(2, "ignoring service: ", svname, " -- already parsed") ;
-    }
+    if (isparsed == STATE_FLAGS_TRUE && !force)
+        log_warn_return(2, "ignoring service: ", svname, " -- already parsed") ;
 
     if (info->opt_tree) {
 
@@ -205,6 +207,11 @@ int parse_frontend(char const *sv, resolve_service_t *ares, unsigned int *aresle
 
     res.path.frontend = resolve_add_string(wres, sv) ;
 
+    /** logger is set by default. if service is a module
+     * we don't want logger. So, set it false by default. */
+    if (res.type == TYPE_MODULE)
+        res.logger.want = 0 ;
+
     // keep overwrite_conf
     res.environ.env_overwrite = conf ;
 
@@ -243,7 +250,7 @@ int parse_frontend(char const *sv, resolve_service_t *ares, unsigned int *aresle
     if (isparsed == STATE_FLAGS_FALSE) {
 
         if (!parse_interdependences(svname, res.sa.s + res.dependencies.depends, res.dependencies.ndepends, ares, areslen, info, force, conf, forced_directory, main, inmodule))
-                log_dieu(LOG_EXIT_SYS, "parse dependencies of service: ", svname) ;
+            log_dieu(LOG_EXIT_SYS, "parse dependencies of service: ", svname) ;
 
         if (res.type == TYPE_BUNDLE)
             if (!parse_interdependences(svname, res.sa.s + res.dependencies.contents, res.dependencies.ncontents, ares, areslen, info, force, conf, forced_directory, main, inmodule))
@@ -256,7 +263,7 @@ int parse_frontend(char const *sv, resolve_service_t *ares, unsigned int *aresle
     if (service_resolve_array_search(ares, *areslen, svname) < 0) {
 
         log_trace("add service ", svname, " to the selection") ;
-        if (*areslen >= SS_MAX_SERVICE)
+        if (*areslen > SS_MAX_SERVICE)
             log_die(LOG_EXIT_SYS, "too many services to parse -- compile again 66 changing the --max-service options") ;
         ares[(*areslen)++] = res ;
     }