diff --git a/DESCRIPTION b/DESCRIPTION
index d854b0b5f2dba062d84194aa08046c764261539f..123b2f7707c4d3420de0a5d48e63e74fd11cdd96 100644
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -1,7 +1,7 @@
 Package: Mediawikir
 Type: Package
 Title: Connects to a mediawiki instance and writes in it what you want
-Version: 0.1.7
+Version: 0.1.8
 Author: Mathieu Loiseau
 Maintainer: Mathieu Loiseau <loiseaum@univ-grenoble-alpes.fr>
 Description: Mediawikir class can be used to post the output of an R script directly into a mediawiki instance. Batchator class allows batch page creation.
diff --git a/NAMESPACE b/NAMESPACE
index e14d0e21b03b55659dbff25cb17a411eb2416cfb..c13fc07e665ddfcf24b61835318cd0ca7a3136c3 100644
--- a/NAMESPACE
+++ b/NAMESPACE
@@ -7,4 +7,5 @@ importFrom(httr,POST)
 importFrom(httr,content)
 importFrom(httr,stop_for_status)
 importFrom(httr,upload_file)
+importFrom(stringr,str_replace)
 importFrom(stringr,str_replace_all)
diff --git a/R/class.R b/R/class.R
index c78499e77c1abb349b2b483facb6a2805a7635c5..2a65616a101c36d9b5f6740a6b3c06b516d13551 100644
--- a/R/class.R
+++ b/R/class.R
@@ -11,13 +11,15 @@ library(stringr)
 #'@importFrom httr stop_for_status
 #'@importFrom httr upload_file
 #'@importFrom httr content
+#'@importFrom stringr str_replace
 #'@export
 #'@keywords mediawiki
 #'@description A Mediawikir controller serves to connect to a mediawiki API as a registered user in order to edit automatically certain documents based on R scripts
 #'@format An \code{\link{R6Class}} generator object
 #'@return Object of \code{\link{R6Class}} with methods to interact with mediawiki instance
-#'@field url the mediawiki instance base url
-#'@field auth_token the current token used to edit the wiki (cf. https://www.mediawiki.org/wiki/Manual:Edit_token)
+#'@field base_url the mediawiki instance base url
+#'@field api the mediawiki instance API base url
+#'@field auth_token the current token used to edit the wiki (cf. \href{https://www.mediawiki.org/wiki/Manual:Edit_token}{Mediawiki API documentation})
 #'@field page the page (name or id) which will be modified (including its namespace, if the name is provided)
 #'@field content the future content of \code{page}, which will be incrementally constructed using object methods
 #'@field user_name the user to credit for the changes
@@ -32,7 +34,7 @@ library(stringr)
 #'  mwHandler$postContent()
 #'@section Methods:
 #'\describe{
-#'  \item{\code{initialize(instance_url, user, pass)}}{Creates a new Mediawikir object out of:
+#'  \item{\code{initialize(instance_url, user, pass)}}{Creates a new \pkg{Mediawikir} object out of:
 #'  \describe{
 #'    \item{\code{instance_url}}{The base url to the mediawiki instance}
 #'    \item{\code{user}}{The screen name of the user who will be credited for the changes in the wiki}
@@ -42,7 +44,7 @@ library(stringr)
 #'  \describe{
 #'    \item{\code{pageNameOrId}}{The name (or id) of the wiki page which contains the changes}
 #'  }}
-#'  \item{\code{connect(pass)}}{Should not be called directly (see initialize for detail)}
+#'  \item{\code{connect(pass)}}{Should not be called directly (see \code{initialize} for detail)}
 #'  \item{\code{resetContent(baseContent="")}}{To reset the content of the page for the next post
 #'  \describe{
 #'    \item{\code{baseContent}}{The wikitext base for the next post}
@@ -65,10 +67,21 @@ library(stringr)
 #'    \item{\code{file_name}}{Name under which to store it}
 #'    \item{Returns the title of the wiki page containing the file or \code{FALSE} on error}{}
 #'  }}
