diff --git a/.Rbuildignore b/.Rbuildignore
index f76658445b7ff5ef00ad552ea55869bffd2a3cfa..d49c07a32f73664f4572f8af050eacd3fe03882a 100644
--- a/.Rbuildignore
+++ b/.Rbuildignore
@@ -1,3 +1,4 @@
 ^griwrm\.Rproj$
 ^\.Rproj\.user$
 ^LICENSE\.md$
+\.gitlab-ci\.yml
diff --git a/.gitignore b/.gitignore
index b082f28ca71075d9ad8b27aae96cc0f256b385cf..de3a5744bd3f47a5d1338aae01b8796290369a17 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,6 +4,7 @@
 
 # Man pages generated by Roxygen
 man/*.Rd
+/.vscode/
 
 ###############################################################################
 
@@ -52,3 +53,4 @@ vignettes/*.pdf
 # pkgdown site
 docs/
 
+inst/doc
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 06637072446fdc088f05f0fb7d92684b985edb2f..91d5e2f4a1561cd895778f20544b4a72e88fbf7f 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -2,7 +2,7 @@ default:
   tags: [docker]
   image: r-base:latest
   before_script:
-    - Rscript -e 'install.packages("remotes")'
+    - Rscript -e 'install.packages("remotes", "dplyr")'
     - Rscript -e 'remotes::install_gitlab("HYCAR-Hydro/airgr@sd", host = "gitlab.irstea.fr")'
     - R CMD build ../griwrm
 
diff --git a/DESCRIPTION b/DESCRIPTION
index a2dd4e5dc542754785841ccaa67bde76ac2da49c..73e5abd1deeb0c486ee7a72e3c1ae260392ed9ce 100644
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -8,7 +8,7 @@ Authors@R:
            email = "david.dorchies@inrae.fr",
            comment = c(ORCID = "0000-0002-6595-7984"))
 Description: This R package aims to model water basin with a airGR based semi-distributive hydrology with the integration of human infrastructures and their management.
-License: LGPL (>= 2.1)
+License: AGPL-3
 Encoding: UTF-8
 LazyData: true
 Roxygen: list(markdown = TRUE)
@@ -16,8 +16,11 @@ RoxygenNote: 7.1.0
 Imports:
     dplyr,
     utils,
-    airGR (>= 1.6.1.11)
-Suggests: 
+    airGR (>= 1.6.1.11),
+    methods
+Suggests:
     knitr,
-    rmarkdown
+    rmarkdown,
+    lattice
 VignetteBuilder: knitr
+URL: https://gitlab.irstea.fr/in-wop/griwrm
diff --git a/R/CreateInputsModel.Griwrm.R b/R/CreateInputsModel.Griwrm.R
index 9dc04d85f42a6f40231fcbfadf6e54e3c5527873..60ee8b08eddd50cd7646db4fe16396433b85185a 100644
--- a/R/CreateInputsModel.Griwrm.R
+++ b/R/CreateInputsModel.Griwrm.R
@@ -1,20 +1,19 @@
 #' Create InputsModel object for a GRIWRM network
 #'
-#' @param ginet
-#' @param girop
-#' @param gits
+#' @param x Ginet object describing the diagram of the semi-distributed model, see \code{[Ginet]}.
+#' @param girop Girop object giving the run-off model parameters, see \code{[Girop]}.
+#' @param gits Gits object giving the observation time series, see \code{[Gits]}.
+#' @param ... further arguments passed to \code{\link[airGR]{CreateInputsModel}}.
 #'
-#' @return
+#' @return GriwrmInputsModel object equivalent to airGR InputsModel object for a semi-distributed model (See \code{\link[airGR]{CreateInputsModel}})
 #' @export
-#'
-#' @examples
-CreateInputsModel.Griwrm <- function(ginet, girop, gits, verbose = TRUE) {
+CreateInputsModel.Griwrm <- function(x, girop, gits, ...) {
 
   InputsModel <- CreateEmptyGriwrmInputsModel()
 
-  for(id in getNodeRanking(ginet)) {
+  for(id in getNodeRanking(x)) {
     if(verbose) cat("CreateInputsModel.griwrm: Treating sub-basin", id, "...\n")
-    InputsModel[[id]] <- CreateOneGriwrmInputsModel(id, ginet, girop, gits)
+    InputsModel[[id]] <- CreateOneGriwrmInputsModel(id, x, girop, gits, ...)
   }
   return(InputsModel)
 }
@@ -22,9 +21,7 @@ CreateInputsModel.Griwrm <- function(ginet, girop, gits, verbose = TRUE) {
 
 #' Create an empty InputsModel object for GRIWRM nodes
 #'
-#' @return
-#'
-#' @examples
+#' @return \emph{GriwrmInputsModel} empty object
 CreateEmptyGriwrmInputsModel <- function() {
   InputsModel <- list()
   class(InputsModel) <- append(class(InputsModel), "GriwrmInputsModel")
@@ -34,14 +31,12 @@ CreateEmptyGriwrmInputsModel <- function() {
 
 #' Create one InputsModel for a GRIWRM node
 #'
-#' @param ginet
-#' @param girop
-#' @param gits
-#' @param id
-#'
-#' @return
+#' @param id string of the node identifier
+#' @param ginet See \code{[Ginet]}.
+#' @param girop See \code{[Girop]}.
+#' @param gits See \code{[Gits]}.
 #'
-#' @examples
+#' @return \emph{InputsModel} object for one.
 CreateOneGriwrmInputsModel <- function(id, ginet, girop, gits) {
   node <- ginet[ginet$id == id,]
   FUN_MOD <- girop$model[girop$id == id]
diff --git a/R/CreateInputsModel.R b/R/CreateInputsModel.R
index af0e7728de4c7f42efcb9448434de75521eb9513..5e7012b48e81a60759cfbb15460da712af9c55ac 100644
--- a/R/CreateInputsModel.R
+++ b/R/CreateInputsModel.R
@@ -1,12 +1,10 @@
-#' Create InputsModel object for either airGR or GRIWRM
+#' Create InputsModel object for either airGR or GR-IWRM
 #'
-#' @param x
-#' @param ...
+#' @param x First parameter determining which InputsModel object is created
+#' @param ... further arguments passed to or from other methods.
 #'
-#' @return
+#' @return InputsModel or GriwrmInputsObject object
 #' @export
-#'
-#' @examples
 CreateInputsModel <- function(x, ...) {
   UseMethod("CreateInputsModel", x)
 }
diff --git a/R/CreateInputsModel.default.R b/R/CreateInputsModel.default.R
index 6af61896d4bc7354053b30c1db7d27e9e95a5d66..3b3e5bab1c9ac8f57576a50b8c09d45b261624e0 100644
--- a/R/CreateInputsModel.default.R
+++ b/R/CreateInputsModel.default.R
@@ -1,35 +1,15 @@
 #' Wrapper for the airGR::CreateInputsModel function
 #'
-#' @param FUN_MOD
-#' @param DatesR
-#' @param Precip
-#' @param PrecipScale
-#' @param PotEvap
-#' @param TempMean
-#' @param TempMin
-#' @param TempMax
-#' @param ZInputs
-#' @param HypsoData
-#' @param NLayers
-#' @param QobsUpstr
-#' @param LengthHydro
-#' @param BasinAreas
-#' @param verbose
+#' @param x hydrological model function (e.g. \code{\link[airGR]{RunModel_GR4J}}, \code{\link[airGR]{RunModel_CemaNeigeGR4J}})
+#' @param ... further arguments passed to \code{\link[airGR]{CreateInputsModel}}.
 #'
-#' @return
+#' @return object of class \emph{InputsModel}, see \code{\link[airGR]{CreateInputsModel}} for details.
 #' @import airGR
 #' @export
+#' @seealso The original function in airGR package: \code{\link[airGR]{CreateInputsModel}}.
 #'
-#' @examples
-CreateInputsModel.default <- function(FUN_MOD,
-                                      DatesR,
-                                      Precip, PrecipScale = TRUE,
-                                      PotEvap = NULL,
-                                      TempMean = NULL, TempMin = NULL, TempMax = NULL,
-                                      ZInputs = NULL, HypsoData = NULL, NLayers = 5,
-                                      QobsUpstr = NULL, LengthHydro = NULL, BasinAreas = NULL,
-                                      verbose = TRUE) {
-  airGR::CreateInputsModel(FUN_MOD, DatesR, Precip, PrecipScale, PotEvap,
-                           TempMean, TempMin, TempMax, ZInputs, HypsoData, NLayers,
-                           QobsUpstr, LengthHydro, BasinAreas, verbose)
+CreateInputsModel.default <- function(x,
+                                      ...) {
+
+  airGR::CreateInputsModel(FUN_MOD = x, ...)
 }
diff --git a/R/CreateRunOptions.GriwrmInputsModel.R b/R/CreateRunOptions.GriwrmInputsModel.R
index a67b084cf7c57b0beecdbf68dbed19f0b5dd9100..f51a0a6233fdc281d2a7a475ab1515e29de65293 100644
--- a/R/CreateRunOptions.GriwrmInputsModel.R
+++ b/R/CreateRunOptions.GriwrmInputsModel.R
@@ -1,44 +1,17 @@
-#' Title
+#' Create \emph{GriwrmRunOptions} object for running and calibrating model in GR-IWRM.
 #'
-#' @param InputsModel
-#' @param IndPeriod_WarmUp
-#' @param IndPeriod_Run
-#' @param IniStates
-#' @param IniResLevels
-#' @param Imax
-#' @param Outputs_Cal
-#' @param Outputs_Sim
-#' @param MeanAnSolidPrecip
-#' @param IsHyst
-#' @param warnings
-#' @param verbose
+#' @param InputsModel object of class \emph{GriwrmInputsModel}, see \code{\link{CreateInputsModel.Griwrm}} for details.
+#' @param ... further arguments passed to \code{\link[airGR]{CreateOptions}}.
 #'
-#' @return
+#' @return \emph{GriwrmRunOptions} object for running and calibrating model in GR-IWRM.
 #' @export
-#'
-#' @examples
-CreateRunOptions.GriwrmInputsModel <- function(InputsModel, IndPeriod_WarmUp = NULL, IndPeriod_Run,
-                                               IniStates = NULL, IniResLevels = NULL, Imax = NULL,
-                                               Outputs_Cal = NULL, Outputs_Sim = "all",
-                                               MeanAnSolidPrecip = NULL, IsHyst = FALSE,
-                                               warnings = TRUE, verbose = TRUE) {
+CreateRunOptions.GriwrmInputsModel <- function(InputsModels, ...) {
+
   RunOptions <- list()
   class(RunOptions) <- append(class(RunOptions), "GriwrmRunOptions")
-  for(InputsModelBasin in InputsModel) {
-    RunOptions[[InputsModelBasin$id]] <- CreateRunOptions(
-      InputsModel = InputsModelBasin,
-      IndPeriod_WarmUp = IndPeriod_WarmUp,
-      IndPeriod_Run = IndPeriod_Run,
-      IniStates = IniStates,
-      IniResLevels = IniResLevels,
-      Imax = Imax,
-      Outputs_Cal = Outputs_Cal,
-      Outputs_Sim = Outputs_Sim,
-      MeanAnSolidPrecip = MeanAnSolidPrecip,
-      IsHyst = IsHyst,
-      warnings = warnings,
-      verbose = verbose
-    )
+
+  for(InputsModelBasin in InputsModels) {
+    RunOptions[[InputsModelBasin$id]] <- CreateRunOptions(InputsModel = InputsModelBasin, ...)
   }
   return(RunOptions)
 }
diff --git a/R/CreateRunOptions.InputsModel.R b/R/CreateRunOptions.InputsModel.R
index f451e687f8b7a3675e7dbfca7ce88f2f0fbe9139..ef6979194d59f0ded0589e2c4b3d2b55f00a2891 100644
--- a/R/CreateRunOptions.InputsModel.R
+++ b/R/CreateRunOptions.InputsModel.R
@@ -1,40 +1,13 @@
-#' Title
+#' Create \emph{RunOptions} object for airGR. See \code{\link[airGR]{CreateOptions}}.
 #'
-#' @param FUN_MOD
-#' @param InputsModel
-#' @param IndPeriod_WarmUp
-#' @param IndPeriod_Run
-#' @param IniStates
-#' @param IniResLevels
-#' @param Imax
-#' @param Outputs_Cal
-#' @param Outputs_Sim
-#' @param MeanAnSolidPrecip
-#' @param IsHyst
-#' @param warnings
-#' @param verbose
+#' @param InputsModel object of class \emph{InputsModel}, see \code{\link[airGR]{CreateInputsModel}} for details.
+#' @param ... further arguments passed to \code{\link[airGR]{CreateOptions}}.
 #'
-#' @return
+#' @return See \code{\link[airGR]{CreateOptions}}.
 #' @export
-#'
-#' @examples
-CreateRunOptions.InputsModel <- function(InputsModel,
-                                         IndPeriod_WarmUp = NULL, IndPeriod_Run,
-                                         IniStates = NULL, IniResLevels = NULL, Imax = NULL,
-                                         Outputs_Cal = NULL, Outputs_Sim = "all",
-                                         MeanAnSolidPrecip = NULL, IsHyst = FALSE,
-                                         warnings = TRUE, verbose = TRUE) {
+CreateRunOptions.InputsModel <- function(InputsModel, ...) {
+
   airGR::CreateRunOptions(FUN_MOD = InputsModel$FUN_MOD,
                           InputsModel = InputsModel,
-                          IndPeriod_WarmUp = IndPeriod_WarmUp,
-                          IndPeriod_Run = IndPeriod_Run,
-                          IniStates = IniStates,
-                          IniResLevels = IniResLevels,
-                          Imax = Imax,
-                          Outputs_Cal = Outputs_Cal,
-                          Outputs_Sim = Outputs_Sim,
-                          MeanAnSolidPrecip = MeanAnSolidPrecip,
-                          IsHyst = IsHyst,
-                          warnings = warnings,
-                          verbose = verbose)
+                          ...)
 }
diff --git a/R/CreateRunOptions.R b/R/CreateRunOptions.R
index 55b0a8046c4da5ef7fd7aac8e04f07edfb0727e2..a535d8640aa5cec277674f1e0c46b61b26969554 100644
--- a/R/CreateRunOptions.R
+++ b/R/CreateRunOptions.R
@@ -1,12 +1,10 @@
-#' Title
+#' Create \emph{RunOptions} object for airGR and GR-IWRM. See \code{\link[airGR]{CreateOptions}} and \code{[CreateOptions.GriwrmInputsModel]}.
 #'
-#' @param ...
-#' @param InputsModel
+#' @param InputsModel object of class \emph{InputsModel} (see \code{\link[airGR]{CreateInputsModel}}) or \emph{GriwrmInputsModel} (See \code{[CreateInputsModel.Griwrm]}).
+#' @param ... further arguments passed to or from other methods.
 #'
-#' @return
+#' @return Object of \emph{RunOptions} class family
 #' @export
-#'
-#' @examples
 CreateRunOptions <- function(InputsModel, ...) {
   UseMethod("CreateRunOptions", InputsModel)
 }
diff --git a/R/RunModel.GriwrmInputsModel.R b/R/RunModel.GriwrmInputsModel.R
index 87e2210dc79c7015970e9fd4c5a4a42ac7f8856a..e508ba6b051bb401d44e68195c32393e42724177 100644
--- a/R/RunModel.GriwrmInputsModel.R
+++ b/R/RunModel.GriwrmInputsModel.R
@@ -1,46 +1,31 @@
 #' Title
 #'
-#' @param ginet
-#' @param girop
-#' @param gits
-#' @param IndPeriod_Run
-#' @param IndPeriod_WarmUp
+#' @param InputsModel object of class \emph{GriwrmInputsModel}, see \code{[CreateInputsModel.Griwrm]} for details.
+#' @param RunOptions object of class \emph{GriwrmRunOptions}, see \code{[CreateRunOptions.Griwrm]} for details.
+#' @param girop Girop object giving the run-off model parameters, see \code{[Girop]}.
+#' @param verbose (optional) boolean indicating if the function is run in verbose mode or not, default = \code{TRUE}
+#' @param ... Mandatory for S3 method signature function compatibility with generic.
 #'
-#' @return
+#' @return \emph{GriwrmOutputsModel} object which is a list of \emph{OutputsModel} objects (See \code{\link[airGR]{RunModel}}) for each node of the semi-distributed model.
 #' @export
-#'
-#' @examples
-RunModel.GriwrmInputsModel <- function(InputsModel, RunOptions, girop, verbose = TRUE) {
+RunModel.GriwrmInputsModel <- function(InputsModel, RunOptions, girop, verbose = TRUE, ...) {
 
-  OutputsModels <- list()
+  OutputsModel <- list()
+  class(OutputsModel) <- append(class(OutputsModel), "GriwrmOutputsModel")
 
   for(IM in InputsModel) {
     if(verbose) cat("RunModel.GriwrmInputsModel: Treating sub-basin", IM$id, "...\n")
 
     # Update InputsModel$QobsUpstr with simulated upstream flows
-    if(length(IM$UpstreamNodes) > 0) {
-      for(i in 1:length(IM$UpstreamNodes)) {
-        QobsUpstr1 <- matrix(
-          c(
-            rep(0, length(RunOptions[[IM$id]]$IndPeriod_WarmUp)),
-            OutputsModels[[IM$UpstreamNodes[i]]]$Qsim
-          ), ncol = 1
-        )
-        if(i == 1) {
-          IM$QobsUpstr <- QobsUpstr1
-        } else {
-          IM$QobsUpstr <- cbind(IM$QobsUpstr, QobsUpstr1)
-        }
-      }
-    }
+    IM <- UpdateQsimUpstream(IM, OutputsModel)
 
     # Run the model for the sub-basin
-    OutputsModels[[IM$id]] <- RunModel(
+    OutputsModel[[IM$id]] <- RunModel(
       InputsModel = IM,
       RunOptions = RunOptions[[IM$id]],
       Param = unlist(girop$params[girop$id == IM$id])
     )
 
   }
-  return(OutputsModels)
+  return(OutputsModel)
 }
diff --git a/R/RunModel.InputsModel.R b/R/RunModel.InputsModel.R
index 5aef686331dc21f2e5682e7e7983f632a71c3482..3b94045a3c66301260ec283d35909774804f208a 100644
--- a/R/RunModel.InputsModel.R
+++ b/R/RunModel.InputsModel.R
@@ -7,9 +7,7 @@
 #'
 #' @return
 #' @export
-#'
-#' @examples
-RunModel.InputsModel <- function(InputsModel, RunOptions, Param, FUN_MOD = NULL) {
+RunModel.InputsModel <- function(InputsModel, RunOptions, Param, FUN_MOD = NULL, ...) {
   if(is.null(FUN_MOD)) {
     FUN_MOD <- InputsModel$FUN_MOD
   }
diff --git a/R/RunModel.R b/R/RunModel.R
index 89b202eb98c1c608196d8f82922c24ba4d7700a3..fdd50dce2960cce3ccc3839af2cd2cb15e0a7f8b 100644
--- a/R/RunModel.R
+++ b/R/RunModel.R
@@ -1,12 +1,10 @@
 #' RunModel function for both airGR and GriwrmInputsModel object
 #'
-#' @param InputsModel
-#' @param ...
+#' @param InputsModel object of class \emph{InputsModel}, see \code{\link[airGR]{CreateInputsModel}} for details.
+#' @param ... further arguments passed to or from other methods.
 #'
 #' @return
 #' @export
-#'
-#' @examples
 RunModel <- function(InputsModel, ...) {
   UseMethod("RunModel", InputsModel)
 }
diff --git a/R/UpdateQsimUpstream.R b/R/UpdateQsimUpstream.R
new file mode 100644
index 0000000000000000000000000000000000000000..560984ac03f20153f9a27cc03afea5149b1e85ef
--- /dev/null
+++ b/R/UpdateQsimUpstream.R
@@ -0,0 +1,27 @@
+#' Update InputsModel$QobsUpstr with simulated upstream flows provided by GriwrmOutputsModels object.
+#'
+#' @param InputsModel \emph{GriwrmInputsModel} object. See \code{[CreateInputsModel.Griwrm]}.
+#' @param OutputsModels \emph{GriwrmOutputsModel} object provided by \code{[RunModel.GriwrmInputsModel]}.
+#'
+#' @description This function is used by \code{\link{RunModel.GriwrmInputsModel}} and \code{\link{Calibration.GriwrmInputsModel}} in order to provide upstream simulated flows to a node.
+#'
+#' @return InputsModel object with updated QobsUpsr
+#'
+UpdateQsimUpstream <- function(InputsModel, OutputsModels) {
+  if(length(InputsModel$UpstreamNodes) > 0) {
+    for(i in 1:length(InputsModel$UpstreamNodes)) {
+      QobsUpstr1 <- matrix(
+        c(
+          rep(0, length(RunOptions[[InputsModel$id]]$IndPeriod_WarmUp)),
+          OutputsModels[[InputsModel$UpstreamNodes[i]]]$Qsim
+        ), ncol = 1
+      )
+      if(i == 1) {
+        InputsModel$QobsUpstr <- QobsUpstr1
+      } else {
+        InputsModel$QobsUpstr <- cbind(InputsModel$QobsUpstr, QobsUpstr1)
+      }
+    }
+  }
+  return(InputsModel)
+}
diff --git a/R/ginet.R b/R/ginet.R
index 7a95be07465ec835393d61a95cbb0214f6364d3c..15512295019177dae7f2a5e1bdddb65deb93bd23 100644
--- a/R/ginet.R
+++ b/R/ginet.R
@@ -1,14 +1,12 @@
 #' Generate a network description containing all hydraulic nodes and the description
 #' of their connections
 #'
-#' @param db A tibble or a dataframe containing at least the id and the description of the connections
-#' @param cols
+#' @param db A tibble or a data frame containing at least columns with the id (column `id`), the id and the hydraulic distance to the node downstream (columns `down` and `length`) and a boolean determining whether the node is a rainfall run-off model or not (column `runoff`). The last downstream node should have fields `down` and `length` set to `NA`.
+#' @param cols named list or vector for matching columns of `db` parameter. By default, mandatory columns names are: `id`, `down`, `length`. But other names can be handled with a named list or vector containing items defined as `"required name" = "column name in db"`.
 #' @param keep_all Keep all column of `db` or keep only columns defined in `cols`
 #'
-#' @return
+#' @return `Ginet` class object containing the description of diagram of the semi-distributed catchment model
 #' @export
-#'
-#' @examples
 Ginet <- function(db, cols = list(id = "id", down = "down", length = "length", runoff = "runoff"), keep_all = FALSE) {
   colsDefault <- list(id = "id", down = "down", length = "length", runoff = "runoff")
   cols <- utils::modifyList(colsDefault, as.list(cols))
@@ -20,14 +18,12 @@ Ginet <- function(db, cols = list(id = "id", down = "down", length = "length", r
   db
 }
 
-#' Title
+#' Sort the nodes from upstream to downstream.
 #'
-#' @param ginet
+#' @param ginet See \code{[Ginet]}.
 #'
-#' @return
+#' @return vector with the ordered node names.
 #' @export
-#'
-#' @examples
 getNodeRanking <- function(ginet) {
   if(!is(ginet, "Ginet")) {
     stop("getNodeRanking: ginet argument should be of class Ginet")
diff --git a/R/girop.R b/R/girop.R
index 45861aad6c4abb3b3dc9fd647311d83c82a8ca87..7225bdcde2eadcf5dee35b2c24e4481681dd7ce9 100644
--- a/R/girop.R
+++ b/R/girop.R
@@ -1,13 +1,11 @@
 #' Generate the list of run-off models and their parameters
 #'
-#' @param db dataframe containing at least the id and the area of the sub-basin
-#' @param cols
+#' @param db data frame containing at least the id the area and the model of the sub-basin.
+#' @param cols named list or vector for matching columns of `db` parameter. By default, mandatory columns names are: `id`, `area`, `model`. But other names can be handled with a named list or vector containing items defined as `"required name" = "column name in db"`.
 #' @param keep_all Keep all column of `db` or keep only columns defined in `cols`
 #'
-#' @return
+#' @return \emph{Girop} object.
 #' @export
-#'
-#' @examples
 Girop <- function(db, cols = c(id = "id", area = "area", model = "model", params = "params"), keep_all = FALSE) {
   colsDefault <- list(id = "id", area = "area", model = "model", params = "params")
   cols <- utils::modifyList(colsDefault, as.list(cols))
diff --git a/R/gits.R b/R/gits.R
index ad0f31ad232704494c5ab656551e9e3005dd81cc..929fbc38b2e52eb1b3ba1eed7f891ca09e8f7e53 100644
--- a/R/gits.R
+++ b/R/gits.R
@@ -1,13 +1,11 @@
 #' Title
 #'
-#' @param id
-#' @param ts
-#' @param cols
+#' @param id string of the id of the node
+#' @param ts numeric matrix or data frame containing 3 columns for precipitation, evaporation, and observed flow
+#' @param cols named list or vector used for matching the columns of ts with the required columns names which are "Precip", "PotEvap", and "Qobs".
 #'
-#' @return
+#' @return \emph{Gits} class object which is a list containing a `date` element (Vector of PosiXlt timestamps) and an element named the id of the node containing a dataframe with observed data.
 #' @export
-#'
-#' @examples
 Gits <- function(id, ts,
                  cols = list(date = "date", Precip = "Precip", PotEvap = "PotEvap", Qobs = "Qobs")) {
 
@@ -28,16 +26,15 @@ Gits <- function(id, ts,
   gitsOut
 }
 
-#' Title
+#' Merge two gits objects with identical date time series.
 #'
-#' @param x
-#' @param y
+#' @param x Gits object to merge (See [Gits]).
+#' @param y Gits object to merge (See [Gits]).
+#' @param ... For merge generic function compatibility.
 #'
-#' @return
+#' @return Gits object merged with one item `Date` and Items corresponding to each node.
 #' @export
-#'
-#' @examples
-merge.Gits <- function(x, y) {
+merge.Gits <- function(x, y, ...) {
   if(!is(y, "Gits")) {
     stop("A Gits class object can only be merged with a Gits class object")
   }
diff --git a/vignettes/V01_First_network.Rmd b/vignettes/V01_First_network.Rmd
index 8e7974f884df3f452a3a32a601afdffa5e2050f9..d2fc99f550778aff4c65b7c931938aa65f1bed47 100644
--- a/vignettes/V01_First_network.Rmd
+++ b/vignettes/V01_First_network.Rmd
@@ -1,8 +1,10 @@
 ---
 title: 'Tutorial: structuration of a semi-distributive GR model'
 author: "David Dorchies"
-date: "19 mai 2020"
-output: html_document
+vignette: >
+  %\VignetteIndexEntry{Tutorial: structuration of a semi-distributive GR model}
+  %\VignetteEngine{knitr::rmarkdown}
+  %\VignetteEncoding{UTF-8}
 ---
 
 ```{r setup, include=FALSE}
diff --git a/vignettes/v02_First_run.Rmd b/vignettes/v02_First_run.Rmd
index e965f2906502e8b1b4c1d431cdd13ef99be392fa..d65efb7763203774fe370484299adaa72c4e0b42 100644
--- a/vignettes/v02_First_run.Rmd
+++ b/vignettes/v02_First_run.Rmd
@@ -1,8 +1,10 @@
 ---
 title: "First run of the model"
 author: "David Dorchies"
-date: "20 mai 2020"
-output: html_document
+vignette: >
+  %\VignetteIndexEntry{First run of the model}
+  %\VignetteEngine{knitr::rmarkdown}
+  %\VignetteEncoding{UTF-8}
 ---
 
 ```{r setup, include=FALSE}