diff --git a/Makefile b/Makefile
index cdcde23f6abaf0a08376a0eb805634ba6153f7ee..5dc566ddbf9116ca4ff65060f411ff7f262db9f2 100644
--- a/Makefile
+++ b/Makefile
@@ -1,9 +1,117 @@
-all: output/list.US.DR.DO.Rdata
+D1 := data/raw
+D2 := output/formatted
 
-output/list.US.DR.DO.Rdata: 
-	Rscript merge.data.US.R
+all: TRY Canada France NVS Spain Sweden Swiss US BCI
+  # BCI Fushan NSW Paracou
 
-clean:
-	rm -f output/*
+TRY: $(D2)/TRY/data.TRY.std.rds
+
+$(D2)/TRY/data.TRY.std.rds:  
+	Rscript R/format.data/TRY.R
+	
+BCI: $(D2)/BCI/traits.csv
+
+$(D2)/BCI/traits.csv: R/find.trait/BCI.R $(D2)/BCI/tree.csv $(D2)/TRY/data.TRY.std.rds
+	Rscript $<
+
+$(D2)/BCI/tree.csv: R/format.data/BCI.R $(shell find $(D1)/BCI -type f)
+	Rscript $<
+
+Canada: $(D2)/Canada/traits.csv
+
+$(D2)/Canada/traits.csv: R/find.trait/Canada.R $(D2)/Canada/tree.csv $(D2)/TRY/data.TRY.std.rds
+	Rscript $<
+
+$(D2)/Canada/tree.csv: R/format.data/Canada.R $(shell find $(D1)/Canada -type f)
+	Rscript $<
+
+France: $(D2)/France/traits.csv
+
+$(D2)/France/traits.csv: R/find.trait/France.R $(D2)/France/tree.csv $(D2)/TRY/data.TRY.std.rds
+	Rscript $<
+
+$(D2)/France/tree.csv: R/format.data/France.R $(shell find $(D1)/France -type f)
+	Rscript $<
+
+Fushan: $(D2)/Fushan/traits.csv
+
+$(D2)/Fushan/traits.csv: R/find.trait/Fushan.R $(D2)/Fushan/tree.csv $(D2)/TRY/data.TRY.std.rds
+	Rscript $<
+
+$(D2)/Fushan/tree.csv: R/format.data/Fushan.R $(shell find $(D1)/Fushan -type f)
+	Rscript $<
+
+NSW: $(D2)/NSW/traits.csv
+
+$(D2)/NSW/traits.csv: R/find.trait/NSW.R $(D2)/NSW/tree.csv $(D2)/TRY/data.TRY.std.rds
+	Rscript $<
+
+$(D2)/NSW/tree.csv: R/format.data/NSW.R $(shell find $(D1)/NSW -type f)
+	Rscript $<
+
+NVS: $(D2)/NVS/traits.csv
+
+$(D2)/NVS/traits.csv: R/find.trait/NVS.R $(D2)/NVS/tree.csv $(D2)/TRY/data.TRY.std.rds
+	Rscript $<
+
+$(D2)/NVS/tree.csv: R/format.data/NVS.R $(shell find $(D1)/NVS -type f)
+	Rscript $<
+
+Paracou: $(D2)/Paracou/traits.csv
+
+$(D2)/Paracou/traits.csv: R/find.trait/Paracou.R $(D2)/Paracou/tree.csv $(D2)/TRY/data.TRY.std.rds
+	Rscript $<
+
+$(D2)/Paracou/tree.csv: R/format.data/Paracou.R $(shell find $(D1)/Paracou -type f)
+	Rscript $<
+
+Spain: $(D2)/Spain/traits.csv
+
+$(D2)/Spain/traits.csv: R/find.trait/Spain.R $(D2)/Spain/tree.csv $(D2)/TRY/data.TRY.std.rds
+	Rscript $<
+
+$(D2)/Spain/tree.csv: R/format.data/Spain.R $(shell find $(D1)/Spain -type f)
+	Rscript $<
+
+Sweden: $(D2)/Sweden/traits.csv
+
+$(D2)/Sweden/traits.csv: R/find.trait/Sweden.R $(D2)/Sweden/tree.csv $(D2)/TRY/data.TRY.std.rds
+	Rscript $<
+
+$(D2)/Sweden/tree.csv: R/format.data/Sweden.R $(shell find $(D1)/Sweden -type f)
+	Rscript $<
+
+Swiss: $(D2)/Swiss/traits.csv
+
+$(D2)/Swiss/traits.csv: R/find.trait/Swiss.R $(D2)/Swiss/tree.csv $(D2)/TRY/data.TRY.std.rds
+	Rscript $<
+
+$(D2)/Swiss/tree.csv: R/format.data/Swiss.R $(shell find $(D1)/Swiss -type f)
+	Rscript $<
+
+US: $(D2)/US/traits.csv
+
+$(D2)/US/traits.csv: R/find.trait/US.R $(D2)/US/tree.csv $(D2)/TRY/data.TRY.std.rds
+	Rscript $<
+
+$(D2)/US/tree.csv: R/format.data/US.R $(shell find $(D1)/US -type f) 
+	Rscript $<
+
+
+
+# This susbtitution rule should work as rule, but not, why not?
+# docs/output/formatted/%/tree.csv: $(D1)/%/* %.R
+# 	Rscript %.R  
+
+# Is based on this which does work
+# %-tree.csv: %/* %/*/* %.R
+#         Rscript $*.R
+
+# code to generate makefile contents
+# s = dir("data/metadata/sites")
+# cat((sprintf("%s: output/formatted/%s/traits.csv\n
+# output/formatted/%s/traits.csv: output/formatted/%s/tree.csv R/find.trait/%s.R
+# \tRscript R/find.trait/%s.R\n
+# output/formatted/%s/tree.csv: $(shell find data/raw/%s -type f) %s.R
+# \tRscript %s.R\n\n",s,s,s,s,s,s,s,s,s,s,s)), file="temp.txt")
 
-.PHONY: all clean
diff --git a/R/find.trait/BCI.R b/R/find.trait/BCI.R
index 7daf8cf9128ab3f7a760f49ec9fa571a9d60ec4e..948d2f0c3365aed38e0ecc04466c2a48a67b9fa7 100644
--- a/R/find.trait/BCI.R
+++ b/R/find.trait/BCI.R
@@ -1,10 +1,10 @@
 #!/usr/bin/env Rscript
 
 ##### FORMAT TRAIT FOR Canada
-source("../find.trait/trait.fun.R")
+source("R/find.trait/trait.fun.R")
 
 ### read species names
