diff --git a/R/kable_styling.R b/R/kable_styling.R
index f8aacd0..a777faf 100644
--- a/R/kable_styling.R
+++ b/R/kable_styling.R
@@ -60,9 +60,11 @@
 #'  on your need.
 #' @param fixed_thead HTML table option so table header row is fixed at top.
 #' Values can be either T/F or `list(enabled = T/F, background = "anycolor")`.
-#' @param lightable_class Options to use the in-house lightable themes.
+#' @param htmltable_class Options to use the in-house lightable themes.
 #' Choices include `lightable-minimal`, `lightable-classic`,
-#' `lightable-material`, `lightable-striped` and `lightable-hover`.
+#' `lightable-classic-2`, `lightable-material`, `lightable-striped` and
+#' `lightable-hover`. If you have your customized style sheet loaded which
+#' defines your own table class, you can also load it here.
 #'
 #' @details  For LaTeX, if you use other than English environment
 #' - all tables are converted to 'UTF-8'. If you use, for example, Hungarian
@@ -98,7 +100,7 @@
                           protect_latex = TRUE,
                           table.envir = "table",
                           fixed_thead = FALSE,
-                          lightable_class = NULL) {
+                          htmltable_class = NULL) {
 
   if (length(bootstrap_options) == 1 && bootstrap_options == "basic") {
     bootstrap_options <- getOption("kable_styling_bootstrap_options", "basic")
@@ -134,7 +136,7 @@
                              font_size = font_size,
                              protect_latex = protect_latex,
                              fixed_thead = fixed_thead,
-                             lightable_class = lightable_class))
+                             htmltable_class = htmltable_class))
   }
   if (kable_format == "latex") {
     if (is.null(full_width)) {
@@ -193,7 +195,7 @@
                               font_size = NULL,
                               protect_latex = TRUE,
                               fixed_thead = FALSE,
-                              lightable_class = NULL) {
+                              htmltable_class = NULL) {
   if (protect_latex) {
     kable_input <- extract_latex_from_kable(kable_input)
   }
@@ -213,9 +215,9 @@
     kable_xml_class <- xml_attr(kable_xml, "class")
   }
 
-  if (!is.null(lightable_class)) {
+  if (!is.null(htmltable_class)) {
     bootstrap_options <- "none"
-    xml_attr(kable_xml, "class") <- paste(kable_xml_class, lightable_class)
+    xml_attr(kable_xml, "class") <- paste(kable_xml_class, htmltable_class)
   }
 
   if (length(bootstrap_options) == 1 && bootstrap_options == "none") {
diff --git a/R/light_themes.R b/R/light_themes.R
index 8bc174a..94aa826 100644
--- a/R/light_themes.R
+++ b/R/light_themes.R
@@ -51,7 +51,7 @@
   if ("hover" %in% lightable_options) {
     light_class <- paste(light_class, "lightable-hover")
   }
-  out <- kable_styling(kable_input, "none", lightable_class = light_class, ...)
+  out <- kable_styling(kable_input, "none", htmltable_class = light_class, ...)
   attr(out, "lightable") <- TRUE
   attr(out, "lightable_class") <- light_class
   return(out)
diff --git a/man/kable_styling.Rd b/man/kable_styling.Rd
index 49c17c8..4aedfaa 100644
--- a/man/kable_styling.Rd
+++ b/man/kable_styling.Rd
@@ -21,7 +21,7 @@
   protect_latex = TRUE,
   table.envir = "table",
   fixed_thead = FALSE,
-  lightable_class = NULL
+  htmltable_class = NULL
 )
 }
 \arguments{
@@ -96,9 +96,11 @@
 \item{fixed_thead}{HTML table option so table header row is fixed at top.
 Values can be either T/F or \code{list(enabled = T/F, background = "anycolor")}.}
 
-\item{lightable_class}{Options to use the in-house lightable themes.
+\item{htmltable_class}{Options to use the in-house lightable themes.
 Choices include \code{lightable-minimal}, \code{lightable-classic},
-\code{lightable-material}, \code{lightable-striped} and \code{lightable-hover}.}
+\code{lightable-classic-2}, \code{lightable-material}, \code{lightable-striped} and
+\code{lightable-hover}. If you have your customized style sheet loaded which
+defines your own table class, you can also load it here.}
 }
 \description{
 This function provides a cleaner approach to modify the style
