diff --git a/R/shiny-ui-base.R b/R/shiny-ui-base.R
index a4ed47b575ba839bc9db1a39ed4389b2bd7fa286..aa681cecb92cce7c1635f8e78121e7c584b642f7 100644
--- a/R/shiny-ui-base.R
+++ b/R/shiny-ui-base.R
@@ -278,6 +278,21 @@ styled_dt <- function(tab,style = 'bootstrap',
     
 }
 
+render_dt <- function(data, server = T) {
+    DT::renderDT(data, server = server)
+}
+
+simple_style_dt <- function(tab,
+                            style = 'bootstrap',
+                            class = 'table-bordered table-condensed',
+                            rownames = F, ...) {
+    DT::datatable(tab,
+                  style = style,
+                  class = class,
+                  rownames = rownames,
+                  ...)
+}
+
 
 mk_shinyscreen_server <- function(projects,init) {
     ## This used to be context='setup'.
@@ -526,8 +541,10 @@ mk_shinyscreen_server <- function(projects,init) {
             ## Files
             if (isTruthy(in_conf$data)) {
                 df <- shinyscreen:::file2tab(in_conf$data)
-                df[,tag:=as.character(tag),with=T]
-                rv_dfile(df[,.(file,tag),by=c("file","tag"),mult="first"][,file:=NULL])
+                dfile <- data.table::copy(df[,tag:=as.character(tag),with=T])
+                dfile <- dfile[,unique(.SD),.SDcol=c("file","tag")]
+                ## rv_dfile(df[,.(file,tag),by=c("file","tag"),mult="first"][,file:=NULL])
+                rv_dfile(dfile)
                 nms <- colnames(df)
                 nms <- nms[nms!="file"]
                 fdt <- df[,..nms]
@@ -694,14 +711,15 @@ mk_shinyscreen_server <- function(projects,init) {
                  set=as.character(set)), with = T]
         })
 
-        rf_get_inp_datafiles <- eventReactive(input$datafiles,{
-            z <- data.table::as.data.table(tryCatch(rhandsontable::hot_to_r(input$datafiles)),
-                                           error = function(e) def_datafiles)
+        ## rf_get_inp_datafiles <- reactive({
+        ##     input$datafiles
+        ##     input$datafiles_cell_edit
 
-            
-            z[,.(file,
-                 tag=as.character(tag)), with = T]
-        })
+        ##     isolate({
+        ##         z <- DT::editData(rv_dfiles(),input$datafiles_cell_edit,'datafiles')
+                
+        ##         if (isTruthy(z)) z else def_datafiles})
+        ## })
 
         rf_summ_table_rows <- eventReactive(input$summ_table_rows_all,{
             input$summ_table_rows_all
@@ -1071,13 +1089,21 @@ mk_shinyscreen_server <- function(projects,init) {
             
         })
 
+        observeEvent(input$datafiles_cell_edit,{
+            z <- DT::editData(rv_dfile(),
+                              input$datafiles_cell_edit,
+                              rownames = F)
+            rv_dfile(z)
+            
+        }, label = "datafiles-edit")
+        
         observeEvent(input$datafiles_b,{
             sels <- input$dfile_list
             req(isTruthy(sels))
             dfiles <- file.path(rvs$m$conf$indir,sels)
             message("(config) Selected mzMl files: ", paste(sels,collapse = ","))
             if (length(dfiles) > 0) {
-                oldtab <- rf_get_inp_datafiles()
+                oldtab <- rv_dfile()
                 
                 newf <- setdiff(dfiles,oldtab$file)
                 nr <- NROW(oldtab)
@@ -1090,7 +1116,7 @@ mk_shinyscreen_server <- function(projects,init) {
         })
 
         observe({
-            df_tab <- rf_get_inp_datafiles()
+            df_tab <- rv_dfile()#rf_get_inp_datafiles()
             state <- rf_compound_input_state()
             isolate(oldtab <- rf_get_inp_datatab())
             
@@ -1138,8 +1164,8 @@ mk_shinyscreen_server <- function(projects,init) {
 
         observe({
             dtab <- rf_get_inp_datatab()
-            dfiles <- rf_get_inp_datafiles()
-
+            dfiles <- rv_dfile() #rf_get_inp_datafiles()
+            req(isTruthy(dfiles) && NROW(dfiles)>0)
             message("(config) Generating mzml from inputs.")
             res <- dtab[dfiles,on="tag"]
             isolate(rvs$m$input$tab$mzml <- res)
@@ -1511,14 +1537,15 @@ mk_shinyscreen_server <- function(projects,init) {
         output$order_summ <- rhandsontable::renderRHandsontable(rhandsontable::rhandsontable(def_ord_summ,
                                                                                              manualRowMove = T))
 
-        output$datafiles <- rhandsontable::renderRHandsontable(
+        output$datafiles <- DT::renderDT(
         {
             res <- rv_dfile()
-            rhandsontable::rhandsontable(as.data.frame(res),
-                                         width = "50%",
-                                         height = "25%",
-                                         allowInvalid=F)
-        })
+            req(isTruthy(res))
+            res$tag <- as.factor(res$tag)
+            simple_style_dt(res, editable = list(target = "column",
+                                                 disable= list(columns=0)))
+        },
+        server = T)
 
         output$datatab <- rhandsontable::renderRHandsontable(
         {
diff --git a/inst/rmd/app.Rmd b/inst/rmd/app.Rmd
index 00c0ef6250c968af91972233f321fdbf6389ad74..6c483b31c98bc92dc637d3e60c720b7991f6fc0d 100644
--- a/inst/rmd/app.Rmd
+++ b/inst/rmd/app.Rmd
@@ -247,8 +247,7 @@ tags.
 </details>
 
 ```{r, echo=FALSE}
-rhandsontable::rHandsontableOutput("datafiles")
-
+DT::DTOutput("datafiles",width="25%")
 ```