-data.tree <- read.csv("../../output/formatted/BCI/tree.csv", stringsAsFactors = FALSE)
+data.tree <- read.csv("output/formatted/BCI/tree.csv", stringsAsFactors = FALSE)
 species.clean <- data.frame(sp=data.tree[!duplicated(data.tree[["sp"]]),"sp"],
                              Latin_name=data.tree[!duplicated(data.tree[["sp"]]),"sp.name"],
                              Latin_name_syn=data.tree[!duplicated(data.tree[["sp"]]),"sp.name"],
@@ -13,9 +13,9 @@ species.clean <- data.frame(sp=data.tree[!duplicated(data.tree[["sp"]]),"sp"],
 
 
 ###################################### MASSAGE TRAIT DATA Use HEIGHT_AVG, LMALAM_AVD, SEED_DRY
-## data.trait.new <- read.table("../../data/raw/BCI/Kunstler.BCI.traits.txt", stringsAsFactors = FALSE, 
+## data.trait.new <- read.table("data/raw/BCI/Kunstler.BCI.traits.txt", stringsAsFactors = FALSE, 
 ##     header = T) #### NEW DATA BASE SENT PER JOE NEED RESTRUCTURE OF THE CODE
-data.trait <- read.csv("../../data/raw/BCI/BCITRAITS_20101220.csv", stringsAsFactors = FALSE, 
+data.trait <- read.csv("data/raw/BCI/BCITRAITS_20101220.csv", stringsAsFactors = FALSE, 
     header = T)
 
 data.trait$Latin <- apply(data.trait[, 1:2], 1, paste, collapse = " ")
@@ -53,7 +53,7 @@ data.traits <- fun.extract.format.sp.traits.NOT.TRY(sp=species.clean$Latin_name,
 data.traits$sp <- species.clean$sp
 
 ### TODO ADD GENUS MEAN FOR HEIGHT IF SPECIES IS MISSING
-write.csv(data.traits,file="../../output/formatted/BCI/traits.csv",row.names = FALSE)
+write.csv(data.traits,file="output/formatted/BCI/traits.csv",row.names = FALSE)
 
 
 
diff --git a/R/find.trait/Canada.R b/R/find.trait/Canada.R
index b8505d44773f2d1586a9be2b07d6bb1bc06186ef..b6db9e742935abd7ca32760027287a0307d22a63 100644
--- a/R/find.trait/Canada.R
+++ b/R/find.trait/Canada.R
@@ -1,10 +1,10 @@
 #!/usr/bin/env Rscript
 
 ##### FORMAT TRAIT FOR Canada
-source("../find.trait/trait.fun.R")
+source("R/find.trait/trait.fun.R")
 
 ### read species names
-data.tree <- read.csv("../../output/formatted/Canada/tree.csv", stringsAsFactors = FALSE)
+data.tree <- read.csv("output/formatted/Canada/tree.csv", stringsAsFactors = FALSE)
 species.clean <- data.frame(sp=data.tree[!duplicated(data.tree[["sp"]]),"sp"],
                              Latin_name=data.tree[!duplicated(data.tree[["sp"]]),"sp.name"],
                              Latin_name_syn=data.tree[!duplicated(data.tree[["sp"]]),"sp.name"],
@@ -14,15 +14,15 @@ species.clean <- data.frame(sp=data.tree[!duplicated(data.tree[["sp"]]),"sp"],
 species.clean <- subset(species.clean,subset=!is.na(species.clean$Latin_name))
 
 ## read in data
-data.TRY.std <- readRDS("../../output/formatted/TRY/data.TRY.std.rds")
+data.TRY.std <- readRDS("output/formatted/TRY/data.TRY.std.rds")
 ## read us max height
-max.height <- read.csv(file="../../output/formatted/US/max.height.csv", stringsAsFactors = FALSE)
+max.height <- read.csv(file="output/formatted/US/max.height.csv", stringsAsFactors = FALSE)
 max.height$sp <- paste("sp",max.height$sp,sep=".")
 
 data.traits <- fun.extract.format.sp.traits.TRY(sp=species.clean[["sp"]],sp.syno.table=species.clean,data=data.TRY.std)
 
 data.traits <- merge(data.traits,subset(max.height,select=c("sp","Max.height.mean","Max.height.sd")),by="sp",all.x=TRUE,all.y=FALSE)
 ### TODO ADD GENUS MEAN FOR HEIGHT IF SPECIES IS MISSING
-write.csv(data.traits,file="../../output/formatted/Canada/traits.csv",row.names = FALSE)
+write.csv(data.traits,file="output/formatted/Canada/traits.csv",row.names = FALSE)
 
 #Testing GIT!
diff --git a/R/find.trait/France.R b/R/find.trait/France.R
index da385a848373d91bc7be978b8bf2191bdc111858..5a44a96ce2480c2b7b92bfcd41d53c975758d4fa 100644
--- a/R/find.trait/France.R
+++ b/R/find.trait/France.R
@@ -1,11 +1,11 @@
 #!/usr/bin/env Rscript
 
 ##### FORMAT TRAIT FOR France
-source("../find.trait/trait.fun.R")
-source("../format.data/format.fun.R")
+source("R/find.trait/trait.fun.R")
+source("R/format.data/format.fun.R")
 
 ### read species names
-species.clean <- (read.csv("../../data/raw/France/species.csv", stringsAsFactors = FALSE))
+species.clean <- (read.csv("data/raw/France/species.csv", stringsAsFactors = FALSE))
 species.clean$Latin_name <- (gsub("_", " ", species.clean$Latin_name))
 species.clean$Latin_name_syn<- (gsub("_", " ", species.clean$Latin_name_syn))
 species.clean <-  subset(species.clean,subset=!is.na(species.clean$Latin_name_syn))
@@ -13,12 +13,12 @@ species.clean <-  subset(species.clean,subset=!duplicated(species.clean$Latin_na
 species.clean$sp <- species.clean$code
 species.clean$code <- NULL
 ## read in data
-data.TRY.std <- readRDS("../../output/formatted/TRY/data.TRY.std.rds")
-max.height <- read.csv(file="../../output/formatted/France/max.height.csv", stringsAsFactors = FALSE)
+data.TRY.std <- readRDS("output/formatted/TRY/data.TRY.std.rds")
+max.height <- read.csv(file="output/formatted/France/max.height.csv", stringsAsFactors = FALSE)
 
 ### extract and add height
 data.traits <- fun.extract.format.sp.traits.TRY(sp=species.clean[["sp"]],sp.syno.table=species.clean,data=data.TRY.std)
 data.traits <- merge(data.traits,subset(max.height,select=c("sp","Max.height.mean","Max.height.sd")),by="sp",all.x=TRUE,all.y=FALSE)
 ### TODO ADD GENUS MEAN FOR HEIGHT IF SPECIES IS MISSING
-write.csv(data.traits,file="../../output/formatted/France/traits.csv",row.names = FALSE)
+write.csv(data.traits,file="output/formatted/France/traits.csv",row.names = FALSE)
 
diff --git a/R/find.trait/Fushan.R b/R/find.trait/Fushan.R
index d8866205d9c6438c720d45a451bdee2c48710c16..5a1d7b8f461841076083fb3c1e3f1b57dd089cdd 100644
--- a/R/find.trait/Fushan.R
+++ b/R/find.trait/Fushan.R
@@ -1,10 +1,10 @@
 #!/usr/bin/env Rscript
 
 ##### FORMAT TRAIT FOR FUSHAN
-source("../find.trait/trait.fun.R")
+source("R/find.trait/trait.fun.R")
 
 ### read species names
-data.tree <- read.csv("../../output/formatted/Fushan/tree.csv", stringsAsFactors = FALSE)
+data.tree <- read.csv("output/formatted/Fushan/tree.csv", stringsAsFactors = FALSE)
 species.clean <- data.frame(sp=data.tree[!duplicated(data.tree[["sp"]]),"sp"],
                              Latin_name=data.tree[!duplicated(data.tree[["sp"]]),"sp.name"],
                              Latin_name_syn=data.tree[!duplicated(data.tree[["sp"]]),"sp.name"],
@@ -13,7 +13,7 @@ species.clean <- data.frame(sp=data.tree[!duplicated(data.tree[["sp"]]),"sp"],
 
 ################ MASSAGE TRAIT DATA Obtain maximum height per species from data.trait no sd
 ################ available as we have only one observation for species
-data.trait <- read.table("../../data/raw/Fushan/fs_trait_Kunstler.txt", header = T, 
+data.trait <- read.table("data/raw/Fushan/fs_trait_Kunstler.txt", header = T, 
     sep = "\t")
 colnames(data.trait) <- c("sp", "sla", "wd", "seedmassmg", "meanN", "maxheightm")
 data.trait <- merge(data.trait, data.frame(sp = species.clean$sp, Latin_name= species.clean$Latin_name, 
@@ -38,7 +38,7 @@ rm(data.trait)
 data.traits <- fun.extract.format.sp.traits.NOT.TRY(sp=species.clean$sp, Latin_name=species.clean$sp, data=data.TRAITS.std,name.match.traits="sp")
 
 ### TODO ADD GENUS MEAN FOR HEIGHT IF SPECIES IS MISSING
-write.csv(data.traits,file="../../output/formatted/Fushan/traits.csv",row.names = FALSE)
+write.csv(data.traits,file="output/formatted/Fushan/traits.csv",row.names = FALSE)
 
 
 
diff --git a/R/find.trait/NVS.R b/R/find.trait/NVS.R
index c61c45c21d835e53bf56ac9fe656aee688c84ffe..7336f4bfd0049d42452268b3a5fb443d1e292a65 100644
--- a/R/find.trait/NVS.R
+++ b/R/find.trait/NVS.R
@@ -1,10 +1,10 @@
 #!/usr/bin/env Rscript
 
 ##### FORMAT TRAIT FOR NVS
-source("../find.trait/trait.fun.R")
+source("R/find.trait/trait.fun.R")
 
 ### read species names
-data.tree <- read.csv("../../output/formatted/NVS/tree.csv", stringsAsFactors = FALSE)
+data.tree <- read.csv("output/formatted/NVS/tree.csv", stringsAsFactors = FALSE)
 species.clean <- data.frame(sp=data.tree[!duplicated(data.tree[["sp"]]),"sp"],
                              Latin_name=data.tree[!duplicated(data.tree[["sp"]]),"sp.name"],
                              Latin_name_syn=data.tree[!duplicated(data.tree[["sp"]]),"sp.name"],
@@ -15,7 +15,7 @@ species.clean <- subset(species.clean,subset=!is.na(species.clean$Latin_name))
 
 ## read in local trait data
 
-data.trait <- read.csv("../../data/raw/NVS/nz_traits_130801.csv", , header = TRUE, stringsAsFactors = FALSE)
+data.trait <- read.csv("data/raw/NVS/nz_traits_130801.csv", , header = TRUE, stringsAsFactors = FALSE)
 data.trait <- data.trait[, -1]
 colnames(data.trait)[1] <- "sp"
 data.trait$Latin_name <- data.trait$sp
@@ -34,4 +34,4 @@ data.trait$Max.height.sd <- NA
 data.traits <- fun.extract.format.sp.traits.NOT.TRY(sp=species.clean$sp, Latin_name=species.clean$Latin_name, data=data.trait,name.match.traits="Latin_name")
 
 ### TODO ADD GENUS MEAN FOR HEIGHT IF SPECIES IS MISSING
-write.csv(data.traits,file="../../output/formatted/NVS/traits.csv",row.names = FALSE)
+write.csv(data.traits,file="output/formatted/NVS/traits.csv",row.names = FALSE)
diff --git a/R/find.trait/Spain.R b/R/find.trait/Spain.R
index 5d00c1952534aaf27cb111de1389adc83d1fee54..94b51a7b5e03b95978c6fb43b2769d3b717a0f9c 100644
--- a/R/find.trait/Spain.R
+++ b/R/find.trait/Spain.R
@@ -1,10 +1,10 @@
 #!/usr/bin/env Rscript
 
 ##### FORMAT TRAIT FOR SPAIN
-source("../find.trait/trait.fun.R")
+source("R/find.trait/trait.fun.R")
 
 ### read species names
-data.tree <- read.csv("../../output/formatted/Spain/tree.csv", stringsAsFactors = FALSE)
+data.tree <- read.csv("output/formatted/Spain/tree.csv", stringsAsFactors = FALSE)
 species.clean <- data.frame(sp=data.tree[!duplicated(data.tree[["sp"]]),"sp"],
                              Latin_name=data.tree[!duplicated(data.tree[["sp"]]),"sp.name"],
                              Latin_name_syn=data.tree[!duplicated(data.tree[["sp"]]),"sp.name"],
@@ -13,8 +13,8 @@ species.clean <- data.frame(sp=data.tree[!duplicated(data.tree[["sp"]]),"sp"],
 ## select column to keep
 
 ## read in data
-data.TRY.std <- readRDS("../../output/formatted/TRY/data.TRY.std.rds")
-max.height <- read.csv(file="../../output/formatted/Spain/max.height.csv", stringsAsFactors = FALSE)
+data.TRY.std <- readRDS("output/formatted/TRY/data.TRY.std.rds")
+max.height <- read.csv(file="output/formatted/Spain/max.height.csv", stringsAsFactors = FALSE)
 max.height$sp <- paste("sp",max.height$sp,sep=".")
 
 ## extract traits and height
@@ -22,5 +22,5 @@ data.traits <- fun.extract.format.sp.traits.TRY(sp=species.clean[["sp"]],sp.syno
 data.traits <- merge(data.traits,subset(max.height,select=c("sp","Max.height.mean","Max.height.sd")),by="sp",all.x=TRUE,all.y=FALSE)
 
 ### TODO ADD GENUS MEAN FOR HEIGHT IF SPECIES IS MISSING
-write.csv(data.traits,file="../../output/formatted/Spain/traits.csv",row.names = FALSE)
+write.csv(data.traits,file="output/formatted/Spain/traits.csv",row.names = FALSE)
 
diff --git a/R/find.trait/Sweden.R b/R/find.trait/Sweden.R
index eab0e63cca2416e8841735f3b5cc8169ed178c0c..aa4996375a3a32e8bd3aa0d29373f7857a8f05d1 100644
--- a/R/find.trait/Sweden.R
+++ b/R/find.trait/Sweden.R
@@ -1,10 +1,10 @@
 #!/usr/bin/env Rscript
 
 ##### FORMAT TRAIT FOR Sweden
-source("../find.trait/trait.fun.R")
+source("R/find.trait/trait.fun.R")
 
 ### read species names
-data.tree <- read.csv("../../output/formatted/Sweden/tree.csv", stringsAsFactors = FALSE)
+data.tree <- read.csv("output/formatted/Sweden/tree.csv", stringsAsFactors = FALSE)
 species.clean <- data.frame(sp=data.tree[!duplicated(data.tree[["sp"]]),"sp"],
                              Latin_name=data.tree[!duplicated(data.tree[["sp"]]),"sp.name"],
                              Latin_name_syn=data.tree[!duplicated(data.tree[["sp"]]),"sp.name"],
@@ -15,11 +15,11 @@ species.clean <- subset(species.clean,subset=!is.na(species.clean$Latin_name))
 ## select column to keep
 
 ## read in data
-data.TRY.std <- readRDS("../../output/formatted/TRY/data.TRY.std.rds")
+data.TRY.std <- readRDS("output/formatted/TRY/data.TRY.std.rds")
 ## read France max height
-max.height <- read.csv(file="../../output/formatted/France/max.height.csv", stringsAsFactors = FALSE)
+max.height <- read.csv(file="output/formatted/France/max.height.csv", stringsAsFactors = FALSE)
 ## load latin name France
-data.tree <- read.csv("../../output/formatted/France/tree.csv", stringsAsFactors = FALSE)
+data.tree <- read.csv("output/formatted/France/tree.csv", stringsAsFactors = FALSE)
 species.clean2 <- data.frame(sp=data.tree[!duplicated(data.tree[["sp"]]),"sp"],
                              Latin_name=data.tree[!duplicated(data.tree[["sp"]]),"sp.name"],
                              Latin_name_syn=data.tree[!duplicated(data.tree[["sp"]]),"sp.name"],
@@ -32,5 +32,5 @@ data.traits <- fun.extract.format.sp.traits.TRY(sp=species.clean[["sp"]],sp.syno
 data.traits <- merge(data.traits,subset(max.height,select=c("Latin_name","Max.height.mean","Max.height.sd")),by="Latin_name",all.x=TRUE,all.y=FALSE)
 
 ### TODO ADD GENUS MEAN FOR HEIGHT IF SPECIES IS MISSING
-write.csv(data.traits,file="../../output/formatted/Sweden/traits.csv",row.names = FALSE)
+write.csv(data.traits,file="output/formatted/Sweden/traits.csv",row.names = FALSE)
 
diff --git a/R/find.trait/Swiss.R b/R/find.trait/Swiss.R
index a68b7fbf6a12a75f2f0f5110f3d71789bd3c4c92..2d5edb1eb45a6c7aa2e85f82fcbf583fc26c4780 100644
--- a/R/find.trait/Swiss.R
+++ b/R/find.trait/Swiss.R
@@ -1,10 +1,10 @@
 #!/usr/bin/env Rscript
 
 ##### FORMAT TRAIT FOR Swiss
-source("../find.trait/trait.fun.R")
+source("R/find.trait/trait.fun.R")
 
 ### read species names
-data.tree <- read.csv("../../output/formatted/Swiss/tree.csv", stringsAsFactors = FALSE)
+data.tree <- read.csv("output/formatted/Swiss/tree.csv", stringsAsFactors = FALSE)
 species.clean <- data.frame(sp=data.tree[!duplicated(data.tree[["sp"]]),"sp"],
                              Latin_name=data.tree[!duplicated(data.tree[["sp"]]),"sp.name"],
                              Latin_name_syn=data.tree[!duplicated(data.tree[["sp"]]),"sp.name"],
@@ -13,8 +13,8 @@ species.clean <- data.frame(sp=data.tree[!duplicated(data.tree[["sp"]]),"sp"],
 ## select column to keep
 
 ## read in data
-data.TRY.std <- readRDS("../../output/formatted/TRY/data.TRY.std.rds")
-max.height <- read.csv(file="../../output/formatted/Swiss/max.height.csv", stringsAsFactors = FALSE)
+data.TRY.std <- readRDS("output/formatted/TRY/data.TRY.std.rds")
+max.height <- read.csv(file="output/formatted/Swiss/max.height.csv", stringsAsFactors = FALSE)
 max.height$sp <- paste("sp",max.height$code,sep=".")
 
 ## extract traits and height
@@ -22,5 +22,5 @@ data.traits <- fun.extract.format.sp.traits.TRY(sp=species.clean[["sp"]],sp.syno
 data.traits <- merge(data.traits,subset(max.height,select=c("sp","Max.height.mean","Max.height.sd")),by="sp",all.x=TRUE,all.y=FALSE)
 
 ### TODO ADD GENUS MEAN FOR HEIGHT IF SPECIES IS MISSING
-write.csv(data.traits,file="../../output/formatted/Swiss/traits.csv",row.names = FALSE)
+write.csv(data.traits,file="output/formatted/Swiss/traits.csv",row.names = FALSE)
 
diff --git a/R/find.trait/US.R b/R/find.trait/US.R
index 7fa492d848dd8321aace33693a24674d37cda1e0..c493c5caf6e1bd1361ec8ea1a14b34bd6e80643a 100644
--- a/R/find.trait/US.R
+++ b/R/find.trait/US.R
@@ -1,10 +1,10 @@
 #!/usr/bin/env Rscript
 
 ##### FORMAT TRAIT FOR US
-source("../find.trait/trait.fun.R")
+source("R/find.trait/trait.fun.R")
 
 ### read species names
-data.tree <- read.csv("../../output/formatted/US/tree.csv", stringsAsFactors = FALSE)
+data.tree <- read.csv("output/formatted/US/tree.csv", stringsAsFactors = FALSE)
 species.clean <- data.frame(sp=data.tree[!duplicated(data.tree[["sp"]]),"sp"],
                              Latin_name=data.tree[!duplicated(data.tree[["sp"]]),"sp.name"],
                              Latin_name_syn=data.tree[!duplicated(data.tree[["sp"]]),"sp.name"],
@@ -12,13 +12,13 @@ species.clean <- data.frame(sp=data.tree[!duplicated(data.tree[["sp"]]),"sp"],
 
 
 ## read in data
-data.TRY.std <- readRDS("../../output/formatted/TRY/data.TRY.std.rds")
-max.height <- read.csv(file="../../output/formatted/US/max.height.csv", stringsAsFactors = FALSE)
+data.TRY.std <- readRDS("output/formatted/TRY/data.TRY.std.rds")
+max.height <- read.csv(file="output/formatted/US/max.height.csv", stringsAsFactors = FALSE)
 max.height$sp <- paste("sp",max.height$sp,sep=".")
 
 data.traits <- fun.extract.format.sp.traits.TRY(sp=species.clean[["sp"]],sp.syno.table=species.clean,data=data.TRY.std)
 
 data.traits <- merge(data.traits,subset(max.height,select=c("sp","Max.height.mean","Max.height.sd")),by="sp",all.x=TRUE,all.y=FALSE)
 ### TODO ADD GENUS MEAN FOR HEIGHT IF SPECIES IS MISSING
-write.csv(data.traits,file="../../output/formatted/US/traits.csv",row.names = FALSE)
+write.csv(data.traits,file="output/formatted/US/traits.csv",row.names = FALSE)
 
diff --git a/R/find.trait/trait.fun.R b/R/find.trait/trait.fun.R
index d19e5446f454ac1cbe2fee83dd981b84125f448a..24434004b32e7a41b36aa688f935173276300bd1 100644
--- a/R/find.trait/trait.fun.R
+++ b/R/find.trait/trait.fun.R
@@ -3,7 +3,7 @@
 ### just testing this out! ##############
 
 ### install all unstallled packages
-source("../packages.R")
+source("R/packages.R")
 check_packages(c("MASS", "doParallel","mvoutlier","plyr"))
 
 ## outlier detection based on Kattage et al 2011
diff --git a/R/format.data/BCI.R b/R/format.data/BCI.R
index 5b2aa957b3272febb10353dd915d735aa4c77bb0..a64b9a070424597dee0be0d8428c116ea749b686 100644
--- a/R/format.data/BCI.R
+++ b/R/format.data/BCI.R
@@ -3,19 +3,19 @@
 
 ### MERGE BCI DATA
 rm(list = ls())
-source("format.fun.R")
-dir.create("../../output/formatted/BCI", recursive=TRUE,showWarnings=FALSE)
+source("R/format.data/format.fun.R")
+dir.create("output/formatted/BCI", recursive=TRUE,showWarnings=FALSE)
 library(reshape,quietly=TRUE)
 ############# READ DATA read individuals tree data Requires careful formatting of 7 census
 ############ datasets The raw data is such that, once a tree dies in census X, then it no
 ########## longer exists in census X+1, X+2 etc...
-data.bci1 <- read.table("../../data/raw/BCI/census1/PlotsDataReport.txt", header = TRUE, 
+data.bci1 <- read.table("data/raw/BCI/census1/PlotsDataReport.txt", header = TRUE, 
     stringsAsFactors = FALSE, sep = "\t")
 data.bci1$Date1 <- data.bci1$Date; data.bci1$Date <- NULL
 data.bci1$DBH1 <- data.bci1$DBH; data.bci1$DBH <- NULL
 big.bci <- NULL
 for (k in 2:7) {
-    new.directory <- paste("../../data/raw/BCI/census", k, "/PlotsDataReport.txt", 
+    new.directory <- paste("data/raw/BCI/census", k, "/PlotsDataReport.txt", 
         sep = "")
     data.bci2 <- read.table(new.directory, header = TRUE, stringsAsFactors = FALSE, 
         sep = "\t"); 
@@ -41,7 +41,7 @@ big.bci <- big.bci[order(big.bci$TreeID), ]
 data.bci <- big.bci
 rm(big.bci)
 ### read species names
-species.clean <- read.table("../../data/raw/BCI/TaxonomyDataReport.txt", stringsAsFactors = FALSE, 
+species.clean <- read.table("data/raw/BCI/TaxonomyDataReport.txt", stringsAsFactors = FALSE, 
     header = T, sep = "\t")
 species.clean$Latin_name <- paste(species.clean[["Genus"]], 
     species.clean[["species"]],sep=" ")
@@ -78,4 +78,4 @@ vec.basic.var <- c("obs.id","tree.id", "sp", "sp.name","plot", "subplot", "D", "
 
 data.tree <- subset(data.bci, select = c(vec.basic.var))
 
-write.csv(data.tree,file="../../output/formatted/BCI/tree.csv",row.names = FALSE)
+write.csv(data.tree,file="output/formatted/BCI/tree.csv",row.names = FALSE)
diff --git a/R/format.data/Canada.R b/R/format.data/Canada.R
index 803b29348d208a7432023412e95a96a88a04fdc2..cdc883223ac751727748cba5b5c07eded7dd2507 100644
--- a/R/format.data/Canada.R
+++ b/R/format.data/Canada.R
@@ -2,19 +2,19 @@
 
 ### MERGE canada DATA
 rm(list = ls())
-source("format.fun.R")
+source("R/format.data/format.fun.R")
 library(reshape)
-dir.create("../../output/formatted/Canada", recursive=TRUE,showWarnings=FALSE)
+dir.create("output/formatted/Canada", recursive=TRUE,showWarnings=FALSE)
 
 
 ######################### READ DATA read individuals tree data
-data.canada <- read.csv("../../data/raw/Canada/Canada_Data2George_20130910.csv", 
+data.canada <- read.csv("data/raw/Canada/Canada_Data2George_20130910.csv", 
     header = TRUE, stringsAsFactors = FALSE)
 sum(is.na(data.canada$species))
 data.canada$sp = data.canada$species_FIACode
 data.canada$species_FIACode <- NULL
 ### read species names and merge with data.canada
-species.clean <- read.csv("../../data/raw/Canada/FIA_REF_SPECIES.csv", stringsAsFactors = FALSE)
+species.clean <- read.csv("data/raw/Canada/FIA_REF_SPECIES.csv", stringsAsFactors = FALSE)
 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=" ")
 data.canada <- merge(data.canada, data.frame(sp = species.clean$SPCD, Latin_name=species.clean[,"Latin_name"], stringsAsFactors = F), by = "sp", all.x = T)
@@ -42,7 +42,7 @@ data.canada$census <- rep(1,nrow(data.canada))
 data.canada$obs.id <- data.canada$tree.id
 data.canada$weights <- 1/(data.canada$SubPlotSize*10000) ### there is some strange small value in SubPlotSize 20 m^2 even for large tree NEED TO ASK Hongcheng ## REPLY BETTER TO DElETE THIS PLOTS HE DON T KNOW WHY SO SMALLL
 ###################### ECOREGION merge to have no ecoregion with low number of observation
-greco <- read.csv(file = "../../data/raw/Canada/EcoregionCodes.csv", header = T, 
+greco <- read.csv(file = "data/raw/Canada/EcoregionCodes.csv", header = T, 
     sep = "\t")
 data.canada$ecocode <- data.canada$Ecocode; data.canada$Ecocode <- NULL
 table(data.canada$ecocode)
@@ -77,5 +77,5 @@ vec.abio.var.names <- c("MAT", "MAP")
 vec.basic.var <- c("obs.id","tree.id", "sp", "sp.name","cluster","plot", "ecocode", "D", "G", "dead", 
     "year", "htot", "Lon", "Lat", "perc.dead","weights","census")
 data.tree <- subset(data.canada, select = c(vec.basic.var, vec.abio.var.names))
-write.csv(data.tree,file="../../output/formatted/Canada/tree.csv",row.names = FALSE)
+write.csv(data.tree,file="output/formatted/Canada/tree.csv",row.names = FALSE)
 
diff --git a/R/format.data/France.R b/R/format.data/France.R
index 2d7f834d5924b5419381697e529784273a669640..932f9fc704b1589fd5456bdbac82f9291ba465b8 100644
--- a/R/format.data/France.R
+++ b/R/format.data/France.R
@@ -1,15 +1,15 @@
 #!/usr/bin/env Rscript
 ############################################# MERGE FRENCH DATA
 rm(list = ls()); 
-source("format.fun.R")
+source("R/format.data/format.fun.R")
 library(reshape)
-dir.create("../../output/formatted/France", recursive=TRUE,showWarnings=FALSE)
+dir.create("output/formatted/France", recursive=TRUE,showWarnings=FALSE)
 
 
 ################################ READ DATA
-data.france <- read.csv("../../data/raw/France/dataIFN.FRANCE.csv", stringsAsFactors = FALSE)
+data.france <- read.csv("data/raw/France/dataIFN.FRANCE.csv", stringsAsFactors = FALSE)
 ### read IFN species names and clean
-species.clean <- fun.clean.species.tab(read.csv("../../data/raw/France/species.csv", stringsAsFactors = FALSE))
+species.clean <- fun.clean.species.tab(read.csv("data/raw/France/species.csv", stringsAsFactors = FALSE))
 
 ######## MASSAGE TRAIT DATA Compute maximum height per species plus sd from observed
 ######## height to add variables to the traits data base Because we have two heights,
@@ -20,7 +20,7 @@ res.quant.boot <- t(sapply(levels(factor(data.france[["espar"]])), FUN = f.quant
 data.max.height <- data.frame(sp = rownames(res.quant.boot), Max.height.mean = res.quant.boot[, 
     1], Max.height.sd = res.quant.boot[, 2], Max.height.nobs = res.quant.boot[, 3])
 rm(res.quant.boot)
-write.csv(data.max.height,file='../../output/formatted/France/max.height.csv')
+write.csv(data.max.height,file='output/formatted/France/max.height.csv')
 rm(data.max.height)
 
 ########################################## FORMAT INDIVIDUAL TREE DATA change unit and names of variables to be the same
@@ -80,4 +80,4 @@ vec.abio.var.names <- c("MAT", "SAP", "sgdd", "WB.s", "WB.y", "WS.s", "WS.y")
 vec.basic.var <- c("obs.id","tree.id", "sp","sp.name", "cluster", "plot", "ecocode", "D", "G", "dead", 
     "year", "htot", "Lon", "Lat", "perc.dead", "weights","census")
 data.tree <- subset(data.france, select = c(vec.basic.var, vec.abio.var.names))
-write.csv(data.tree,file="../../output/formatted/France/tree.csv",row.names = FALSE)
+write.csv(data.tree,file="output/formatted/France/tree.csv",row.names = FALSE)
diff --git a/R/format.data/Fushan.R b/R/format.data/Fushan.R
index cc35b689143a57d345bf6282da77f3c4aa40ea1a..b2cd1ac7e0f4879359ee5cc8cf7c7d9dc8546718 100644
--- a/R/format.data/Fushan.R
+++ b/R/format.data/Fushan.R
@@ -3,15 +3,15 @@
 ### MERGE Fushan DATA
 rm(list = ls())
 library(reshape, quietly=TRUE)
-source("format.fun.R")
-dir.create("../../output/formatted/Fushan", recursive=TRUE,showWarnings=FALSE)
+source("R/format.data/format.fun.R")
+dir.create("output/formatted/Fushan", recursive=TRUE,showWarnings=FALSE)
 
 ######################### READ DATA read individuals tree data
-load("../../data/raw/Fushan/fushan.rdata")
+load("data/raw/Fushan/fushan.rdata")
 data.fushan <- data.frame(fushan)
 rm(fushan)
 ### read species names
-species.clean <- read.csv("../../data/raw/Fushan/Splist_Fushan_En.csv", stringsAsFactors = FALSE)
+species.clean <- read.csv("data/raw/Fushan/Splist_Fushan_En.csv", stringsAsFactors = FALSE)
 
 
 ########################################## FORMAT INDIVIDUAL TREE DATA
@@ -45,7 +45,7 @@ data.fushan <-  subset(data.fushan,subset=data.fushan$status1!="P")
 vec.basic.var <- c("obs.id","tree.id", "sp", "sp.name","plot", "subplot", "D", "G", "dead", 
     "year", "htot", "x", "y", "census")
 data.tree <- subset(data.fushan, select = c(vec.basic.var))
-write.csv(data.tree,file="../../output/formatted/Fushan/tree.csv",row.names = FALSE)
+write.csv(data.tree,file="output/formatted/Fushan/tree.csv",row.names = FALSE)
 
 
 
diff --git a/R/format.data/Makefile b/R/format.data/Makefile
deleted file mode 100644
index 487cc9ec96d61e0bc30c7c84f1abb0345ea2af5b..0000000000000000000000000000000000000000
--- a/R/format.data/Makefile
+++ /dev/null
@@ -1,118 +0,0 @@
-ROOT := ../..
-D1 := $(ROOT)/data/raw
-D2 := $(ROOT)/output/formatted
-
-all: TRY Canada France NVS Spain Sweden Swiss US 
-  # BCI Fushan NSW Paracou
-
-TRY: $(D2)/TRY/data.TRY.std.rds
-
-$(D2)/TRY/data.TRY.std.rds: TRY.R
-	Rscript TRY.R
-	
-BCI: $(D2)/BCI/traits.csv
-
-$(D2)/BCI/traits.csv: $(D2)/BCI/tree.csv ../find.trait/BCI.R $(D2)/TRY/data.TRY.std.rds
-	Rscript ../find.trait/BCI.R
-
-$(D2)/BCI/tree.csv: $(shell find $(D1)/BCI -type f) BCI.R
-	Rscript BCI.R
-
-Canada: $(D2)/Canada/traits.csv
-
-$(D2)/Canada/traits.csv: $(D2)/Canada/tree.csv ../find.trait/Canada.R $(D2)/TRY/data.TRY.std.rds
-	Rscript ../find.trait/Canada.R
-
-$(D2)/Canada/tree.csv: $(shell find $(D1)/Canada -type f) Canada.R
-	Rscript Canada.R
-
-France: $(D2)/France/traits.csv
-
-$(D2)/France/traits.csv: $(D2)/France/tree.csv ../find.trait/France.R $(D2)/TRY/data.TRY.std.rds
-	Rscript ../find.trait/France.R
-
-$(D2)/France/tree.csv: $(shell find $(D1)/France -type f) France.R
-	Rscript France.R
-
-Fushan: $(D2)/Fushan/traits.csv
-
-$(D2)/Fushan/traits.csv: $(D2)/Fushan/tree.csv ../find.trait/Fushan.R $(D2)/TRY/data.TRY.std.rds
-	Rscript ../find.trait/Fushan.R
-
-$(D2)/Fushan/tree.csv: $(shell find $(D1)/Fushan -type f) Fushan.R
-	Rscript Fushan.R
-
-NSW: $(D2)/NSW/traits.csv
-
-$(D2)/NSW/traits.csv: $(D2)/NSW/tree.csv ../find.trait/NSW.R $(D2)/TRY/data.TRY.std.rds
-	Rscript ../find.trait/NSW.R
-
-$(D2)/NSW/tree.csv: $(shell find $(D1)/NSW -type f) NSW.R
-	Rscript NSW.R
-
-NVS: $(D2)/NVS/traits.csv
-
-$(D2)/NVS/traits.csv: $(D2)/NVS/tree.csv ../find.trait/NVS.R $(D2)/TRY/data.TRY.std.rds
-	Rscript ../find.trait/NVS.R
-
-$(D2)/NVS/tree.csv: $(shell find $(D1)/NVS -type f) NVS.R
-	Rscript NVS.R
-
-Paracou: $(D2)/Paracou/traits.csv
-
-$(D2)/Paracou/traits.csv: $(D2)/Paracou/tree.csv ../find.trait/Paracou.R $(D2)/TRY/data.TRY.std.rds
-	Rscript ../find.trait/Paracou.R
-
-$(D2)/Paracou/tree.csv: $(shell find $(D1)/Paracou -type f) Paracou.R
-	Rscript Paracou.R
-
-Spain: $(D2)/Spain/traits.csv
-
-$(D2)/Spain/traits.csv: $(D2)/Spain/tree.csv ../find.trait/Spain.R $(D2)/TRY/data.TRY.std.rds
-	Rscript ../find.trait/Spain.R
-
-$(D2)/Spain/tree.csv: $(shell find $(D1)/Spain -type f) Spain.R
-	Rscript Spain.R
-
-Sweden: $(D2)/Sweden/traits.csv
-
-$(D2)/Sweden/traits.csv: $(D2)/Sweden/tree.csv ../find.trait/Sweden.R $(D2)/TRY/data.TRY.std.rds
-	Rscript ../find.trait/Sweden.R
-
-$(D2)/Sweden/tree.csv: $(shell find $(D1)/Sweden -type f) Sweden.R
-	Rscript Sweden.R
-
-Swiss: $(D2)/Swiss/traits.csv
-
-$(D2)/Swiss/traits.csv: $(D2)/Swiss/tree.csv ../find.trait/Swiss.R $(D2)/TRY/data.TRY.std.rds
-	Rscript ../find.trait/Swiss.R
-
-$(D2)/Swiss/tree.csv: $(shell find $(D1)/Swiss -type f) Swiss.R
-	Rscript Swiss.R
-
-US: $(D2)/US/traits.csv
-
-$(D2)/US/traits.csv: $(D2)/US/tree.csv ../find.trait/US.R $(D2)/TRY/data.TRY.std.rds
-	Rscript ../find.trait/US.R
-
-$(D2)/US/tree.csv: $(shell find $(D1)/US -type f) US.R
-	Rscript US.R
-
-
-
-# This susbtitution rule should work as rule, but not, why not?
-# $(ROOT)/output/formatted/%/tree.csv: $(D1)/%/* %.R
-# 	Rscript %.R  
-
-# Is based on this which does work
-# %-tree.csv: %/* %/*/* %.R
-#         Rscript $*.R
-
-# code to generate makefile contents
-# s = dir("../../data/metadata/sites")
-# cat((sprintf("%s: ../../output/formatted/%s/traits.csv\n
-# ../../output/formatted/%s/traits.csv: ../../output/formatted/%s/tree.csv ../find.trait/%s.R
-# \tRscript ../find.trait/%s.R\n
-# ../../output/formatted/%s/tree.csv: $(shell find ../../data/raw/%s -type f) %s.R
-# \tRscript %s.R\n\n",s,s,s,s,s,s,s,s,s,s,s)), file="temp.txt")
-
diff --git a/R/format.data/NSW.R b/R/format.data/NSW.R
index 088f2b5ef1a3a2e28f4fb9e83f98d46e6a62da7b..02d68ad6eabbcec32a9bf40a9e923b4ef65d96e0 100644
--- a/R/format.data/NSW.R
+++ b/R/format.data/NSW.R
@@ -2,22 +2,22 @@
 
 ### MERGE NSW DATA
 rm(list = ls())
-source("format.fun.R")
-dir.create("../../output/formatted/NSW", recursive=TRUE,showWarnings=FALSE)
+source("R/format.data/format.fun.R")
+dir.create("output/formatted/NSW", recursive=TRUE,showWarnings=FALSE)
 
 library(reshape)
 ######################### READ DATA read individuals tree data
-data.nswbrc <- read.csv("../../data/raw/NSW/NSW_data_BRcontrols.csv", header = TRUE, 
+data.nswbrc <- read.csv("data/raw/NSW/NSW_data_BRcontrols.csv", header = TRUE, 
     stringsAsFactors = FALSE)
 data.nswbrc$Date.of.measure <- as.vector(sapply(data.nswbrc$Date.of.measure, function(x) {
     unlist(strsplit(x, "/"))[3]
 }))  ## Extract the years only
-data.nswbrt <- read.csv("../../data/raw/NSW/NSW_data_BRtreatments.csv", header = TRUE, 
+data.nswbrt <- read.csv("data/raw/NSW/NSW_data_BRtreatments.csv", header = TRUE, 
     stringsAsFactors = FALSE)
 data.nswbrt$Date.of.measure <- as.vector(sapply(data.nswbrt$Date.of.measure, function(x) {
     unlist(strsplit(x, "/"))[3]
 }))  ## Extract the years only
-data.nswbs1 <- read.csv("../../data/raw/NSW/NSW_data_BS1.csv", header = TRUE, stringsAsFactors = FALSE)
+data.nswbs1 <- read.csv("data/raw/NSW/NSW_data_BS1.csv", header = TRUE, stringsAsFactors = FALSE)
 data.nswbs1$Date.of.measure <- as.character(format(as.Date(data.nswbs1$Date.of.measure, 
     format = "%d-%b-%y"), format = "%d/%b/%Y"))
 data.nswbs1$Date.of.measure <- as.vector(sapply(data.nswbs1$Date.of.measure, function(x) {
@@ -25,7 +25,7 @@ data.nswbs1$Date.of.measure <- as.vector(sapply(data.nswbs1$Date.of.measure, fun
 }))  ## Extract the years only
 ## data.nswbs2 has a different format to the other datasets, so format to match
 ## the above
-data.nswbs2 <- read.csv("../../data/raw/NSW/NSW_data_BS2.csv", header = TRUE, stringsAsFactors = FALSE)
+data.nswbs2 <- read.csv("data/raw/NSW/NSW_data_BS2.csv", header = TRUE, stringsAsFactors = FALSE)
 data.nswbs2$Plot <- apply(data.nswbs2[, 1:2], 1, paste, collapse = "")
 data.nswbs2$Subplot <- NULL
 data.nswbs2$Family <- NULL
@@ -37,7 +37,7 @@ data.nswbs22$Dbh <- c(rbind(data.nswbs2[["DBH.cm..1988."]], data.nswbs2[["DBH.cm
 data.nswbs22[["DBH.cm..1988."]] <- data.nswbs22[["DBH.cm..2000."]] <- NULL
 data.nswbs2 <- data.nswbs22[, c(1:5, 8:9, 7, 6)]
 rm(data.nswbs22)
-data.nswtnd <- read.csv("../../data/raw/NSW/NSW_data_TND.csv", header = TRUE, stringsAsFactors = FALSE)
+data.nswtnd <- read.csv("data/raw/NSW/NSW_data_TND.csv", header = TRUE, stringsAsFactors = FALSE)
 data.nswtnd$Date.of.measure <- as.character(format(as.Date(data.nswtnd$Date.of.measure, 
     format = "%d-%b-%y"), format = "%d/%b/%Y"))
 data.nswtnd$Date.of.measure <- as.vector(sapply(data.nswtnd$Date.of.measure, function(x) {
@@ -45,7 +45,7 @@ data.nswtnd$Date.of.measure <- as.vector(sapply(data.nswtnd$Date.of.measure, fun
 }))  ## Extract the years only
 data.nsw <- rbind(data.nswbrc, data.nswbrt, data.nswbs1, data.nswbs2, data.nswtnd)
 ###################################### MASSAGE TRAIT DATA
-data.trait <- read.csv("../../data/raw/NSW/NSW_traits.csv", header = TRUE, stringsAsFactors = FALSE)
+data.trait <- read.csv("data/raw/NSW/NSW_traits.csv", header = TRUE, stringsAsFactors = FALSE)
 data.trait$sp <- data.trait[["Species.all"]]; data.trait[["Species.all"]] <- NULL ## There is not sp.code in data.nsw; using spp name as code
 data.trait$Latin_name <- data.trait$sp
 data.trait$Leaf.N.mean <- NA
@@ -118,7 +118,7 @@ data.nsw <- merge(data.nsw, data.frame(plot = names(perc.dead), perc.dead = perc
 vec.basic.var <- c("obs.id","tree.id", "sp", "sp.name","plot", "subplot", "D", "G", "dead", 
     "year", "htot", "x", "y", "census")
 data.tree <- subset(data.nsw, select = c(vec.basic.var))
-write.csv(data.tree,file="../../output/formatted/NSW/tree.csv",row.names = FALSE)
+write.csv(data.tree,file="output/formatted/NSW/tree.csv",row.names = FALSE)
 
 
 ## ############################################## COMPUTE MATRIX OF COMPETITION INDEX WITH SUM OF BA PER SPECIES IN EACH PLOT in
@@ -161,4 +161,4 @@ write.csv(data.tree,file="../../output/formatted/NSW/tree.csv",row.names = FALSE
 ## # dev.off()
 ## ## save everything as a list
 ## list.nsw <- list(data.tree = data.nsw, data.BA.SP = data.BA.sp, data.traits = data.traits)
-## save(list.nsw, file = "../../output/formatted/NSW/list.nsw.Rdata") 
+## save(list.nsw, file = "output/formatted/NSW/list.nsw.Rdata") 
diff --git a/R/format.data/NVS.R b/R/format.data/NVS.R
index 8689f9fe302ccc4ceb5390188ac086e53ac8c579..7f09974b0c92b2490375e03c058c5f3e0c0bee63 100644
--- a/R/format.data/NVS.R
+++ b/R/format.data/NVS.R
@@ -2,17 +2,17 @@
 
 ### MERGE NVS DATA
 rm(list = ls())
-source("format.fun.R",quietly=TRUE)
+source("R/format.data/format.fun.R")
 library(reshape)
-dir.create("../../output/formatted/NVS", recursive=TRUE,showWarnings=FALSE)
+dir.create("output/formatted/NVS", recursive=TRUE,showWarnings=FALSE)
 
 ######################### READ DATA read individuals tree and environmental data
-data.nz <- read.csv("../../data/raw/NVS/nz_treedata_growth_130801.csv", header = TRUE, 
+data.nz <- read.csv("data/raw/NVS/nz_treedata_growth_130801.csv", header = TRUE, 
     stringsAsFactors = FALSE, skip = 9)
 data.nz <- data.nz[, -1]
 data.nz$plid <- gsub("__", "_", data.nz$plid)
 data.nz$plid <- gsub("_", ".", data.nz$plid)  ## Replace all underscores with a single dot
-data.plot <- read.csv("../../data/raw/NVS/nz_plotinfo_130801.csv", , header = TRUE, 
+data.plot <- read.csv("data/raw/NVS/nz_plotinfo_130801.csv", , header = TRUE, 
     stringsAsFactors = FALSE)
 data.plot <- data.plot[, -1]
 data.plot$plid <- gsub("__", "_", data.plot$plid)
@@ -87,4 +87,4 @@ vec.abio.var.names <- c("MAT", "MAP")
 vec.basic.var <- c("obs.id","tree.id", "sp", "sp.name","cluster","plot", "ecocode", "D", "G", "dead", 
     "year", "htot", "Lon", "Lat", "perc.dead","weights","census")
 data.tree <- subset(data.nz, select = c(vec.basic.var, vec.abio.var.names))
-write.csv(data.tree,file="../../output/formatted/NVS/tree.csv",row.names = FALSE)
+write.csv(data.tree,file="output/formatted/NVS/tree.csv",row.names = FALSE)
diff --git a/R/format.data/Paracou.R b/R/format.data/Paracou.R
index 10dbc28d3ecea6e227fd512a5f939f67a066e9b5..60457745124cb6b3e24afe1798caa7451beb8d66 100644
--- a/R/format.data/Paracou.R
+++ b/R/format.data/Paracou.R
@@ -3,12 +3,12 @@
 ### MERGE paracou DATA
 
 rm(list = ls())
-source("format.fun.R")
-dir.create("../../output/formatted/Paracou", recursive=TRUE,showWarnings=FALSE)
+source("R/format.data/format.fun.R")
+dir.create("output/formatted/Paracou", recursive=TRUE,showWarnings=FALSE)
 library(reshape,quietly=TRUE)
 
 ############################ read individuals tree data
-data.paracou <- read.table("../../data/raw/Paracou/20130717_paracou_1984_2012.csv",
+data.paracou <- read.table("data/raw/Paracou/20130717_paracou_1984_2012.csv",
                            header=TRUE,stringsAsFactors=FALSE,sep = ";", na.strings = "NULL")
 #barplot(apply(!is.na(data.paracou[,paste("circ_",1984:2012,sep="")]),MARGIN=2,FUN=sum),las=3)
 # select good columns
@@ -28,7 +28,7 @@ data.paracou$tree.id <- apply(data.paracou[,c("plot","subplot","tree")],1,paste,
 data.paracou$sp <- data.paracou[["taxonid"]]
 data.paracou <- data.paracou[,c(ncol(data.paracou),1:(ncol(data.paracou)-1))]	
 ## plot each plot
-## pdf("../../figs/plots.paracou.pdf")
+## pdf("output/figs/plots.paracou.pdf")
 ## lapply(unique(data.paracou[["plot"]]),FUN=fun.circles.plot,data.paracou[['x']],data.paracou[['y']],data.paracou[["plot"]],data.paracou[["circum2009"]],inches=0.2,fg.l=data.paracou$subplot)
 ## dev.off()
 ## #
@@ -42,7 +42,7 @@ data.paracou <- subset(data.paracou,subset=!(as.numeric(data.paracou[["yeardied"
 ######################################## MASSAGE TRAIT DATA
 ### read species names
 
-species.clean <- read.csv("../../data/raw/Paracou/20130717_paracou_taxonomie.csv",stringsAsFactors=FALSE, header = T, sep = ";")
+species.clean <- read.csv("data/raw/Paracou/20130717_paracou_taxonomie.csv",stringsAsFactors=FALSE, header = T, sep = ";")
 species.clean$sp <- species.clean[["idTaxon"]]
 species.clean$Latin_name <-  paste(species.clean[["Genre"]],species.clean[["Espece"]],sep=" ")
 ## keep only one row pers idTaxon
@@ -95,7 +95,7 @@ data.paracou$sp.name <- data.paracou$Latin_name
 vec.basic.var <- c("obs.id","tree.id", "sp", "sp.name","plot", "subplot", "D", "G", "dead", 
     "year", "htot", "x", "y", "census")
 data.tree <- subset(data.paracou, select = c(vec.basic.var))
-write.csv(data.tree,file="../../output/formatted/Paracou/tree.csv",row.names = FALSE)
+write.csv(data.tree,file="output/formatted/Paracou/tree.csv",row.names = FALSE)
 
 
 ## ######
@@ -103,18 +103,18 @@ write.csv(data.tree,file="../../output/formatted/Paracou/tree.csv",row.names = F
 
 ## ###########
 ## ### TRAITS MASSAGE
-## dataWD <- read.csv("../../data/raw/Paracou/WD-Species-Paracou-Ervan_GV.csv",stringsAsFactors=FALSE, header = T,sep=" ")
+## dataWD <- read.csv("data/raw/Paracou/WD-Species-Paracou-Ervan_GV.csv",stringsAsFactors=FALSE, header = T,sep=" ")
 ## #dataWD <- merge(dataWD, species.clean, by = "idCIRAD", sort = F)
 ## length(unique(species.clean$idCIRAD)) !=  dim(species.clean)
 ## ## dataWD uses idCIRAD as identifier, but this is not a unique identifier in species.clean! 
 ## ## But wood density seems to also be available from seed.traits
 ## ### need to read the different traits data based and merge .....
-## bridge <- read.csv("../../data/raw/Paracou/BridgeDATA.g.csv",stringsAsFactors=FALSE, header = T, sep = ";")
+## bridge <- read.csv("data/raw/Paracou/BridgeDATA.g.csv",stringsAsFactors=FALSE, header = T, sep = ";")
 ## bridge$Latin_name <- paste(bridge[["Genus"]],bridge[["species"]],sep=" ")
 ## ### check % of match of the bridg data
 ## sum(species.clean[["Latin_name"]] %in% bridge[["Latin_name"]])/length(species.clean[["Latin_name"]])
 ## ## only 307 species /775 are in teh traits data ....
-## seed.traits <- read.csv("../../data/raw/Paracou/Autour-de-Paracou-Releves-par-trait-et-taxon.txt",stringsAsFactors=FALSE, header = T, sep = "\t")
+## seed.traits <- read.csv("data/raw/Paracou/Autour-de-Paracou-Releves-par-trait-et-taxon.txt",stringsAsFactors=FALSE, header = T, sep = "\t")
 ## ## Reformat seed.traits to one row per species, with each trait as a column
 ## spp.means <- (cast(seed.traits, LIB_TAXON ~ METHO_LIB, value = "MEASURE", fun = mean))
 ## colnames(spp.means)[-1] <- paste(colnames(spp.means)[-1],".mean",sep="")
diff --git a/R/format.data/Spain.R b/R/format.data/Spain.R
index 81405867b2ec7583b7c5f4da5545577b1e7fbfc5..dde866f9045d1342cfdff1bed4f11f372355e3d1 100644
--- a/R/format.data/Spain.R
+++ b/R/format.data/Spain.R
@@ -2,13 +2,13 @@
 
 ### MERGE spain DATA Edited by FH
 rm(list = ls())
-source("format.fun.R")
+source("R/format.data/format.fun.R")
 library(reshape)
 
-dir.create("../../output/formatted/Spain", recursive=TRUE,showWarnings=FALSE)
+dir.create("output/formatted/Spain", recursive=TRUE,showWarnings=FALSE)
 
 ######################### READ DATA read individuals tree data 
-data.spain <- read.table("../../data/raw/Spain/Tree_data_SFI_aug13_alldata.txt", 
+data.spain <- read.table("data/raw/Spain/Tree_data_SFI_aug13_alldata.txt", 
     header = TRUE, stringsAsFactors = FALSE, sep = "\t")
     
 ###################################### MASSAGE TRAIT DATA Compute maximum height per species plus sd from observed
@@ -21,7 +21,7 @@ res.quant.boot <- t(sapply(levels(factor(data.spain[["SP_code"]])), FUN = f.quan
 data.max.height <- data.frame(sp = rownames(res.quant.boot), Max.height.mean = res.quant.boot[, 
     1], Max.height.sd = res.quant.boot[, 2], Max.height.nobs = res.quant.boot[, 3], stringsAsFactors =FALSE)
 rm(res.quant.boot)
-write.csv(data.max.height, file = "../../output/formatted/Spain/max.height.csv")  ## I was planning to save processed data in that folder
+write.csv(data.max.height, file = "output/formatted/Spain/max.height.csv")  ## I was planning to save processed data in that folder
 
 ################################## FORMAT INDIVIDUAL TREE DATA
 data.spain$G <- data.spain[["adbh"]] ## diameter growth in mm per year
@@ -57,7 +57,7 @@ data.spain$Lat <- coordinates(data.sp2)[, "CY"]
 ## points(data.sp2,cex=0.2,col='red')
 rm(data.sp, data.sp2)
 ###################### ECOREGION merge greco to have no ecoregion with low number of observation
-greco <- read.csv(file = "../../data/raw/Spain/R_Ecoregion.csv", header = T)
+greco <- read.csv(file = "data/raw/Spain/R_Ecoregion.csv", header = T)
 greco <- greco[, c("Plot_ID_SFI", "BIOME", "eco_code")]
 greco2 <- greco[!duplicated(greco$Plot), ]; 
 colnames(greco2) <- c("plot", "biome", "ecocode")
@@ -113,4 +113,4 @@ vec.abio.var.names <- c("MAT", "PP", "PET")
 vec.basic.var <- c("obs.id","tree.id", "sp", "sp.name", "cluster","plot", "ecocode", "D", "G", "dead", 
     "year", "htot", "Lon", "Lat", "perc.dead","census","weights")
 data.tree <- subset(data.spain, select = c(vec.basic.var, vec.abio.var.names))
-write.csv(data.tree,file="../../output/formatted/Spain/tree.csv",row.names = FALSE)
+write.csv(data.tree,file="output/formatted/Spain/tree.csv",row.names = FALSE)
diff --git a/R/format.data/Sweden.R b/R/format.data/Sweden.R
index 8dbba5778791d45807f96df2e2979d3112434845..e600328aa08a04c08c707dda7cca4010019d826a 100644
--- a/R/format.data/Sweden.R
+++ b/R/format.data/Sweden.R
@@ -2,12 +2,12 @@
 
 ### MERGE sweden DATA
 rm(list = ls()); 
-source("format.fun.R"); 
+source("R/format.data/format.fun.R"); 
 library(reshape);
-dir.create("../../output/formatted/Sweden", recursive=TRUE,showWarnings=FALSE)
+dir.create("output/formatted/Sweden", recursive=TRUE,showWarnings=FALSE)
 
 ######################### READ DATA read individuals tree data
-data.swe <- read.table("../../data/raw/Sweden/Swe_NFI_all.txt",header=T,stringsAsFactors=F,sep="\t")
+data.swe <- read.table("data/raw/Sweden/Swe_NFI_all.txt",header=T,stringsAsFactors=F,sep="\t")
 #head(data.swe)
 data.swe$tree.id <- apply(cbind(data.swe[["Year"]],data.swe[["TractNr"]],data.swe[["PlotNr"]],data.swe[["TreeNr"]]),1,paste,collapse="_")
 data.swe$plot <- apply(cbind(data.swe[["Year"]],data.swe[["TractNr"]],data.swe[["PlotNr"]]),1,paste,collapse="_")
@@ -49,7 +49,7 @@ res.quant.boot <- t(sapply(levels(factor(data.swe[["sp"]])), FUN = f.quantile.bo
 data.max.height <- data.frame(code = rownames(res.quant.boot), Max.height.mean = res.quant.boot[, 
     1], Max.height.sd = res.quant.boot[, 2], Max.height.nobs = res.quant.boot[, 3], stringsAsFactors =FALSE)
 rm(res.quant.boot)
-write.csv(data.max.height,file='../../output/formatted/Sweden/max.height.csv') ### GEORGES NOT SURE WE SHOULD USE THAT
+write.csv(data.max.height,file='output/formatted/Sweden/max.height.csv') ### GEORGES NOT SURE WE SHOULD USE THAT
 
 #################
 ##### change the projection of xy to wgs84 lat long.
@@ -86,7 +86,7 @@ dim(data.swe)
 data.swe$cluster <- rep(NA, nrow(data.swe))  ## no plot cluster
 
 ## load species latin name
-species.clean <- read.csv("../../data/raw/Sweden/species.list.csv",header=T,stringsAsFactors=F,sep=",")
+species.clean <- read.csv("data/raw/Sweden/species.list.csv",header=T,stringsAsFactors=F,sep=",")
 data.swe$sp.name <- species.clean[match(data.swe$sp,species.clean$sp),"Latin_name"] ## GET LATIN NAME
 
 data.swe$Year <- NULL; 
@@ -124,4 +124,4 @@ data.swe <- merge(data.swe,data.frame(plot=names(perc.dead),perc.dead=perc.dead)
 vec.basic.var <- c("obs.id","tree.id", "sp", "sp.name","cluster","plot", "ecocode", "D", "G", "dead", 
     "year", "htot", "Lon", "Lat", "perc.dead","weights","census")
 data.tree <- subset(data.swe, select = c(vec.basic.var))
-write.csv(data.tree,file="../../output/formatted/Sweden/tree.csv",row.names = FALSE)
+write.csv(data.tree,file="output/formatted/Sweden/tree.csv",row.names = FALSE)
diff --git a/R/format.data/Swiss.R b/R/format.data/Swiss.R
index fadaefb556495769f7f9bf3c61bd6b2faedcb6a0..95687c2e506f396efb6055038fc8b47e70bdb1f2 100644
--- a/R/format.data/Swiss.R
+++ b/R/format.data/Swiss.R
@@ -2,15 +2,15 @@
 
 ### MERGE Swiss DATA
 rm(list = ls())
-source("format.fun.R")
+source("R/format.data/format.fun.R")
 library(reshape)
 library(foreign)
-dir.create("../../output/formatted/Swiss", recursive=TRUE,showWarnings=FALSE)
+dir.create("output/formatted/Swiss", recursive=TRUE,showWarnings=FALSE)
 
 ######################### READ DATA read individuals tree data
-data.swiss1 <- read.csv("../../data/raw/Swiss/LFI12.csv", header = TRUE, stringsAsFactors = FALSE)
-data.swiss2 <- read.csv("../../data/raw/Swiss/LFI23.csv", header = TRUE, stringsAsFactors = FALSE)
-data.swiss3 <- read.csv("../../data/raw/Swiss/LFI34.csv", header = TRUE, stringsAsFactors = FALSE)
+data.swiss1 <- read.csv("data/raw/Swiss/LFI12.csv", header = TRUE, stringsAsFactors = FALSE)
+data.swiss2 <- read.csv("data/raw/Swiss/LFI23.csv", header = TRUE, stringsAsFactors = FALSE)
+data.swiss3 <- read.csv("data/raw/Swiss/LFI34.csv", header = TRUE, stringsAsFactors = FALSE)
 data.swiss <- rbind(data.swiss1, data.swiss2, data.swiss3)
 rm(data.swiss1, data.swiss2, data.swiss3)
 data.swiss <- data.swiss[order(data.swiss$BANR), ]
@@ -32,7 +32,7 @@ coordinates(data.sp) <- c("x", "y")  # define x y
 proj4string(data.sp) <- CRS("+init=epsg:21781")  # define projection system of our data ## EPSG:21781 CH1903 / LV03 CHECK WITH NICK STRANGE
 summary(data.sp)
 library(maptools)
-bioregion <- readShapePoly("../../data/raw/Swiss/bio_regions/biogregions.shp")
+bioregion <- readShapePoly("data/raw/Swiss/bio_regions/biogregions.shp")
 ## plot(bioregion)
 ## plot(data.sp,add=TRUE)
 ## test <-  over(data.sp,bioregion) ## need to check proj with nick
@@ -62,7 +62,7 @@ res.quant.boot <- (t(sapply(levels(factor(data.swiss2[["sp"]])), FUN = f.quantil
 data.max.height <- data.frame(code = rownames(res.quant.boot), Max.height.mean = res.quant.boot[, 
     1], Max.height.sd = res.quant.boot[, 2], Max.height.nobs = res.quant.boot[, 3], stringsAsFactors =FALSE)
 rm(res.quant.boot)
-write.csv(data.max.height,file='../../output/formatted/Swiss/max.height.csv')
+write.csv(data.max.height,file='output/formatted/Swiss/max.height.csv')
 
 ########################################## FORMAT INDIVIDUAL TREE DATA 
 data.swiss$G <- 10 * (data.swiss$dbh_diff)/data.swiss$year  ## diameter growth in mm per year
@@ -84,7 +84,7 @@ perc.dead <- tapply(data.swiss[["dead"]], INDEX = data.swiss[["plot"]], FUN = fu
 data.swiss <- merge(data.swiss, data.frame(plot = names(perc.dead), perc.dead = perc.dead,
                                            stringsAsFactors =FALSE), by = "plot", sort = FALSE)
 ########################################################### PLOT SELECTION FOR THE ANALYSIS
-data.climate <- read.dbf(file = "../../data/raw/Swiss/LFI14_climate.dbf")
+data.climate <- read.dbf(file = "data/raw/Swiss/LFI14_climate.dbf")
 data.climate <- data.climate[, c("CLNR","swb_100","tave_68","prec_122","prec_35","prec_68","prec_911")]
 data.climate$MAP <- apply(data.climate[, c("prec_122","prec_35","prec_68","prec_911")], 1, sum)
 data.swiss <- merge(data.swiss, data.frame(plot = data.climate$CLNR, swb = data.climate$swb_100, 
@@ -95,5 +95,5 @@ vec.abio.var.names <- c("MAT", "MAP", "swb")
 vec.basic.var <- c("obs.id","tree.id", "sp","sp.name", "cluster", "plot", "ecocode", "D", "G", "dead", 
     "year", "htot", "Lon", "Lat", "perc.dead", "weights","census")
 data.tree <- subset(data.swiss, select = c(vec.basic.var, vec.abio.var.names))
-write.csv(data.tree,file="../../output/formatted/Swiss/tree.csv",row.names = FALSE)
+write.csv(data.tree,file="output/formatted/Swiss/tree.csv",row.names = FALSE)
 warnings()
diff --git a/R/format.data/TRY.R b/R/format.data/TRY.R
index 7a995ae1a4d2af923554a0cdf182824783c10643..f47d39bcf40fbb0b2598cd5d6e17a2a67eadb23e 100644
--- a/R/format.data/TRY.R
+++ b/R/format.data/TRY.R
@@ -5,16 +5,16 @@
 
 ################ use AccSpeciesName because not author name
 
-source("../format.data/try.fun.R")
+source("R/format.data/try.fun.R")
 
-out.dir <- "../../output/formatted/TRY"
+out.dir <- "output/formatted/TRY"
 dir.create(out.dir, recursive=TRUE,showWarnings=FALSE)
 
 ## read TRY data
-TRY.DATA <- read.table("../../data/raw/TRY/TRY_Proposal_177_DataRelease_2013_04_01.txt", 
+TRY.DATA <- read.table("data/raw/TRY/TRY_Proposal_177_DataRelease_2013_04_01.txt", 
     sep = "\t", header = TRUE, na.strings = "", stringsAsFactors = FALSE)
 
-TRY.DATA2 <- read.table("../../data/raw/TRY/TRY_Proposal_177_DataRelease_2013_07_23.txt", 
+TRY.DATA2 <- read.table("data/raw/TRY/TRY_Proposal_177_DataRelease_2013_07_23.txt", 
     sep = "\t", header = TRUE, na.strings = "", stringsAsFactors = FALSE)
 
 ### combine both data set
diff --git a/R/format.data/US.R b/R/format.data/US.R
index d17b2c8d2d8aabae50e601b139adffab9c67739e..69d301709306636bb43a7a9bd156589bab677933 100644
--- a/R/format.data/US.R
+++ b/R/format.data/US.R
@@ -2,12 +2,12 @@
 
 ### MERGE us DATA Edited by FH
 library(reshape, quietly=TRUE)
-source("format.fun.R")
-dir.create("../../output/formatted/US", recursive=TRUE,showWarnings=FALSE)
+source("R/format.data/format.fun.R")
+dir.create("output/formatted/US", recursive=TRUE,showWarnings=FALSE)
 
 
 ### read species names
-species.clean <- read.csv("../../data/raw/US/REF_SPECIES.CSV", stringsAsFactors = FALSE)
+species.clean <- read.csv("data/raw/US/REF_SPECIES.CSV", stringsAsFactors = FALSE)
 ## select column to keep
 species.clean <- subset(species.clean, select = c("SPCD", "GENUS", "SPECIES", "VARIETY", 
     "SUBSPECIES", "SPECIES_SYMBOL"))
@@ -20,13 +20,13 @@ species.clean[["sp"]] <- paste("sp", species.clean[["sp"]], sep = ".")
 
 
 ## LOAD QUANTILE OF HEIGHT AND FORMAT AS OTHER
-data.max.height <- read.csv("../../data/raw/US/FiaSpMaxHt.csv", stringsAsFactors = FALSE)
+data.max.height <- read.csv("data/raw/US/FiaSpMaxHt.csv", stringsAsFactors = FALSE)
 data.max.height <- data.frame(sp=data.max.height$SpCd,Max.height.mean=data.max.height$Ht99,
            Max.height.sd=rep(NA,nrow(data.max.height)), Max.height.nobs=rep(NA,nrow(data.max.height)))
-write.csv(data.max.height, file = "../../output/formatted/US/max.height.csv")  ## I was planning to save processed data in that folder
+write.csv(data.max.height, file = "output/formatted/US/max.height.csv")  ## I was planning to save processed data in that folder
 
 #### READ DATA US
-data.us <- read.csv("../../data/raw/US/FIA51_trees_w_supp.csv",header=TRUE,stringsAsFactors =FALSE) 
+data.us <- read.csv("data/raw/US/FIA51_trees_w_supp.csv",header=TRUE,stringsAsFactors =FALSE) 
 ############## MASSAGE TRAIT DATA HEIGHT DATA FOR TREE MISSING BRING US DATA FOR HEIGHT OVER
 ############## WHEN WE ANALYZE THAT DATASET LATER ON
 ############## FORMAT INDIVIDUAL TREE DATA
@@ -52,7 +52,7 @@ data.us$census <- rep(1,nrow(data.us))
 ### add plot weights for computation of competition index (in 1/m^2)
 data.us$weights <- 1/(10000 * data.us[["PlotSize"]])
 ###################### ECOREGION merge greco to have no ecoregion with low number of observation
-greco <- read.csv(file = "../../data/raw/US/EcoregionCodes.csv", header = T)
+greco <- read.csv(file = "data/raw/US/EcoregionCodes.csv", header = T)
 colnames(greco)[1] <- "Ecocode"
 table(data.us$Ecocode)
 data.us <- merge(data.us, greco[, -4], by = "Ecocode")
@@ -99,6 +99,6 @@ vec.abio.var.names <- c("MAT", "MAP")
 vec.basic.var <- c("obs.id","tree.id", "sp","sp.name", "cluster", "plot", "ecocode", "D", "G", "dead", 
     "year", "htot", "Lon", "Lat", "perc.dead", "weights","census")
 data.tree <- subset(data.us, select = c(vec.basic.var, vec.abio.var.names))
-write.csv(data.tree,file="../../output/formatted/US/tree.csv",row.names = FALSE)
+write.csv(data.tree,file="output/formatted/US/tree.csv",row.names = FALSE)
 rm(data.us)
 gc()
diff --git a/R/format.data/format.fun.R b/R/format.data/format.fun.R
index f8ade56a6df158054dfda84343080493e4301c80..f77429eb64f35c2a544b43b54f892dc7bc861a01 100644
--- a/R/format.data/format.fun.R
+++ b/R/format.data/format.fun.R
@@ -4,7 +4,7 @@
 ###################################################
 ##### FUNCTION TO FORMAT DATA FOR THE WORKSHOP 
 #### G. Kunstler 11/09/2013
-source("../packages.R")
+source("R/packages.R")
 check_packages(c("reshape", "boot","RColorBrewer","sp","dismo","rgdal","foreign","rworldmap"))
 
 ############################
diff --git a/R/format.data/try.fun.R b/R/format.data/try.fun.R
index e9a87a75f74b4ce388eb431ce31fa62199d168a7..adf17911bfe116318cacffcf5118c9c807f18ba2 100644
--- a/R/format.data/try.fun.R
+++ b/R/format.data/try.fun.R
@@ -2,7 +2,7 @@
 ############################################ 14/06/2013
 
 ### install all unstallled packages
-source("../packages.R")
+source("R/packages.R")
 check_packages(c("MASS", "doParallel","mvoutlier"))
 
 
diff --git a/R/process.data/BCI.R b/R/process.data/BCI.R
index 8ac9389534ddac77192faee8abc0dd2f8f4420ab..7474503130b8b3929303ab60cae5713058fd623d 100644
--- a/R/process.data/BCI.R
+++ b/R/process.data/BCI.R
@@ -6,14 +6,14 @@ rm(list = ls())
 source("process.fun.R")
 library(reshape)
 
-data.tree <- read.csv("../../output/formatted/BCI/tree.csv", stringsAsFactors = FALSE)
+data.tree <- read.csv("output/formatted/BCI/tree.csv", stringsAsFactors = FALSE)
 data.tree <- subset(data.tree,subset=!is.na(data.tree[["D"]]))
 data.tree <- subset(data.tree,subset=data.tree[["D"]]>10) ### select only tree below 5cm of dbh to start
 
 ### species as factor because number
 Rlim <- 15 # set size of neighborhood for competition index
 
-data.traits <- read.csv("../../output/formatted/BCI/traits.csv")
+data.traits <- read.csv("output/formatted/BCI/traits.csv")
 
 ## change sp
 data.traits$sp <- paste("sp",data.traits$sp,sep=".")
diff --git a/R/process.data/France.R b/R/process.data/France.R
index e3f90ac53c90af6618bb38e5934446246085f33f..e1ae85f0930199c3cfdc91fc2db384d2cac1f407 100644
--- a/R/process.data/France.R
+++ b/R/process.data/France.R
@@ -6,13 +6,13 @@ rm(list = ls())
 source("process.fun.R")
 library(reshape)
 
-data.tree <- read.csv("../../output/formatted/France/tree.csv", stringsAsFactors = FALSE)
+data.tree <- read.csv("output/formatted/France/tree.csv", stringsAsFactors = FALSE)
 data.tree <- subset(data.tree,subset=!is.na(data.tree[["D"]]))
 data.tree <- subset(data.tree,subset=data.tree[["D"]]>5) ### select only tree below 5cm of dbh to start
 
 
 ## change sp
-data.traits <- read.csv("../../output/formatted/France/traits.csv")
+data.traits <- read.csv("output/formatted/France/traits.csv")
 
 data.traits$sp <- paste("sp",data.traits$sp,sep=".")
 data.tree$sp <- paste("sp",data.tree$sp,sep=".")
diff --git a/R/process.data/US.R b/R/process.data/US.R
index 7e185dceaf469697e5d40acecc1b543e3d27fb15..f932d21646db2d0b691a7259ad3f697d05b428ce 100644
--- a/R/process.data/US.R
+++ b/R/process.data/US.R
@@ -6,12 +6,12 @@ rm(list = ls())
 source("process.fun.R")
 library(reshape)
 
-data.tree <- read.csv("../../output/formatted/US/tree.csv", stringsAsFactors = FALSE)
+data.tree <- read.csv("output/formatted/US/tree.csv", stringsAsFactors = FALSE)
 data.tree <- subset(data.tree,subset=!is.na(data.tree[["D"]]))
 
 
 ## change sp
-data.traits <- read.csv("../../output/formatted/US/traits.csv")
+data.traits <- read.csv("output/formatted/US/traits.csv")
 
 data.traits$sp <- paste("sp",data.traits$sp,sep=".")
 data.tree$sp <- paste("sp",data.tree$sp,sep=".")
diff --git a/R/process.data/analysis-fun.R b/R/process.data/analysis-fun.R
index ddf4762288d419bc3af170e8ce532077d53c46dd..5116993d4254958020a3fa6b013111b2609447af 100644
--- a/R/process.data/analysis-fun.R
+++ b/R/process.data/analysis-fun.R
@@ -31,7 +31,7 @@ summarise.data <- function(data.site){
 summarise.tree <- function(data.tree){
   out <- list()
   
-  expected <- read.csv("../../docs/workflow/cols-tree.csv", stringsAsFactors = FALSE)
+  expected <- read.csv("docs/workflow/cols-tree.csv", stringsAsFactors = FALSE)
   
   if(!is.null(data.tree)){
     out[["n.species"]] <- length(unique(data.tree[["sp.name"]]))
@@ -45,7 +45,7 @@ summarise.tree <- function(data.tree){
 
 summarise.traits <- function(data.traits){
   
-  expected <- read.csv("../../docs/workflow/cols-traits.csv", stringsAsFactors = FALSE)
+  expected <- read.csv("docs/workflow/cols-traits.csv", stringsAsFactors = FALSE)
   # filter to mean, numeric
   var <- expected$var[expected$numeric==1]
   
diff --git a/R/process.data/analysis.R b/R/process.data/analysis.R
index ec470ddaed3a520de2136fcb131100dfa0464143..ad760c78f48040124b1ba4d5fb1a92a488db321e 100644
--- a/R/process.data/analysis.R
+++ b/R/process.data/analysis.R
@@ -1,15 +1,15 @@
 #!/usr/bin/env Rscript
 ############################################# MERGE FRENCH DATA
-path.formatted <- "../../output/formatted"
-path.processed <- "../../output/processed"
+path.formatted <- "output/formatted"
+path.processed <- "output/processed"
 
 source("analysis-fun.R")
 
 ## load all sites
 data <- load_all_formatted_data(path.formatted)
   
-source("../utils/plot.R")
-source("../utils/maps.R")
+source("R/utils/plot.R")
+source("R/utils/maps.R")
 
 # Map for single site
 # to.dev(world.map(data[["US"]]$tree[["Lon"]], data[["US"]]$tree[["Lat"]], group = NULL, cols = NULL),
@@ -19,7 +19,7 @@ source("../utils/maps.R")
 to.dev(world.map.all.sites(data),
   png,file=file.path(path.processed, "world_map_all.png"), height =2000, width = 2000)
 
-png("../../figs/world.map.all.png",height=2000,width=2000)
+png("output/figs/world.map.all.png",height=2000,width=2000)
 world.map.all.sites(data,legend.TF=FALSE)
 BCI <- c(-79.8461,9.1543)
 Paracou <- c(-52.900002,5.38)  
diff --git a/R/process.data/process.fun.R b/R/process.data/process.fun.R
index 168101a92e141304f5f5cbb1ab5bf22f4b3d9588..7a97cfa17b0f25a1c7ce498701a533363c2b1a04 100644
--- a/R/process.data/process.fun.R
+++ b/R/process.data/process.fun.R
@@ -3,7 +3,7 @@
 ####################################################
 #### function to process data
 ### install all unstallled packages
-source("../packages.R")
+source("R/packages.R")
 check_packages(c("reshape", "data.table","doParallel"))
 
 #########################
@@ -310,7 +310,7 @@ require(data.table)
 data.tot <-  data.table(data.tot)
 data <- data.tot[ecocode==ecoregion,]
 print(paste("number of obs in ecoregion",ecoregion," = ",nrow(data)))
-dir.create(paste("../../output/processed/",site.name,"/",ecoregion,sep=""), recursive=TRUE,showWarnings=FALSE)
+dir.create(paste("output/processed/",site.name,"/",ecoregion,sep=""), recursive=TRUE,showWarnings=FALSE)
 
 rm(data.tot)
 print('start computing competition index')
@@ -350,10 +350,10 @@ if(sum(!data.BA.sp[["obs.id"]] == data[["obs.id"]]) >0) stop("competition index
  if(is.data.frame(data.TRAITS)){
 data.TRAITS.s <- subset(data.TRAITS,subset=data.TRAITS[[sp.code]] %in% data[[sp.code2]])
    list.temp <- list(data.tree=data,data.BA.SP=data.BA.sp,data.traits=data.TRAITS.s)
-   saveRDS(list.temp,file=paste("../../output/processed/",site.name,"/",ecoregion,"/list.rds",sep=""))
+   saveRDS(list.temp,file=paste("output/processed/",site.name,"/",ecoregion,"/list.rds",sep=""))
  }else{
    list.temp <- list(data.tree=data,data.BA.SP=data.BA.sp,data.traits=NA)
-   saveRDS(list.temp,file=paste("../../output/processed/",site.name,"/",ecoregion,"/list.rds",sep=""))
+   saveRDS(list.temp,file=paste("output/processed/",site.name,"/",ecoregion,"/list.rds",sep=""))
    }
         
 }    
@@ -363,7 +363,7 @@ data.TRAITS.s <- subset(data.TRAITS,subset=data.TRAITS[[sp.code]] %in% data[[sp.
 
 fun.data.per.bigplot <- function(data,site.name,data.TRAITS=NA,Rlim=15,xy.name,parallel=FALSE,rpuDist=FALSE,sp.code="sp",sp.code2="sp"){
 require(data.table)
-dir.create(paste("../../output/processed/",site.name,sep=""), recursive=TRUE,showWarnings=FALSE)
+dir.create(paste("output/processed/",site.name,sep=""), recursive=TRUE,showWarnings=FALSE)
 data$sp <- factor(data$sp)
 data.TRAITS$sp <- factor(data.TRAITS$sp)
 print(paste("plots :",unique(data[["plot"]])))
@@ -394,9 +394,9 @@ if(sum(!as.character(data.BA.SP[["obs.id"]]) == as.character(data[["obs.id"]]))
 if(is.data.frame(data.TRAITS)){
    data.TRAITS.s <- subset(data.TRAITS,subset=data.TRAITS[[sp.code]] %in% data[[sp.code2]])
    list.temp <- list(data.tree=data,data.BA.SP=data.BA.SP,data.traits=data.TRAITS.s)
-   saveRDS(list.temp,file=paste("../../output/processed/",site.name,"/list.rds",sep=""))
+   saveRDS(list.temp,file=paste("output/processed/",site.name,"/list.rds",sep=""))
   }else{
    list.temp <- list(data.tree=data,data.BA.SP=data.BA.sp,data.traits=NA)
-   saveRDS(list.temp,file=paste("../../output/processed/",site.name,"/list.rds",sep=""))
+   saveRDS(list.temp,file=paste("output/processed/",site.name,"/list.rds",sep=""))
   }
 }