diff --git a/R/shiny-ui-base.R b/R/shiny-ui-base.R
index a7f7db45d0881a276f5cb8f201ed5ec7db162251..9f52e56bb5f985e8cae2031b96b55345424b48ce 100644
--- a/R/shiny-ui-base.R
+++ b/R/shiny-ui-base.R
@@ -101,3 +101,22 @@ lst2rv_lst <- function(lst) {
     if (class(lst) != "list")
         lst else do.call(react_v,lapply(lst,lst2rv_lst))
 }
+
+txt2tags <- function(txt) {
+    ## Turns a string into tags
+    x <- if (shiny::isTruthy(txt)) {
+             trimws(unlist(strsplit(txt, ",")))
+         } else list()
+    
+    
+    as.list(c("unspecified",x))
+}
+
+combine_tags <- function(df_tags,txt_tags) {
+    diff <- setdiff(df_tags,txt_tags)
+    for (x in diff) df_tags[df_tags %in% x] <- "unspecified"
+    df_tags <- factor(as.character(df_tags))
+    df_tags <- factor(as.character(df_tags),levels = unique(c('unspecified',levels(df_tags),txt_tags)))
+    df_tags
+}
+