diff --git a/R/ggplot-theme.R b/R/ggplot-theme.R
index 67f06c3..fc562e3 100644
--- a/R/ggplot-theme.R
+++ b/R/ggplot-theme.R
@@ -25,60 +25,69 @@
 #' @importFrom ggplot2 theme element_rect element_text element_line element_blank
 #' @export
 theme_ids <- function(base_size = 10,
-                     base_family = idsBaseFontFamily,
-                     style = c("default", "light", "dark"),
-                     bgcolor = NULL) {
-
+                      base_family = idsBaseFontFamily,
+                      style = c("default", "light", "dark", "mono"),
+                      bgcolor = NULL) {
   if (!is.null(bgcolor)) {
     warning("`bgcolor` is deprecated. Use `style` instead.")
     style <- bgcolor
   }
   style <- match.arg(style)
   bgcolor <- switch(style,
-                    default = backgroundColor,
-                    "light" = backgroundColor,
-                    "mono" = backgroundColor,
-                    "dark" = backgroundColorDark)
+    default = backgroundColor,
+    "light" = backgroundColor,
+    "mono" = backgroundColor,
+    "dark" = backgroundColorDark
+  )
 
-  ret <- theme(rect = element_rect(fill = bgcolor, linetype = 0, colour = NA),
-               text = element_text(size = base_size * 0.8, family = base_family),
-               plot.title = element_text(hjust = 0.5),
-               plot.subtitle = element_text(hjust = 0.5, size = base_size * 0.9, colour = mediumContrastColor),
-               title = element_text(hjust = 0.5),
-               axis.text = element_text(size = base_size * 1.0, family = base_family),
-               axis.title = element_text(size = base_size * 1.0, family = base_family),
-               legend.title = element_text(size = base_size * 1.0, family = base_family, colour = mediumContrastColor),
-               legend.text = element_text(size = base_size * 1.0, family = base_family),
-               strip.text =  element_text(size = base_size * 1.0, family = base_family),
-               axis.title.x = element_text(hjust = 0.5, size = base_size * 1.0,
-                                           colour = mediumContrastColor),
-               axis.title.y = element_text(hjust = 0.5, size = base_size * 1.0,
-                                           margin = margin(r = 10),
-                                           colour = mediumContrastColor),
-               panel.grid.major.x = element_line(linetype = "dotted", colour = lowContrastColor),
-               panel.grid.major.y = element_line(colour = lowContrastColor),
-               panel.grid.minor.y = element_blank(),
-               panel.grid.minor.x = element_blank(),
-               panel.border = element_blank(),
-               panel.background = element_blank(),
-               legend.position = "right",
-               legend.key = element_rect(fill = paste0(bgcolor,"00")))
+  base_family <- ids_resolve_font_family(base_family)
+
+  ret <- theme(
+    rect = element_rect(fill = bgcolor, linetype = 0, colour = NA),
+    text = element_text(size = base_size * 0.8, family = base_family),
+    plot.title = element_text(hjust = 0.5),
+    plot.subtitle = element_text(hjust = 0.5, size = base_size * 0.9, colour = mediumContrastColor),
+    title = element_text(hjust = 0.5),
+    axis.text = element_text(size = base_size * 1.0, family = base_family),
+    axis.title = element_text(size = base_size * 1.0, family = base_family),
+    legend.title = element_text(size = base_size * 1.0, family = base_family, colour = mediumContrastColor),
+    legend.text = element_text(size = base_size * 1.0, family = base_family),
+    strip.text = element_text(size = base_size * 1.0, family = base_family),
+    axis.title.x = element_text(
+      hjust = 0.5, size = base_size * 1.0,
+      colour = mediumContrastColor
+    ),
+    axis.title.y = element_text(
+      hjust = 0.5, size = base_size * 1.0,
+      margin = margin(r = 10),
+      colour = mediumContrastColor
+    ),
+    panel.grid.major.x = element_line(linetype = "dotted", colour = lowContrastColor),
+    panel.grid.major.y = element_line(colour = lowContrastColor),
+    panel.grid.minor.y = element_blank(),
+    panel.grid.minor.x = element_blank(),
+    panel.border = element_blank(),
+    panel.background = element_blank(),
+    legend.position = "right",
+    legend.key = element_rect(fill = paste0(bgcolor, "00"))
+  )
 
   if (style == "dark") {
-    ret <- (ret + theme(rect = element_rect(fill = bgcolor),
-                        text = element_text(colour = textColorDark),
-                        plot.title = element_text(colour = highContrastColorDark),
-                        plot.subtitle = element_text(colour = mediumContrastColorDark),
-                        axis.title.x = element_text(colour = textColorDark),
-                        axis.title.y = element_text(colour = textColorDark),
-                        axis.text.x = element_text(color=textColorDark),
-                        axis.text.y = element_text(color=textColorDark),
-                        panel.grid.major.y = element_line(colour = lowContrastColorDark),
-                        legend.title = element_text(colour = textColorDark)))
+    ret <- (ret + theme(
+      rect = element_rect(fill = bgcolor),
+      text = element_text(colour = textColorDark),
+      plot.title = element_text(colour = highContrastColorDark),
+      plot.subtitle = element_text(colour = mediumContrastColorDark),
+      axis.title.x = element_text(colour = textColorDark),
+      axis.title.y = element_text(colour = textColorDark),
+      axis.text.x = element_text(color = textColorDark),
+      axis.text.y = element_text(color = textColorDark),
+      panel.grid.major.y = element_line(colour = lowContrastColorDark),
+      legend.title = element_text(colour = textColorDark)
+    ))
   }
   update_geom_defaults("text", list(size = 3, family = base_family))
   ret
-
 }
 
 
@@ -99,7 +108,7 @@
 #' @rdname scale_ids
 #' @export
 scale_colour_ids <- function(palette = "default", ...) {
-  discrete_scale("colour", "ids", ids_pal(palette=palette, ...))
+  discrete_scale("colour", "ids", ids_pal(palette = palette, ...))
 }
 
 #' @rdname scale_ids
@@ -113,5 +122,5 @@
 #' @importFrom ggplot2 discrete_scale
 #' @export
 scale_fill_ids <- function(palette = "default", ...) {
-  discrete_scale("fill", "ids", ids_pal(palette=palette, ...))
+  discrete_scale("fill", "ids", ids_pal(palette = palette, ...))
 }
