diff --git a/R/revealjs_presentation.R b/R/revealjs_presentation.R
index 8ddb818..360465b 100644
--- a/R/revealjs_presentation.R
+++ b/R/revealjs_presentation.R
@@ -136,40 +136,21 @@
 
   # additional reveal options
   if (is.list(reveal_options)) {
-    add_reveal_option <- function(option, value) {
-      if (is.logical(value)) {
-        value <- jsbool(value)
-      } else if (is.character(value)) {
-        # Special handling for some chalkboard plugin options
-        # e.g: color: [ 'rgba(0,0,255,1)', 'rgba(255,255,255,0.5)' ]
-        if (grepl("chalkboard-(background|color|draw|pen)", option)) {
-          value <- sprintf("[%s]", paste(paste0("'", value, "'"), collapse = ", "))
-        }
-        # Add quotes around some config that can be several type
-        # like number or percent unit or slideNumber = true or slideNumber = 'c/t'
-        if (
-          option %in% c("slideNumber") ||
-            (option %in% c("width", "height") && grepl("%$", value))) {
-          value <- paste0("'", value, "'")
-        }
-      }
-      args <<- c(args, pandoc_variable_arg(option, value))
-    }
-
     for (option in names(reveal_options)) {
       # special handling for nested options
       if (option %in% c("chalkboard", "menu")) {
         nested_options <- reveal_options[[option]]
         for (nested_option in names(nested_options)) {
-          add_reveal_option(
-            paste0(option, "-", nested_option),
-            nested_options[[nested_option]]
+          args <- c(args, 
+                    process_reveal_option(
+                      paste0(option, "-", nested_option),
+                      nested_options[[nested_option]]
+                    )
           )
         }
-      }
-      # standard top-level options
-      else {
-        add_reveal_option(option, reveal_options[[option]])
+      } else { 
+        # standard top-level options
+        args <- c(args, process_reveal_option(option, reveal_options[[option]]))
       }
     }
   }
