diff --git a/R/FUN.TRY.R b/R/FUN.TRY.R
index 40e15598440ce0fedec3a5f3fe08774abef3fe0d..9f35f19f0e4f1469040dc3e9b5017f05869515b8 100644
--- a/R/FUN.TRY.R
+++ b/R/FUN.TRY.R
@@ -157,11 +157,11 @@ return(res.temp)
 ####### extract mean sd per species or genus
 ####### added species synonyme
 
-fun.species.traits <- function(species,species.table,col.sp="Latin_name",col.sp.syno="Latin_name_syn",traits,data){
+fun.species.traits <- function(species.code,species.table,col.sp="sp",col.sp.syno="Latin_name_syn",traits,data){
  vec.mean <- vec.sd  <- vec.nobs <- rep(NA,length(traits))
  vec.exp <- vec.genus <- rep(FALSE,length(traits))
  names(vec.mean) <-  names(vec.sd) <-  names(vec.exp) <-  names(vec.genus) <- names(vec.nobs)<- traits
- species.syno <- species.table[species.table[[col.sp]]==species,col.sp.syno]
+ species.syno <- species.table[species.table[[col.sp]]==species.code,col.sp.syno]
  #browser()
  for(i in traits){
     if(sum((data$AccSpeciesName %in% species.syno) & !is.na(data[[i]]))>0){ ## if data for this species or syno
@@ -183,7 +183,7 @@ fun.species.traits <- function(species,species.table,col.sp="Latin_name",col.sp.
        }
     }else{### compute data at genus level if no data for the species
 
-       genus <- sub(" .*","",species)
+       genus <- sub(" .*","",species.syno)
       if(sum(grepl(genus,data$AccSpeciesName) & (!is.na(data[[i]])))>0){
        x <-  data[[i]][grepl(genus,data$AccSpeciesName,fixed=TRUE ) & (!is.na(data[[i]])) ]
         res.temp <- fun.mean.sd.nobs.out(x,i)
@@ -235,16 +235,12 @@ return(extract.species.try)
 }
     
 
-fun.extract.format.sp.traits.TRY <- function(sp,sp.syno.table=NA,data){
+fun.extract.format.sp.traits.TRY <- function(sp,sp.syno.table,data){
 ## check syno data if not create a table with column syno repating the species
-    if(is.na(sp.syno.table)){
-     sp.syno.table <- data.frame(Latin_name=sp,Latin_name_sym=sp)
-    }else{
-     names(sp.syno.table) <- c("Latin_name","Latin_name_sym")
-    }
+
 ### test data sp and sp.syno.table match    
-if(sum(!(sp %in% sp.syno.table[["Latin_name"]] ))>0) stop('not same species name in sp and sp.syno.table')
-if(sum((sp %in% data[["AccSpeciesName"]] ))==0) stop('not a single similar species name in sp and TRY')
+if(sum(!(sp %in% sp.syno.table[["sp"]] ))>0) stop('not same species name in sp and sp.syno.table')
+if(sum((sp.syno.table[["Latin_name_syn"]] %in% data[["AccSpeciesName"]] ))==0) stop('not a single similar species name in sp and TRY')
 ## extract
 traits <- c("StdValue.Leaf.nitrogen..N..content.per.dry.mass",
             "StdValue.Seed.mass",
@@ -276,6 +272,6 @@ for (i in 1:length(sd.names.1)){
     extract.species.try.2[[sd.names.1[i]]][!extract.species.try.2[[genus.names[i]]]] <- sd.vec.sp[i]
     extract.species.try.2[[sd.names.1[i]]][extract.species.try.2[[genus.names[i]]]] <- sd.vec.genus[i]
    }
-data.frame.TRY <- data.frame(Latin_name=rownames(extract.species.try.2 ),extract.species.try.2)
+data.frame.TRY <- data.frame(sp=sp,Latin_name=sp.syno.table[["Latin_name_syn"]],extract.species.try.2)
 return(data.frame.TRY)
 }
diff --git a/R/format.function.R b/R/format.function.R
index f5e42e40350dc60b29e4429cc0689dc3c369e50e..13eceb077b3bdb1476820eef051fb5b2a1a4e988 100644
--- a/R/format.function.R
+++ b/R/format.function.R
@@ -212,8 +212,8 @@ setkeyv(data,"obs.id")
 if(sum(!data.BA.sp[["obs.id"]] == data[["obs.id"]]) >0) stop("competition index not in the same order than data")
 #####
 ## TODO ADD TRY DATA OR TRAITS IF NEEDED
-sp.extract <- species.lookup[species.lookup[["sp"]] %in% unique(data[["sp"]]),c("sp","Latin_name")]
-data.traits <- fun.extract.format.sp.traits.TRY(sp=sp.extract[["Latin_name"]],sp.syno.table=NA,data.TRY)
+sp.extract <- species.lookup[species.lookup[["sp"]] %in% unique(data[["sp"]]),]
+data.traits <- fun.extract.format.sp.traits.TRY(sp=sp.extract[["sp"]],sp.syno.table=sp.extract,data.TRY)
 ## save everything as a list
 list.temp <- list(data.tree=data,data.BA.SP=data.BA.sp,data.traits=data.traits)
 save(list.temp,file=paste("./data/process/list",name.country,ecoregion,"Rdata",sep="."))
diff --git a/merge.data.US.R b/merge.data.US.R
index 4b52e5a5077790ecb72d8620a2f454303263070c..2f2fa6e6edde92103a9f018e3804ae8c0f029773 100644
--- a/merge.data.US.R
+++ b/merge.data.US.R
@@ -14,6 +14,8 @@ species.clean <- read.csv("./data/species.list/REF_SPECIES.CSV",stringsAsFactors
 ## select column to keep
 species.clean <- subset(species.clean,select=c("SPCD","GENUS","SPECIES","VARIETY","SUBSPECIES","SPECIES_SYMBOL"))
 species.clean$Latin_name <- paste(species.clean[["GENUS"]],species.clean[["SPECIES"]],sep=" ")
+species.clean$Latin_name_syn<- paste(species.clean[["GENUS"]],species.clean[["SPECIES"]],sep=" ")
+
 names(species.clean)[1] <- "sp"
 species.clean[["sp"]] <- paste("sp",species.clean[["sp"]],sep=".")
 
@@ -101,5 +103,5 @@ ecoregion.unique <- unique(data.tree[["ecocode"]])
 
 
 #### lapply function
-lapply(ecoregion.unique,FUN=fun.data.per.ecoregion,data.tot=data.tree,plot.name='subplot',weight.full.plot=NA,name.country="US",data.TRY=TRY.DATA.FORMATED,species.lookup=species.clean)
-
+system.time(lapply(ecoregion.unique[1],FUN=fun.data.per.ecoregion,data.tot=data.tree,plot.name='subplot',weight.full.plot=NA,name.country="US",data.TRY=TRY.DATA.FORMATED,species.lookup=species.clean)
+)