diff --git a/tools/lint/common.c b/tools/lint/common.c
index d319410..5c5894e 100644
--- a/tools/lint/common.c
+++ b/tools/lint/common.c
@@ -108,8 +108,6 @@
 void
 get_features(struct ly_set *fset, const char *module, const char ***features)
 {
-    static const char *all_features[] = {"*", NULL};
-
     /* get features list for this module */
     for (uint32_t u = 0; u < fset->count; ++u) {
         struct schema_features *sf = (struct schema_features *)fset->objs[u];
@@ -120,8 +118,8 @@
         }
     }
 
-    /* features not set, enable all features by default */
-    *features = all_features;
+    /* features not set so disable all */
+    *features = NULL;
 }
 
 int
diff --git a/tools/lint/main_ni.c b/tools/lint/main_ni.c
index 8941f18..ace7ea0 100644
--- a/tools/lint/main_ni.c
+++ b/tools/lint/main_ni.c
@@ -152,8 +152,11 @@
             "                explicitly specified).\n\n");
 
     printf("  -F FEATURES, --features=FEATURES\n"
-            "                Features to support, default all in all implemented modules.\n"
-            "                <modname>:[<feature>,]*\n\n");
+            "                Specific module features to support in the form <module-name>:(<feature>,)*\n"
+            "                Use <feature> '*' to enable all features of a module. This option can be\n"
+            "                specified multiple times, to enable features in multiple modules. If this\n"
+            "                option is not specified, all the features in all the implemented modules\n"
+            "                are enabled.\n\n");
 
     printf("  -i, --make-implemented\n"
             "                Make the imported modules \"referenced\" from any loaded\n"
@@ -293,8 +296,7 @@
             LY_ERR ret;
             uint8_t path_unset = 1; /* flag to unset the path from the searchpaths list (if not already present) */
             char *dir, *module;
-            const char **features = NULL;
-            uint16_t ctx_opts = 0;
+            const char **features;
             struct lys_module *mod;
 
             if (parse_schema_path(argv[optind + i], &dir, &module)) {
@@ -307,12 +309,10 @@
             }
 
             /* get features list for this module */
-            get_features(&c->schema_features, module, &features);
-
-            /* set imp feature flag if all should be enabled */
             if (!c->schema_features.count) {
-                ctx_opts = LY_CTX_ENABLE_IMP_FEATURES;
-                ly_ctx_set_options(c->ctx, ctx_opts);
+                features = all_features;
+            } else {
+                get_features(&c->schema_features, module, &features);
             }
 
             /* temporary cleanup */
@@ -322,7 +322,6 @@
             /* parse module */
             ret = lys_parse(c->ctx, in, format_schema, features, &mod);
             ly_ctx_unset_searchdir_last(c->ctx, path_unset);
-            ly_ctx_unset_options(c->ctx, ctx_opts);
             ly_in_free(in, 1);
             in = NULL;
             if (ret) {
@@ -632,6 +631,11 @@
         } /* switch */
     }
 
+    /* set imp feature flag if all should be enabled */
+    if (!c->schema_features.count) {
+        options_ctx |= LY_CTX_ENABLE_IMP_FEATURES;
+    }
+
     /* libyang context */
     if (ly_ctx_new(NULL, options_ctx, &c->ctx)) {
         YLMSG_E("Unable to create libyang context.\n");
