return not missing_requirements
 
 
-def get_toolchain_configs(**kwargs):
+def get_toolchain_configs(toolchains_url):
     """Fetch and return the possible toolchain configurations
 
     This function returns an array of toolchain configurations. Each
     toolchain configuration is itself an array of lines of the defconfig.
     """
-    toolchains_url = kwargs['toolchains_url']
 
     with urlopen_closing(toolchains_url) as r:
         toolchains_csv = decode_byte_list(r.readlines())
     return configs
 
 
-def is_toolchain_usable(**kwargs):
+def is_toolchain_usable(outputdir, config):
     """Check if the toolchain is actually usable."""
 
-    idir = "instance-%d" % kwargs['instance']
-    sysinfo = kwargs['sysinfo']
-    log = kwargs['log']
-
-    outputdir = os.path.join(idir, "output")
     with open(os.path.join(outputdir, ".config")) as configf:
         configlines = configf.readlines()
 
     # Check that the toolchain configuration is still present
-    for toolchainline in kwargs['config']:
+    for toolchainline in config:
         if toolchainline not in configlines:
             return False
 
     return True
 
 
-def fixup_config(**kwargs):
+def fixup_config(outputdir, sysinfo):
     """Finalize the configuration and reject any problematic combinations
 
     This function returns 'True' when the configuration has been
     generated).
     """
 
-    idir = "instance-%d" % kwargs['instance']
-    sysinfo = kwargs['sysinfo']
-
-    outputdir = os.path.join(idir, "output")
     with open(os.path.join(outputdir, ".config")) as configf:
         configlines = configf.readlines()
 
     return True
 
 
-def gen_config(**kwargs):
+def gen_config(args):
     """Generate a new random configuration
 
     This function generates the configuration, by choosing a random
     packages.
     """
 
-    idir = "instance-%d" % kwargs['instance']
-    log = kwargs['log']
+    idir = "instance-%d" % args.instance
 
     # We need the absolute path to use with O=, because the relative
     # path to the output directory here is not relative to the
     outputdir = os.path.abspath(os.path.join(idir, "output"))
     srcdir = os.path.join(idir, "buildroot")
 
-    log_write(log, "INFO: generate the configuration")
+    log_write(args.log, "INFO: generate the configuration")
 
     # Select a random toolchain configuration
     try:
-        configs = get_toolchain_configs(**kwargs)
+        configs = get_toolchain_configs(args.toolchains_url)
     except Exception:
         return -1
 
                            "olddefconfig"],
                           stdout=devnull, stderr=devnull)
     if ret != 0:
-        log_write(log, "ERROR: cannot oldconfig")
+        log_write(args.log, "ERROR: cannot oldconfig")
         return -1
 
-    if not is_toolchain_usable(config=config, **kwargs):
+    if not is_toolchain_usable(outputdir, config):
         return -1
 
     # Now, generate the random selection of packages, and fixup
     bounded_loop = 100
     while True:
         if bounded_loop == 0:
-            log_write(log, "ERROR: cannot generate random configuration after 100 iterations")
+            log_write(args.log, "ERROR: cannot generate random configuration after 100 iterations")
             return -1
         bounded_loop -= 1
         ret = subprocess.call(["make", "O=%s" % outputdir, "-C", srcdir,
                                "randpackageconfig"],
                               stdout=devnull, stderr=devnull)
         if ret != 0:
-            log_write(log, "ERROR: cannot generate random configuration")
+            log_write(args.log, "ERROR: cannot generate random configuration")
             return -1
-        if fixup_config(**kwargs):
+        if fixup_config(outputdir, args.sysinfo):
             break
 
     ret = subprocess.call(["make", "O=%s" % outputdir, "-C", srcdir,
                            "olddefconfig"],
                           stdout=devnull, stderr=devnull)
     if ret != 0:
-        log_write(log, "ERROR: cannot oldconfig")
+        log_write(args.log, "ERROR: cannot oldconfig")
         return -1
 
     ret = subprocess.call(["make", "O=%s" % outputdir, "-C", srcdir,
                            "savedefconfig"],
                           stdout=devnull, stderr=devnull)
     if ret != 0:
-        log_write(log, "ERROR: cannot savedefconfig")
+        log_write(args.log, "ERROR: cannot savedefconfig")
         return -1
 
     return 0
         # gen_config expects "buildroot" directory under idir
         os.symlink("..", os.path.join(idir, "buildroot"))
 
-    # gen_config expects a dict, but args is a class object
-    ret = gen_config(**args.__dict__)
+    ret = gen_config(args)
 
     if ret != 0:
         parser.exit(1)