+#'  \item{\code{getContent()}}{Returns the \emph{wikitext} of the selected page (cf. \code{setPage})}
+#'  \item{\code{replaceSingleLineTemplateField(template, field, newValue)}}{To replace a field of a template in the selected \code{page}.\\
+#'         This method does not work with numbered parameters.\\
+#'         Right now it works only for pages that only contain one occurence of the parameter (it does not take outer context into account)\\
+#'         Additionnally, this function is not meat for templates the value of which spans accross multiple lines.
+#'  \describe{
+#'    \item{\code{template}}{The template to look for}
+#'    \item{\code{field}}{The name of the field concerned}
+#'    \item{\code{newValue}}{The new value of the field}
+#'  }}
 #'}
 Mediawikir <- R6Class("Mediawikir",
  public = list(
-   url = NULL,
+   base_url = NULL,
+   api = NULL,
    user_name = NULL,
    auth_token = NULL,
    page = "",
@@ -78,7 +91,7 @@ Mediawikir <- R6Class("Mediawikir",
      "une super mĂŠthode"
      tryCatch(
        { #get login token
-         query <- httr::POST(self$url,
+         query <- httr::POST(self$api,
                              body = list(action="query",
                                          meta="tokens",
                                          type="login",
@@ -89,12 +102,12 @@ Mediawikir <- R6Class("Mediawikir",
          response <- httr::content(query, "parsed", "application/json")
          token <- response$query$tokens$logintoken
          #login query
-         query <- httr::POST(self$url,
+         query <- httr::POST(self$api,
                              body = list(action="clientlogin",
                                          username = self$user_name,
                                          password = pass,
                                          logintoken = token,
-                                         loginreturnurl="http://wiki.lezinter.net",
+                                         loginreturnurl = self$base_url,
                                          format= "json"))
          httr::stop_for_status(query)
          #parse query response to make sure login worked
@@ -105,7 +118,7 @@ Mediawikir <- R6Class("Mediawikir",
        },
        error = function(e)
        {
-         print(paste("Could not login",self$user_name,"to", self$url, e$message))
+         print(paste("Could not login",self$user_name,"to", self$api, e$message))
          token <- 0
        }
      )
@@ -117,7 +130,8 @@ Mediawikir <- R6Class("Mediawikir",
    ######
    initialize = function (instance_url, user, pass){
      tryCatch({
-       self$url <- paste(instance_url,"/","api.php",sep="")
+       self$base_url <- instance_url
+       self$api <- paste(instance_url,"/","api.php",sep="")
        self$user_name <- user
        self$auth_token <- self$connect(pass)
      },
@@ -183,7 +197,7 @@ Mediawikir <- R6Class("Mediawikir",
                             format  = "json")
            }
            #get edit token
-           query <- httr::POST(self$url,
+           query <- httr::POST(self$api,
                                body = fields)
            httr::stop_for_status(query)
            response <- httr::content(query, "parsed", "application/json")
@@ -206,7 +220,7 @@ Mediawikir <- R6Class("Mediawikir",
                             text     = self$content,
                             token    = response$query$tokens$csrftoken)
            }
-           query <- httr::POST(self$url,
+           query <- httr::POST(self$api,
                                body = fields)
            httr::stop_for_status(query)
            response <- httr::content(query, "parsed", "application/json")
@@ -222,6 +236,55 @@ Mediawikir <- R6Class("Mediawikir",
      return(success)
    },
 
+   ######
+   # getContent
+   ######
+   getContent = function(){
+     success <- TRUE
+     tryCatch(
+       { #Verify that a page has been selected
+         if(self$page == ""){
+           warning("No page to update to, use “setPage” method before calling “getContent”.")
+         }
+         else{
+           if(is.character(self$page)){
+             fields <- list(action  = "raw",
+                            title  = self$page)
+           }
+           else{
+             fields <- list(action  = "raw",
+                            curid = self$page)
+           }
+           #get edit token
+           query <- httr::POST(paste(self$base_url,"index.php",sep="/"),
+                               body = fields)
+           httr::stop_for_status(query)
+           response <- httr::content(query)
+           success <- response
+         }
+       },
+       error = function(e){
+         print(e$message)
+         success <- FALSE
+       })
+     return(success)
+   },
+
+   ######
+   # replaceSingleLineTemplateField
+   ######
+   replaceSingleLineTemplateField = function(field="", newValue="", template=""){
+     success <- self$getContent()
+     if(success != FALSE){
+       search <- paste("\\|", field, "\\=[^\\|\\}\\n]*", sep="")
+       replace <- paste("|", field, "=",newValue, sep="")
+       self$resetContent()
+       self$addContent(str_replace(success, search, replace))
+       success <- self$postContent()
+     }
+     return(success)
+   },
+
    ######
    # uploadFile
    ######
@@ -229,7 +292,7 @@ Mediawikir <- R6Class("Mediawikir",
      success <- TRUE
      tryCatch(
        { #get edit token
-         query <- httr::POST(self$url,
+         query <- httr::POST(self$api,
                              body = list(action  = "query",
                                          prop    = "info|revisions",
                                          meta    = "tokens",
@@ -240,7 +303,7 @@ Mediawikir <- R6Class("Mediawikir",
          response <- httr::content(query, "parsed", "application/json")
          #perform edit
          the_file <- upload_file(file_path)
-         query <- httr::POST(self$url,
+         query <- httr::POST(self$api,
                              body = list(action   = "upload",
                                          filename = file_name,
                                          comment  = "R generated content",
diff --git a/man/Mediawikir.Rd b/man/Mediawikir.Rd
index 872b02a5be381c0322f0de10eed539de734989c2..f4d05c868e9c5a66adca5dc8bc2030ad7ef4624c 100644
--- a/man/Mediawikir.Rd
+++ b/man/Mediawikir.Rd
@@ -17,9 +17,11 @@ A Mediawikir controller serves to connect to a mediawiki API as a registered use
 \section{Fields}{
 
 \describe{
-\item{\code{url}}{the mediawiki instance base url}
+\item{\code{base_url}}{the mediawiki instance base url}
 
-\item{\code{auth_token}}{the current token used to edit the wiki (cf. https://www.mediawiki.org/wiki/Manual:Edit_token)}
+\item{\code{api}}{the mediawiki instance API base url}
+
+\item{\code{auth_token}}{the current token used to edit the wiki (cf. \href{https://www.mediawiki.org/wiki/Manual:Edit_token}{Mediawiki API documentation})}
 
 \item{\code{page}}{the page (name or id) which will be modified (including its namespace, if the name is provided)}
 
@@ -31,7 +33,7 @@ A Mediawikir controller serves to connect to a mediawiki API as a registered use
 \section{Methods}{
 
 \describe{
- \item{\code{initialize(instance_url, user, pass)}}{Creates a new Mediawikir object out of:
+ \item{\code{initialize(instance_url, user, pass)}}{Creates a new \pkg{Mediawikir} object out of:
  \describe{
    \item{\code{instance_url}}{The base url to the mediawiki instance}
    \item{\code{user}}{The screen name of the user who will be credited for the changes in the wiki}
@@ -41,7 +43,7 @@ A Mediawikir controller serves to connect to a mediawiki API as a registered use
  \describe{
    \item{\code{pageNameOrId}}{The name (or id) of the wiki page which contains the changes}
  }}
- \item{\code{connect(pass)}}{Should not be called directly (see initialize for detail)}
+ \item{\code{connect(pass)}}{Should not be called directly (see \code{\link[MEDIAWIKIR]{initialize}} for detail)}
  \item{\code{resetContent(baseContent="")}}{To reset the content of the page for the next post
  \describe{
    \item{\code{baseContent}}{The wikitext base for the next post}
@@ -64,6 +66,16 @@ A Mediawikir controller serves to connect to a mediawiki API as a registered use
    \item{\code{file_name}}{Name under which to store it}
    \item{Returns the title of the wiki page containing the file or \code{FALSE} on error}{}
  }}
+ \item{\code{getContent()}}{Returns the \emph{wikitext} of the selected page (cf. \code{setPage})}
+ \item{\code{replaceSingleLineTemplateField(template, field, newValue)}}{To replace a field of a template in the selected \code{page}.\\
+        This method does not work with numbered parameters.\\
+        Right now it works only for pages that only contain one occurence of the parameter (it does not take outer context into account)\\
+        Additionnally, this function is not meat for templates the value of which spans accross multiple lines.
+ \describe{
+   \item{\code{template}}{The template to look for}
+   \item{\code{field}}{The name of the field concerned}
+   \item{\code{newValue}}{The new value of the field}
+ }}
 }
 }