for (indep in verifications$independent) {

  ## TODO: re-write this condition 
  if (length(indep) == 1) {
    info(logger,
         paste(" #*****************************************#",
               " # Starting Independent verification of Indicator ",
               indep,
               sep = "\n"))
    ind_table <- read_yaml(paste0(recipe$Run$code_dir,
                           "conf/indicators_table.yml"))
    variable <- ind_table[indep[[1]]][[1]]$ECVs
    store.freq <- ind_table[indep[[1]]][[1]]$freq
    ind.fun <- ind_table[indep[[1]]][[1]]$fun
  } else {
    info(logger,
         paste(" #*****************************************#",
               " # Starting Independent verification of ECV ",
                paste(indep, collapse = ' '),
               sep = "\n"))
    variable <- indep$name
    store.freq <- indep$freq
    ind.fun <- NULL
  }


  # =========================================================
  # DATA LOADING --------------------------------------------
  # =========================================================

  source(recipe$Analysis$Data_load$module)

  # =========================================================
  # WORKFLOW MODULES RUN ------------------------------------
  # =========================================================

  # Translate $Workflow to call modules:
  ## 1) Clean step of the workflow set as FALSE or NULL or None:
  modules <- names(recipe$Analysis$Workflow)
  for (mod in modules) {
    if ((is.logical(recipe$Analysis$Workflow[[mod]][[1]]) && 
         recipe$Analysis$Workflow[[mod]][[1]] == FALSE) ||
         recipe$Analysis$Workflow[[mod]][[1]] == 'None' ||
         is.null(recipe$Analysis$Workflow[[mod]][[1]])) {
      info(logger,
           paste("The module", mod, "won't be executed."))
      recipe$Analysis$Workflow <- recipe$Analysis$Workflow[
   -which(names(recipe$Analysis$Workflow) == mod)]
    }
  }

  modules <- names(recipe$Analysis$Workflow)
  ## 2) Create a common format for all modules
  tmp_modules <- list()
  for (mod in modules) {
    if (length(recipe$Analysis$Workflow[[mod]]) > 1) {
      names(recipe$Analysis$Workflow[[mod]]) <-
            rep(mod, length(recipe$Analysis$Workflow[[mod]]))
      tmp_modules <- append(tmp_modules,
                            recipe$Analysis$Workflow[[mod]])
    } else {
      tmp_modules <- append(tmp_modules, 
                            recipe$Analysis$Workflow[mod])
    }

    modules <- tmp_modules
    ## 3) Call each module and pass arguments:
    for (mod in 1:length(modules)) {
      # In case multiple calls to a module e.g.: Skill_1 --> Skill
      if (any(strsplit(names(modules)[mod], "")[[1]] == "_")) {
        module_name <- substr(names(modules)[mod], start = 1, 
          stop = which(strsplit(names(modules)[mod], "")[[1]] == "_") - 1)
      } else {
        module_name <- names(modules)[mod]
      }
      info(logger, paste("Start running module", module_name))
      module_code <- file.path(conf$code_dir, "modules",
                               module_name,
                               paste0(module_name, ".R"))
      # Define variables setup in the recipe
      for (param in names(modules[[mod]])) {
        if (length(modules[[mod]][[param]])) {
          tmp <- paste(modules[[mod]][[param]], 
                       collapse = ",")
        } else {
          tmp <- modules[[mod]][[param]]
        }  
        info(logger, paste("Variable *", param, "* set as", tmp))
        assign(as.character(param),
               modules[[mod]][[param]])
      }
      source(module_code)
      # TO DO:
      # Check the arguments of each module can be an option here:
      #...
      info(logger, paste(module_name, "module run finished."))
    }
  }
}

