diff --git a/R/revealjs_presentation.R b/R/revealjs_presentation.R
index d8a83c8..7f9ace8 100644
--- a/R/revealjs_presentation.R
+++ b/R/revealjs_presentation.R
@@ -1,80 +1,83 @@
 #' Convert to a reveal.js presentation
-#'
+#' 
 #' Format for converting from R Markdown to a reveal.js presentation.
-#'
+#' 
 #' @inheritParams rmarkdown::beamer_presentation
 #' @inheritParams rmarkdown::pdf_document
 #' @inheritParams rmarkdown::html_document
-#'
+#'   
 #' @param center \code{TRUE} to vertically center content on slides
-#' @param theme Visual theme ("simple", "sky", "beige", "serif", 
-#'   "solarized", "blood", "moon", "night", "black", "league" or "white").
+#' @param slide_level Level of heading to denote individual slides. If
+#'   \code{slide_level} is 2 (the default), a two-dimensional layout will be
+#'   produced, with level 1 headers building horizontally and level 2 headers
+#'   building vertically. It is not recommended that you use deeper nesting of
+#'   section levels with reveal.js.
+#' @param theme Visual theme ("simple", "sky", "beige", "serif", "solarized",
+#'   "blood", "moon", "night", "black", "league" or "white").
 #' @param transition Slide transition ("default", "none", "fade", "slide", 
 #'   "convex", "concave" or "zoom")
-#' @param background_transition Slide background-transition ("default", "none", "fade", "slide", 
-#'   "convex", "concave" or "zoom")
-#' @param reveal_options Additional options to specify for reveal.js (see
-#'   \href{https://github.com/hakimel/reveal.js#configuration}{https://github.com/hakimel/reveal.js#configuration} for details). 
-#' @param template Pandoc template to use for rendering. Pass "default"
-#'   to use the rmarkdown package default template; pass \code{NULL}
-#'   to use pandoc's built-in template; pass a path to use a custom template
-#'   that you've created. Note that if you don't use the "default" template
-#'   then some features of \code{revealjs_presentation} won't be available
-#'   (see the Templates section below for more details).
+#' @param background_transition Slide background-transition ("default", "none",
+#'   "fade", "slide", "convex", "concave" or "zoom")
+#' @param reveal_options Additional options to specify for reveal.js (see 
+#'   \href{https://github.com/hakimel/reveal.js#configuration}{https://github.com/hakimel/reveal.js#configuration}
+#'   for details).
+#' @param template Pandoc template to use for rendering. Pass "default" to use
+#'   the rmarkdown package default template; pass \code{NULL} to use pandoc's
+#'   built-in template; pass a path to use a custom template that you've
+#'   created. Note that if you don't use the "default" template then some
+#'   features of \code{revealjs_presentation} won't be available (see the
+#'   Templates section below for more details).
 #' @param ... Ignored
-#'
+#'   
 #' @return R Markdown output format to pass to \code{\link{render}}
-#'
+#'   
 #' @details
-#'
-#' In reveal.js presentations you can use level 1 or level 2 headers for
-#' slides. If you use a mix of level 1 and level 2 headers then a
-#' two-dimensional layout will be produced, with level 1 headers building
-#' horizontally and level 2 headers building vertically.
 #' 
-#' For additional documentation on using revealjs presentations see \href{https://github.com/rstudio/revealjs}{https://github.com/rstudio/revealjs}.
+#' In reveal.js presentations you can use level 1 or level 2 headers for slides.
+#' If you use a mix of level 1 and level 2 headers then a two-dimensional layout
+#' will be produced, with level 1 headers building horizontally and level 2
+#' headers building vertically.
+#' 
+#' For additional documentation on using revealjs presentations see
+#' \href{https://github.com/rstudio/revealjs}{https://github.com/rstudio/revealjs}.
 #' 
 #' @section Templates:
-#'
-#' You can provide a custom HTML template to be used for rendering. The syntax
-#' for templates is described in the documentation on
-#' \href{http://johnmacfarlane.net/pandoc/demo/example9/templates.html}{pandoc
-#' templates}. You can also use the basic pandoc template by passing
-#' \code{template = NULL}.
-#'
-#' Note however that if you choose not to use the "default" reveal.js template
-#' then several aspects of reveal.js presentation rendering will behave
-#' differently:
-#'
-#' \itemize{
-#'   \item{The \code{center} parameter does not work (you'd need to
-#'      set this directly in the template).
-#'   }
-#'   \item{The built-in template includes some additional tweaks to styles
-#'      to optimize for output from R, these won't be present.
-#'   }
-#'   \item{MathJax will not work if \code{self_contained} is \code{TRUE}
-#'      (these two options can't be used together in normal pandoc templates).
-#'   }
-#' }
-#'
+#'   
+#'   You can provide a custom HTML template to be used for rendering. The syntax
+#'   for templates is described in the documentation on 
+#'   \href{http://johnmacfarlane.net/pandoc/demo/example9/templates.html}{pandoc
+#'   templates}. You can also use the basic pandoc template by passing 
+#'   \code{template = NULL}.
+#'   
+#'   Note however that if you choose not to use the "default" reveal.js template
+#'   then several aspects of reveal.js presentation rendering will behave 
+#'   differently:
+#'   
+#'   \itemize{ \item{The \code{center} parameter does not work (you'd need to 
+#'   set this directly in the template). } \item{The built-in template includes
+#'   some additional tweaks to styles to optimize for output from R, these won't
+#'   be present. } \item{MathJax will not work if \code{self_contained} is
+#'   \code{TRUE} (these two options can't be used together in normal pandoc
+#'   templates). } }
+#'   
 #' @examples
 #' \dontrun{
-#'
+#' 
 #' library(rmarkdown)
 #' library(revealjs)
-#'
+#' 
 #' # simple invocation
 #' render("pres.Rmd", revealjs_presentation())
-#'
+#' 
 #' # specify an option for incremental rendering
 #' render("pres.Rmd", revealjs_presentation(incremental = TRUE))
 #' }
-#'
-#'
+#' 
+#' 
 #' @export
 revealjs_presentation <- function(incremental = FALSE,
                                   center = FALSE,
+                                  slide_level = 2,
                                   fig_width = 8,
                                   fig_height = 6,
                                   fig_retina = if (!fig_caption) 2,
@@ -123,6 +126,9 @@
   jsbool <- function(value) ifelse(value, "true", "false")
   args <- c(args, pandoc_variable_arg("center", jsbool(center)))
   
+  # slide level
+  args <- c(args, "--slide-level", "2")
+  
   # theme
   theme <- match.arg(theme, revealjs_themes())
   if (identical(theme, "default"))
