diff --git a/MyJSSArticle/MyJSSArticle.Rmd b/MyJSSArticle/MyJSSArticle.Rmd
new file mode 100644
index 0000000..5ab91d9
--- /dev/null
+++ b/MyJSSArticle/MyJSSArticle.Rmd
@@ -0,0 +1,99 @@
+---
+title: 'Using \color{Red} `posterdown` \color{White} to generate reproducible conference posters via RMarkdown > Knitr > Markdown > Pandoc > Latex > PDF workflow as well as long titles...'
+author: "Brent Thorne"
+bibliography: MyLibrary
+output: posterdown::posterdown_memoir
+---
+
+```{r, include=FALSE}
+knitr::opts_chunk$set(echo = FALSE, results = 'asis',fig.height = 3.5, fig.width = 4.5, out.width = "100%", warning = FALSE, fig.align = 'center', message = FALSE, dev='cairo_pdf')
+```
+
+# Introduction
+
+Welcome to `posterdown` ! This is my attempt to provide a semi-smooth workflow for those who wish to take their `RMarkdown` skills to the conference world. Many creature comforts frim `RMarkdown` are available in this package such as `Markdown` section notation, figure captioning, and even citations like this one [@holden_identifying_2012] The rest of this example poster will show how you can insert typical conference poster features into your own document. 
+
+# Study Site
+
+Here is a map made to show the study site using `ggplot2`, `ggspatial`, and `sf`. Lorem ipsum dolor sit amet, [@middleton_geological_nodate] consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Phasellus vestibulum lorem sed risus ultricies tristique nulla. Mauris vitae ultricies leo integer malesuada nunc vel risus commodo. Suspendisse potenti nullam ac tortor vitae. Enim nunc faucibus a pellentesque sit amet porttitor eget.  \vspace{15mm}
+
+```{r, fig.width=4.5, out.width="80%", fig.cap='This is a map of Canada, projected using the NAD 83 UTM Zone 7 Datum.', cache=TRUE}
+library(ggplot2)
+library(ggspatial)
+library(ggthemes)
+library(sf)
+
+canada <- read_sf("data/Canada.geojson")
+
+
+ggplot() +
+  ggspatial::layer_spatial(canada, fill = "grey") +
+  coord_sf() +
+  theme_solarized() +
+  NULL
+
+```
+
+
+# Objectives
+
+\large
+
+1. Easy to use reproducible poster design. 
+2. Integration with `RMarkdown`.
+3. Easy transition from `posterndown` to `thesisdown` or `rticles`
+
+\small
+
+# Methods
+
+This package uses the same workflow approach as the `RMarkdown` you know and love. Basically it goes from RMarkdown > Knitr > Markdown > Pandoc > Latex > PDF
+
+# Results
+
+```{r}
+library(kableExtra)
+library(ggplot2)
+
+data("iris")
+
+kable(iris[1:4,],align = "c", caption = "Hopefully this works without much of a headache!", booktabs = T) %>% 
+  kable_styling(latex_options = "striped")
+
+```
+
+```{r, out.width='80%', fig.width=4.5, fig.align='center', echo=TRUE, fig.height=5, fig.cap='Another figure showing how base R plots might look on this poster!'}
+
+# Here is some code for people
+# to look at and be in awe of!!!!
+library(ggplot2)
+library(ggthemes)
+
+ggplot(data=iris,
+       aes(x = Sepal.Width,
+           y = Sepal.Length,
+           colour = Species)) +
+  geom_point() +
+  theme_stata() +
+  NULL
+
+```
+
+```{r, out.width='75%', fig.width=4, fig.height=3, fig.cap='A typical plot using ggplot.'}
+
+library(ggplot2)
+library(ggthemes)
+
+ggplot(data = iris, aes(x = Sepal.Length, y = Sepal.Width, colour = Species)) +
+  geom_point() +
+  theme_fivethirtyeight() +
+  labs(x = "Sepal Length", y = "Sepeal Width") +
+  NULL
+
+```
+
+# Next Steps
+
+Pellentesque habitant morbi tristique senectus et netus. Magnis dis parturient montes nascetur ridiculus mus mauris vitae ultricies. Nibh nisl condimentum id venenatis. Lorem ipsum dolor sit amet consectetur adipiscing elit duis. Eget aliquet nibh praesent tristique magna sit amet purus. Orci phasellus egestas tellus rutrum. Mauris cursus mattis molestie a. Amet cursus sit amet dictum sit. Tellus id interdum velit laoreet. Tortor at risus viverra adipiscing. Ullamcorper malesuada proin libero nunc. Elit ullamcorper dignissim cras tincidunt lobortis feugiat vivamus. Eget dolor morbi non arcu risus quis. Pulvinar pellentesque habitant morbi tristique senectus.
+
+\small
