diff --git a/Projects/Rbook/parameters_Rbook.R b/Projects/Rbook/parameters_Rbook.R
index 0f32bf6a247bd9a5c7bc005abda94cbb8a298354..aa27915a492b2957b9f4bb385540ebae9384d6a6 100644
--- a/Projects/Rbook/parameters_Rbook.R
+++ b/Projects/Rbook/parameters_Rbook.R
@@ -1,5 +1,7 @@
 
+rm(list=ls())
 
+ source("functions.R")
 designpath<- "Projects/Rbook/Designs/"
 
 #notes <- "This design consists of different heuristics. One group did not attend the methan attribute, another group only decided based on the payment"
@@ -23,13 +25,6 @@ bheight3=0.50
 destype <- "spdesign"
 
 
-
-
-
-
-
-
-
 #place your utility functions here
 u<- list(u1= list(
   v1 =V.1 ~  bsq * alt1.sq,
@@ -40,7 +35,7 @@ u<- list(u1= list(
 
 
 
-## logBonus
+sim_all()
 
 
 
diff --git a/functions.R b/functions.R
index 2092551891864a1d1e8065e959551eddba42d963..007dc77625855d76b838049c55dd131ab961f140 100644
--- a/functions.R
+++ b/functions.R
@@ -78,7 +78,113 @@ all_designs[["time"]]=time
 return(all_designs)
 }
 
-##test 
+
+
+
+readdesign <- function(design = designfile, designtype=destype) {
+  
+  
+  design <- switch(designtype,
+                   
+                   "ngene" =readr::read_delim(design,delim = "\t",
+                                              escape_double = FALSE,
+                                              trim_ws = TRUE  , 
+                                              col_select = c(-Design, -starts_with("...")) ,
+                                              name_repair = "universal" , show_col_types = FALSE) %>% 
+                     filter(!is.na(Choice.situation)),
+                   
+                   "spdesign" =as.data.frame(readRDS(design)) %>%
+                     mutate(Choice.situation=1:n()) %>% 
+                     rename_with(~ stringr::str_replace(.,pattern = "_","\\."), everything()), 
+                   
+                   
+                   stop("Invalid value for design. Please provide either 'ngene' or 'spdesign'.")
+  )  
+  
+} 
+
+
+simulate_choices <- function(data=datadet, utility =utils, setspp) {  #the part in dataset that needs to be repeated in each run
+  
+
+ 
+  by_formula <- function(equation){ #used to take formulas as inputs in simulation utility function
+    # //! cur_data_all may get deprecated in favor of pick
+    # pick(everything()) %>%
+    cur_data_all() %>%
+      transmute(!!lhs(equation) := !!rhs(equation) )
+  } 
+   
+  cat(" \n does sou_gis exist: ", exists("sou_gis"), "\n")
+  
+  if (exists("sou_gis") && is.function(sou_gis)) {
+    sou_gis()
+    
+    cat("\n source of gis has been done \n")
+  }    
+  
+  # source("Projects/ValuGaps/code/GIS_data.R")
+  
+  if(!exists("manipulations")) manipulations=list() ## If no user input on further data manipulations
+  
+  n=seq_along(1:length(utility))    # number of utility functions
+  
+  
+
+  
+  
+  cat("\n dataset final_set exists: ",exists("final_set"), "\n")
+  
+  if(exists("final_set")) data = left_join(data,final_set, by = "ID")   
+  
+  cat("\n decisiongroups exists: " ,exists("decisiongroups"))  
+  
+  if(exists("decisiongroups"))  {     ### create a new variable to classify decision groups.
+    
+    data = mutate(data,group = as.numeric(cut(row_number(), 
+                                              breaks = decisiongroups * n(), 
+                                              labels = seq_along(decisiongroups[-length(decisiongroups)]),
+                                              include.lowest = TRUE)))
+    
+    print(table(data$group))
+  } else {
+    
+    data$group=1
+  }
+  
+  
+  data<- data %>% 
+    group_by(ID) %>% 
+    mutate(!!! manipulations) 
+  
+  
+  
+  subsets<- split(data,data$group)     
+  
+  subsets <-  map2(.x = seq_along(u),.y = subsets,
+                   ~ mutate(.y,map_dfc(u[[.x]],by_formula)))
+  
+  data <-bind_rows(subsets)           
+  
+  data<- data %>%       
+    rename_with(~ stringr::str_replace(.,pattern = "\\.","_"), everything()) %>% 
+    mutate(across(.cols=n,.fns = ~ rgumbel(setspp,loc=0, scale=1), .names = "{'e'}_{n}" ), 
+           across(starts_with("V_"), .names = "{'U'}_{n}") + across(starts_with("e_")) ) %>% ungroup() %>% 
+    mutate(CHOICE=max.col(.[,grep("U_",names(.))])
+    )   %>% 
+    as.data.frame()
+  
+  
+  
+  
+  cat("\n data has been made \n")
+  
+  cat("\n First few observations \n ") 
+  print(head(data))
+  cat("\n \n ")   
+  return(data)
+  
+} 
 
 
 sim_choice <- function(designfile, no_sim=10, respondents=330, mnl_U,utils=u[[1]] ,destype) {
@@ -101,34 +207,13 @@ sim_choice <- function(designfile, no_sim=10, respondents=330, mnl_U,utils=u[[1]
   require("rlang")
   
 
-  
-  readdesign <- function(design = designfile, designtype=destype) {
-    
-    
-    design <- switch(designtype,
-                     
-                     "ngene" =readr::read_delim(design,delim = "\t",
-                                                escape_double = FALSE,
-                                                trim_ws = TRUE  , 
-                                                col_select = c(-Design, -starts_with("...")) ,
-                                                name_repair = "universal" , show_col_types = FALSE) %>% 
-                       filter(!is.na(Choice.situation)),
-                     
-                     "spdesign" =as.data.frame(readRDS(design)) %>%
-                       mutate(Choice.situation=1:n()) %>% 
-                       rename_with(~ stringr::str_replace(.,pattern = "_","\\."), everything()), 
-                     
-                     
-                     stop("Invalid value for design. Please provide either 'ngene' or 'spdesign'.")
-    )  
-    
-  } 
+
   
   mnl_U <-paste(map_chr(utils,as.character,keep.source.attr = TRUE),collapse = "",";") %>%
     str_replace_all( c( "priors\\[\"" = "" , "\"\\]" = "" ,  "~" = "=", "\\." = "_" , " b" = " @b"  , "V_"="U_", " alt"="$alt"))
   
  cat("mixl \n") 
- print(mnl_U)
+ cat(mnl_U)
  
  cat("\n Simulation \n")
  
@@ -136,93 +221,19 @@ sim_choice <- function(designfile, no_sim=10, respondents=330, mnl_U,utils=u[[1]
  
   
   
-  by_formula <- function(equation){ #used to take formulas as inputs in simulation utility function
-    # //! cur_data_all may get deprecated in favor of pick
-    # pick(everything()) %>%
-    cur_data_all() %>%
-      transmute(!!lhs(equation) := !!rhs(equation) )
-  } 
+
   
   
 
 
   
-  simulate_choices <- function(data=datadet) {  #the part in dataset that needs to be repeated in each run
-cat(" \n does sou_gis exist: ", exists("sou_gis"), "\n")
-
-    if (exists("sou_gis") && is.function(sou_gis)) {
-      sou_gis()
-      
-      cat("\n source of gis has been done \n")
-    }    
-       
-   # source("Projects/ValuGaps/code/GIS_data.R")
-    
-    if(!exists("manipulations")) manipulations=list() ## If no user input on further data manipulations
-       
-    n=seq_along(1:length(utils))    # number of utility functions
 
-    
-#browser()    
-
-
-    cat("\n dataset final_set exists: ",exists("final_set"), "\n")
-    
-    if(exists("final_set")) data = left_join(data,final_set, by = "ID")   
-    
-    cat("\n decisiongroups exists: " ,exists("decisiongroups"))  
-    
-    if(exists("decisiongroups"))  {     ### create a new variable to classify decision groups.
-      data = mutate(data,group = as.numeric(cut(row_number(), 
-                                 breaks = decisiongroups * n(), 
-                                 labels = seq_along(decisiongroups[-length(decisiongroups)]),
-                                 include.lowest = TRUE)))
-      
-      print(table(data$group))
-    } else {
-      
-      data$group=1
-    }
-   
-
-       data<- data %>% 
-      group_by(ID) %>% 
-      mutate(!!! manipulations) 
-             
-
-          
-subsets<- split(data,data$group)     
-   
-subsets <-  map2(.x = seq_along(u),.y = subsets,
-                 ~ mutate(.y,map_dfc(u[[.x]],by_formula)))
- 
-data <-bind_rows(subsets)           
- 
-   data<- data %>%       
-     rename_with(~ stringr::str_replace(.,pattern = "\\.","_"), everything()) %>% 
-        mutate(across(.cols=n,.fns = ~ rgumbel(setpp,loc=0, scale=1), .names = "{'e'}_{n}" ), 
-         across(starts_with("V_"), .names = "{'U'}_{n}") + across(starts_with("e_")) ) %>% ungroup() %>% 
-         mutate(CHOICE=max.col(.[,grep("U_",names(.))])
-      )   %>% 
-      as.data.frame()
-
-       
-       
-    
-print("\n data has been made \n")
-
-cat("\n First few observations \n ") 
-print(head(data))
- cat("\n \n ")   
-    return(data)
-    
-  } 
   
   estimate_sim <- function(run=1) {         #start loop
     
     cat("This is Run number ", run)
     
-    database <- simulate_choices(datadet) 
+    database <- simulate_choices(datadet, utility = utils, setspp=setpp ) 
     
     
    cat("This is the utility functions \n" , mnl_U) 
@@ -236,15 +247,15 @@ print(head(data))
   designs_all <- list() 
   
  
- design<- readdesign()
+ design<- readdesign(design = designfile)
   
  if (!exists("design$Block")) design$Block=1 
   nsets<-nrow(design)        
   nblocks<-max(design$Block)
   setpp <- nsets/nblocks      # Choice Sets per respondent; in this 'no blocks' design everyone sees all 24 sets
-  #respondents <- replications*nblocks
+
   replications <- respondents/nblocks
-  #browser()
+
   
  
   
@@ -259,24 +270,23 @@ as.data.frame()
   
   
   
-  database <- simulate_choices() 
+database <- simulate_choices(data=datadet, utility = utils, setspp = setpp) 
   
-  model_spec <- mixl::specify_model(mnl_U, database, disable_multicore=F)
+model_spec <- mixl::specify_model(mnl_U, database, disable_multicore=F)
   
-  est=setNames(rep(0,length(model_spec$beta_names)), model_spec$beta_names)
+est=setNames(rep(0,length(model_spec$beta_names)), model_spec$beta_names)
   
   
-  availabilities <- mixl::generate_default_availabilities(
+availabilities <- mixl::generate_default_availabilities(
     database, model_spec$num_utility_functions)
   
-  plan(multisession, workers = 8)
-  
-  output<- 1:no_sim %>% map(estimate_sim)
+
+output<- 1:no_sim %>% map(estimate_sim)
  
   
   
    
-  coefs<-map(1:length(output),~summary(output[[.]])[["coefTable"]][c(1,8)]  %>%
+coefs<-map(1:length(output),~summary(output[[.]])[["coefTable"]][c(1,8)]  %>%
                tibble::rownames_to_column() %>%
                pivot_wider(names_from = rowname, values_from = c(est, rob_pval0)) ) %>% 
     bind_rows(.id = "run")
diff --git a/generatemd.R b/generatemd.R
index d3d9b3a1244fdbcbb542bbd291175d17ca1628c3..5185cbb6dc750f5d65ef6f506aecbf965100c55e 100644
--- a/generatemd.R
+++ b/generatemd.R
@@ -3,9 +3,9 @@ rm(list=ls())
 
 source("functions.R")
 
-file <- "Projects/feedadditives/parameters_feedadd.R"
+file <- "Projects/Rbook/parameters_Rbook.R"
 #  file <- "Projects/CSA/parameters_csa.R"
 
 
 
-make_md()
\ No newline at end of file
+make_md()