diff --git a/vignettes/intro_tutorial.Rmd b/vignettes/intro_tutorial.qmd
similarity index 86%
rename from vignettes/intro_tutorial.Rmd
rename to vignettes/intro_tutorial.qmd
index 5aabc829..693298c3 100644
--- a/vignettes/intro_tutorial.Rmd
+++ b/vignettes/intro_tutorial.qmd
@@ -1,13 +1,14 @@
 ---
 title: "Tutorial"
-output: rmarkdown::html_vignette
-vignette: >
+format: html
+engine: knitr
+vignette: |
   %\VignetteIndexEntry{Tutorial}
   %\VignetteEngine{knitr::rmarkdown}
   %\VignetteEncoding{UTF-8}
 ---
 
-```{r, include = FALSE}
+```{r include=FALSE}
 knitr::opts_chunk$set(
   collapse = TRUE,
   comment = "#>",
@@ -61,15 +62,18 @@ earlier.
 tinyplot(Temp ~ Day, data = aq)  # formula method
 ```
 
+### Aside: `plt` shorthand
+
 If you'd prefer to save on a few keystrokes, you can use the shorthand `plt`
-alias instead.
+alias instead of typing out `tinyplot`.
 
 ```{r plt_simple}
 plt(Temp ~ Day, data = aq) # `plt` = shorthand alias for `tinyplot`
 ```
 
-(Note that the `plt` shorthand would work for all of the remaining plotting
-calls below. But we'll stick to `tinyplot` to keep things simple.)
+Please note that the `plt` shorthand would work for all of the remaining
+plot calls below. But we'll stick to `tinyplot` to avoid any potential
+confusion.
 
 ## Grouped data
 
@@ -274,12 +278,21 @@ tinyplot(
 )
 ```
 
+## More plot types
 
-## Interval plots
+We have already seen several plot types above such as `"p"` (points), `"l"`
+(lines), and `"density"`. In general, **tinyplot** supports all of the primitive
+plot types/elements available in base R, as well as a number of additional plot
+types that can be a bit tedious to code up manually. The full list of supported
+plot types can be viewed in
+[this pinned GitHub issue](https://github.com/grantmcdermott/tinyplot/issues/97),
+or by checking the
+[`?tinyplot`](https://grantmcdermott.com/tinyplot/man/tinyplot.html#arguments)
+documentation.
 
-`tinyplot` adds supports for interval plots via the `"pointrange"`, `"errorbar"`,
-`"ribbon"` type arguments. A canonical use-case is regression analysis and
-prediction.
+For example, **tinyplot** support interval plots via the `"pointrange"`,
+`"errorbar"`, `"ribbon"` type arguments. A canonical use-case is regression
+analysis and prediction.
 
 ```{r ribbon_pred}
 mod = lm(Temp ~ 0 + Month / Day, data = aq)
@@ -301,15 +314,18 @@ with(
 Similarly, we can grab the model estimates to produce nice coefficient plots.
 
 ```{r pointrange, warning = FALSE}
-coeftab = data.frame(
+# grab coefs of interest
+monthcoefs = data.frame(
   gsub("Month", "", names(coef(mod))),
   coef(mod),
   confint(mod)
-) |>
-  setNames(c("term", "estimate", "ci_low", "ci_high"))
+  ) |>
+  setNames(c("term", "estimate", "ci_low", "ci_high")) |>
+  subset(!grepl("Day", term))
 
+# plot
 with(
-  subset(coeftab, !grepl("Day", term)),
+  monthcoefs,
   tinyplot(
     x = term, y = estimate,
     ymin = ci_low, ymax = ci_high,
@@ -482,6 +498,35 @@ basetheme(NULL)  # back to default theme
 dev.off()
 ```
 
+
+## Saving plots
+
+A final point to note is that **tinyplot** offers convenience features for
+exporting plots to disk. Simply invoke the `file` argument to specify the
+relevant file path (including the extension type). You can customize the output
+dimensions (in inches) via the accompanying `width` and `height`
+arguments.^[The default dimensions are 7x7, with a resolution of 300 DPI.
+However, these too can be customized via the `file.width`, `file.height`, and
+`file.res` parameters in
+[`tpar()`](https://grantmcdermott.com/tinyplot/man/tpar.html).]
+
+```{r save_plot}
+#| eval: false
+tinyplot(
+  Temp ~ Day | Month, data = aq,
+  file = "aq.png", width = 8, height = 5
+)
+
+# optional: delete the saved plot
+unlink("aq.png")
+```
+
+Alongside convenience, the benefit of this native **tinyplot** approach (versus
+the traditional approach of manually opening an external graphics device, e.g.
+`png()`) is that all of your current graphic settings are automatically carried
+over to the exported file. Feel free to try yourself by setting some global
+graphics parameters via `tpar()` and then using `file` to save a plot.
+
 ## Conclusion
 
 In summary, consider the **tinyplot** package if you are looking for base R `plot`
@@ -489,7 +534,7 @@ functionality with added convenience features. You can use (nearly) the exact
 same syntax and all of your theme elements should carry over too. It has no
 dependencies other than base R itself and this should make it an attractive
 option for package developers, as well as situations where dependency management
-is expensive (e.g., propoduction piplines, continuous integration or an R
+is expensive (e.g., production pipelines, continuous integration or an R
 application running in a browser via
 [WebAssembly](https://docs.r-wasm.org/webr/latest/)).
 
