diff --git a/internals.R b/internals.R
index 9e28081741782eac1376938e837596f3b2259526..f64c46fab8a264c070563ef342c402feaf350f24 100644
--- a/internals.R
+++ b/internals.R
@@ -47,4 +47,16 @@
   tdf[grep("unknown ", tdf)] <- NA
   #tdf[grep("Unclassified", tdf)] <- NA
   return(tdf)
-}
\ No newline at end of file
+}
+
+.import_from_rdata <- function(input) {
+  ## Happy path
+  ne <- new.env() ## new env to store RData content and avoid border effects
+  if (!is.null(input$fileRData))
+    load(input$fileRData$datapath, envir = ne)
+  if (class(ne$data) == "phyloseq")
+    return(ne$data)
+
+  ## Unhappy paths: everything else
+  return()
+}
diff --git a/server.R b/server.R
index 6ffde9dab0802b918db528e0d6636be59282e757..1ffc68e129b8b05d080d653930016dcda443034a 100644
--- a/server.R
+++ b/server.R
@@ -85,12 +85,16 @@ shinyServer
     ## Rdata input
     if (input$dataset == "rdata")
     {
+      ## .import_from_rdata(input) ## does not work as a function for some reason
+
       ## Happy path
+      ne <- new.env() ## new env to store RData content and avoid border effects
       if (!is.null(input$fileRData))
-        load(input$fileRData$datapath)
-      if (exists("data") && class(data) == "phyloseq")
-        return(data)
-      ## Unhappy path
+        load(input$fileRData$datapath, envir = ne)
+      if (class(ne$data) == "phyloseq")
+        return(ne$data)
+
+      ## Unhappy paths: everything else
       return()
     }