diff --git a/.Rproj.user/5271889B/sources/per/t/4BEA950C-contents b/.Rproj.user/5271889B/sources/per/t/4BEA950C-contents
deleted file mode 100644
index 46719ab..0000000
--- a/.Rproj.user/5271889B/sources/per/t/4BEA950C-contents
+++ /dev/null
@@ -1,86 +0,0 @@
----
-title: 'Identifying relationships among catchment land cover characteristics, active layer properties and lake hydroecology in Old Crow Flats, Yukon, Canada'
-author: "Brent Thorne"
-date: 'December 2018'
-bibliography: MyLibrary
-output: posterdown::posterdown_memoir
----
-
-```{r, include=FALSE}
-knitr::opts_chunk$set(echo = FALSE, results = 'asis', fig.height = 3, fig.width = 3, warning = FALSE, fig.align = 'center', message = FALSE, dev='cairo_pdf')
-```
-
-# Introduction
-
-Lorem ipsum dolor sit amet, [@holden_identifying_2012] 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. 
-
-# Study Site
-
-Here is a map made to show the study site using `ggplot2`, `ggspatial`, and `rgdal`. 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. 
-
-```{r, fig.width=5, fig.height=5, out.width="80%", fig.cap='This is a map of Canada, projected using the NAD 83 UTM Zone 7 Datum.'}
-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() +
-  # theme(plot.margin = unit(c(0,0,0,0), "in")) +
-  NULL
-
-```
-
-
-# Objectives
-
-1. Here is my first obective.
-2. Here is my second objective.
-3. Finally, my third objectives.
-
-```{r, out.width='60%', fig.width=4, fig.height=3, fig.cap='This is a typical ggplot2 example using the iris dataset provided in R.'}
-library(ggplot2)
-library(ggthemes)
-
-ggplot(data = iris, aes(x = Sepal.Length, y = Sepal.Width, colour = Species)) +
-  geom_point() +
-  theme_tufte() +
-  labs(x = "Sepal Length", y = "Sepeal Width") +
-  NULL
-
-```
-
-Lacinia quis vel eros donec ac odio tempor. Vel quam elementum pulvinar etiam non quam lacus suspendisse. Nec tincidunt praesent semper feugiat nibh sed pulvinar. Neque ornare aenean euismod elementum. Vel fringilla est ullamcorper eget nulla. Sollicitudin aliquam ultrices sagittis orci a. Maecenas accumsan lacus vel facilisis volutpat est velit. Sed sed risus pretium quam vulputate dignissim. Convallis posuere morbi leo urna molestie. Cursus vitae congue mauris rhoncus. Vitae ultricies leo integer malesuada nunc. Est lorem ipsum dolor sit amet consectetur adipiscing. Enim sit amet venenatis urna cursus eget nunc.
-
-# Methods
-
-Elementum facilisis leo vel fringilla est ullamcorper eget nulla. Vitae congue eu consequat ac felis donec et. Morbi tincidunt ornare massa eget. Iaculis nunc sed augue lacus viverra vitae congue eu. Donec massa sapien faucibus et molestie. Neque egestas congue quisque egestas diam. Lectus quam id leo in vitae turpis massa. Sodales ut etiam sit amet. Posuere lorem ipsum dolor sit amet consectetur. Ullamcorper dignissim cras tincidunt lobortis feugiat vivamus. Amet commodo nulla facilisi nullam vehicula ipsum. Magna ac placerat vestibulum lectus mauris ultrices eros. Sodales ut eu sem integer vitae justo eget magna. Malesuada bibendum arcu vitae elementum.
-
-# Results
-
-Sagittis purus sit amet volutpat consequat mauris. Lobortis mattis aliquam faucibus purus. Libero enim sed faucibus turpis in eu. Massa placerat duis ultricies lacus sed turpis tincidunt id. Arcu dictum varius duis at consectetur lorem done.
-
-
-```{r, out.width='80%', fig.align='center', fig.cap='This is a messy graphic right now but I will clean it up in the future.'}
-
-knitr::include_graphics('Figures/figure2.pdf')
-
-```
-
-
-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.
-
-```{r, out.width='65%', fig.align='center', fig.height=5, fig.cap='Another figure showing how base R plots might look on this poster!'}
-par(mfrow=c(2,1), mar=c(0.2,0.2,0.2,0.2),mai=c(0.2,0.2,0.2,0.2))
-plot(rnorm(20))
-plot(cars)
-
-```
-
-More text now here 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.
-
diff --git a/.Rproj.user/5271889B/sources/per/t/F9B50F07 b/.Rproj.user/5271889B/sources/per/t/9AEA0CD
similarity index 61%
rename from .Rproj.user/5271889B/sources/per/t/F9B50F07
rename to .Rproj.user/5271889B/sources/per/t/9AEA0CD
index e98088c..f85750b 100644
--- a/.Rproj.user/5271889B/sources/per/t/F9B50F07
+++ b/.Rproj.user/5271889B/sources/per/t/9AEA0CD
@@ -1,21 +1,21 @@
 {
     "collab_server" : "",
     "contents" : "",
-    "created" : 1543940602361.000,
+    "created" : 1544019866664.000,
     "dirty" : false,
     "encoding" : "UTF-8",
     "folds" : "",
-    "hash" : "2250640312",
-    "id" : "F9B50F07",
-    "lastKnownWriteTime" : 1543953200,
-    "last_content_update" : 1543953200898,
+    "hash" : "700726814",
+    "id" : "9AEA0CD",
+    "lastKnownWriteTime" : 1544043824,
+    "last_content_update" : 1544043824135,
     "path" : "~/GitHub/posterdown/inst/rmarkdown/templates/posterdown_memoir/resources/template.tex",
     "project_path" : "inst/rmarkdown/templates/posterdown_memoir/resources/template.tex",
     "properties" : {
-        "cursorPosition" : "61,13",
-        "scrollLine" : "46"
+        "cursorPosition" : "109,46",
+        "scrollLine" : "92"
     },
-    "relative_order" : 2,
+    "relative_order" : 1,
     "source_on_save" : false,
     "source_window" : "",
     "type" : "tex"
diff --git a/.Rproj.user/5271889B/sources/per/t/9AEA0CD-contents b/.Rproj.user/5271889B/sources/per/t/9AEA0CD-contents
new file mode 100644
index 0000000..e1f6331
--- /dev/null
+++ b/.Rproj.user/5271889B/sources/per/t/9AEA0CD-contents
@@ -0,0 +1,133 @@
+%brent's poster layout :)
+
+\documentclass[article,30pt,extrafontsizes]{memoir}
+
+%utf-8 seems to be important
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage{palatino}
+\usepackage{multicol}
+\usepackage{graphicx}
+\usepackage{blindtext}
+\usepackage[svgnames]{xcolor}
+\usepackage[framemethod=tikz]{mdframed}
+\usepackage{color}
+\usepackage{geometry}
+\usepackage{adjmulticol}
+
+
+%For figure and table placement
+\usepackage{float}
+\floatplacement{figure}{H}
+\floatplacement{table}{H}
+
+%spacing between figure/ table and caption
+\setlength{\abovecaptionskip}{0.4in}
+\setlength{\belowcaptionskip}{0.1in}
+\captionnamefont{\footnotesize\sffamily\bfseries}
+\captiontitlefont{\footnotesize\sffamily}
+
+%define column options
+\setlength{\columnseprule}{1pt}
+\def\columnseprulecolor{\color{red}}
+\setsubsubsecheadstyle{\small\color{red}\textbf}% Set \section style
+\setsecheadstyle{\small\color{red}}
+\setsecnumformat{}
+\def\sectionmark#1{\markboth{#1}{#1}}
+
+%-----------------------------------------------------
+
+\thispagestyle{empty}
+\definecolor{light-gray}{gray}{0.9}
+
+
+
+\usepackage[style=alphabetic,backend=biber]{biblatex}
+\renewcommand*{\bibfont}{\tiny}
+
+\bibliography{$bibliography$}
+\author{$author$}
+\title{$title$}
+\counterwithout{section}{chapter}
+\makechapterstyle{mydefault}{
+\addtocounter{secnumdepth}{2}
+\setsecheadstyle{\Large\color{red}\textbf}
+\setsubsecheadstyle{\itshape}
+\setsubsubsecheadstyle{\itshape}
+}
+
+\chapterstyle{mydefault}
+
+\defbibheading{bibliography}[\bibname]{%
+\section*{#1}%
+\markboth{#1}{#1}}
+
+
+\AtBeginDocument{%
+  \renewcommand{\bibname}{References}
+}
+
+
+%define column spacing
+\setlength\columnsep{1in}
+
+\setlength\parindent{0em}
+\setlength\parskip{1em}
+\setlength\hangparas{0}
+
+%spacing after section head title
+\setaftersecskip{0.3in}
+\setbeforesecskip{0.5in}
+\setlength\textfloatsep{0.1in}
+\setlength\floatsep{0.1in}
+\setlength\intextsep{0.1in}
+
+\setstocksize{38in}{45in}
+\settrimmedsize{\stockheight}{\stockwidth}{*}
+\settypeblocksize{38in}{45in}{*}
+\setlrmargins{*}{*}{1}
+\setulmarginsandblock{2.5cm}{*}{*}
+\setmarginnotes{0em}{0cm}{0cm}
+\setlength{\footskip}{0cm}
+\setlength{\footnotesep}{0cm}
+\setlength{\headheight}{0pt}
+\setlength{\headsep}{0pt}
+\setlength{\trimtop}{0pt}
+\setlength{\trimedge}{0pt}
+\setlength{\uppermargin}{0pt}
+\checkandfixthelayout
+
+\definecolor{myframecolour}{HTML}{00004d}
+
+% see https://stackoverflow.com/a/47122900
+$if(highlighting-macros)$
+$highlighting-macros$
+$endif$
+
+%begin the document
+\begin{document}
+
+\begin{mdframed}[backgroundcolor=myframecolour,linecolor=Red,topline=false,leftline=false,rightline=false,linewidth=2mm]
+
+% group which adds title author and other infor
+% Used instead of \maketitle for better spacing options
+\begingroup
+  \centering
+  \color{White}
+  \huge\textbf{$title$}\\[0.3in]
+  \Large $author$ \par
+\vspace{1.2in}
+% end title section -------------------
+  \endgroup
+\end{mdframed}
+
+% Brgin body of poster
+\color{black}
+\begin{adjmulticols*}{3}{10mm}{10mm}
+\small{
+$body$
+\printbibliography
+}
+\end{adjmulticols*}
+%end the poster
+\end{document}
diff --git a/.Rproj.user/5271889B/sources/per/t/4BEA950C b/.Rproj.user/5271889B/sources/per/t/AB8556D6
similarity index 65%
rename from .Rproj.user/5271889B/sources/per/t/4BEA950C
rename to .Rproj.user/5271889B/sources/per/t/AB8556D6
index 6b6082a..9832b5a 100644
--- a/.Rproj.user/5271889B/sources/per/t/4BEA950C
+++ b/.Rproj.user/5271889B/sources/per/t/AB8556D6
@@ -1,21 +1,21 @@
 {
     "collab_server" : "",
     "contents" : "",
-    "created" : 1543938938103.000,
+    "created" : 1544019872391.000,
     "dirty" : false,
     "encoding" : "UTF-8",
     "folds" : "",
-    "hash" : "3921923171",
-    "id" : "4BEA950C",
-    "lastKnownWriteTime" : 1543951100,
-    "last_content_update" : 1543951100223,
+    "hash" : "4207451385",
+    "id" : "AB8556D6",
+    "lastKnownWriteTime" : 1544041727,
+    "last_content_update" : 1544041727783,
     "path" : "~/GitHub/posterdown/inst/rmarkdown/templates/posterdown_memoir/skeleton/skeleton.Rmd",
     "project_path" : "inst/rmarkdown/templates/posterdown_memoir/skeleton/skeleton.Rmd",
     "properties" : {
-        "cursorPosition" : "14,327",
+        "cursorPosition" : "13,54",
         "scrollLine" : "0"
     },
-    "relative_order" : 1,
+    "relative_order" : 2,
     "source_on_save" : false,
     "source_window" : "",
     "type" : "r_markdown"
diff --git a/.Rproj.user/5271889B/sources/per/t/AB8556D6-contents b/.Rproj.user/5271889B/sources/per/t/AB8556D6-contents
new file mode 100644
index 0000000..d18cc12
--- /dev/null
+++ b/.Rproj.user/5271889B/sources/per/t/AB8556D6-contents
@@ -0,0 +1,124 @@
+---
+title: 'Identifying relationships among catchment land cover characteristics, active layer properties and lake hydroecology in Old Crow Flats, Yukon, Canada'
+author: "Brent Thorne"
+bibliography: MyLibrary
+output: posterdown::posterdown_memoir
+---
+
+```{r, include=FALSE}
+knitr::opts_chunk$set(echo = FALSE, results = 'asis', fig.height = 3, fig.width = 3, warning = FALSE, fig.align = 'center', message = FALSE, dev='cairo_pdf')
+```
+
+# Introduction
+
+Lorem ipsum dolor sit amet, [@holden_identifying_2012] 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. 
+
+# 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. 
+
+```{r, fig.width=3.5, out.width="50%", 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. Here is my first obective. 
+2. Here is my second objective. 
+3. Finally, my third objectives.
+
+\small
+
+# Methods
+
+Elementum facilisis leo vel fringilla est ullamcorper eget nulla. Vitae congue eu consequat ac felis donec et. Morbi tincidunt ornare massa eget. Iaculis nunc sed augue lacus viverra vitae congue eu. Donec massa sapien faucibus et molestie. Neque egestas congue quisque egestas diam. Lectus quam id leo in vitae turpis massa. Sodales ut etiam sit amet. Posuere lorem ipsum dolor sit amet consectetur. Ullamcorper dignissim cras tincidunt lobortis feugiat vivamus. Amet commodo nulla facilisi nullam vehicula ipsum. Magna ac placerat vestibulum lectus mauris ultrices eros. Sodales ut eu sem integer vitae justo eget magna. Malesuada bibendum arcu vitae elementum.
+
+# Results
+
+```{r}
+library(kableExtra)
+library(ggplot2)
+
+data("iris")
+
+kable(iris[1:4,], caption = "Hopefully this works without much of a headache!") %>% 
+  kable_styling()
+
+```
+
+```{r, out.width='60%', 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_tufte() +
+  labs(x = "Sepal Length", y = "Sepeal Width") +
+  NULL
+
+```
+
+
+```{r, out.width='50%',fig.width=3.5, fig.height=3, fig.align='center', fig.cap='A boxplot example.'}
+
+library(ggthemes)
+library(ggplot2)
+
+ggplot(data = iris, aes(x = Species, y = Sepal.Length, colour = Species)) +
+  geom_boxplot(show.legend = FALSE) +
+  theme_tufte() +
+  labs(x = "Sepal Length", y = "Sepeal Width") +
+  NULL
+
+```
+
+
+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.
+
+
+
+```{r, out.width='50%',fig.width=3.5, fig.height=3, fig.align='center', fig.cap='A jitter plot example.'}
+
+library(ggthemes)
+library(ggplot2)
+
+ggplot(data = iris, aes(x = Species, y = Sepal.Length, colour = Species)) +
+  geom_jitter(show.legend = FALSE) +
+  theme_tufte() +
+  labs(x = "Sepal Length", y = "Sepeal Width") +
+  NULL
+
+```
+
+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.
+
+```{r, out.width='65%', fig.align='center', fig.height=5, fig.cap='Another figure showing how base R plots might look on this poster!'}
+par(mfrow=c(2,1), mar=c(0.2,0.2,0.2,0.2),mai=c(0.2,0.2,0.2,0.2))
+plot(rnorm(20))
+plot(cars)
+
+```
+
+More text now here 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.
+
+# 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.
+
diff --git a/.Rproj.user/5271889B/sources/per/t/F9B50F07-contents b/.Rproj.user/5271889B/sources/per/t/F9B50F07-contents
deleted file mode 100644
index 4d06a01..0000000
--- a/.Rproj.user/5271889B/sources/per/t/F9B50F07-contents
+++ /dev/null
@@ -1,115 +0,0 @@
-%brent's poster layout :)
-
-\documentclass[article,30pt,extrafontsizes]{memoir}
-
-%utf-8 seems to be important
-\usepackage[utf8]{inputenc}
-\usepackage[T1]{fontenc}
-\usepackage{palatino}
-\usepackage{multicol}
-\usepackage{graphicx}
-\usepackage{blindtext,xcolor}
-\usepackage{framed}
-\usepackage{color}
-
-%For figure and table placement
-\usepackage{float}
-\floatplacement{figure}{H}
-\floatplacement{table}{H}
-
-%spacing between figure/ table and caption
-\setlength{\abovecaptionskip}{0.4in}
-\setlength{\belowcaptionskip}{0.1in}
-\captionnamefont{\small\sffamily\bfseries}
-\captiontitlefont{\small\sffamily}
-
-%define column options
-\setlength{\columnseprule}{1pt}
-\def\columnseprulecolor{\color{red}}
-\setsubsubsecheadstyle{\small\color{red}\textbf}% Set \section style
-\setsecheadstyle{\small\color{red}}
-\setsecnumformat{}
-\def\sectionmark#1{\markboth{#1}{#1}}
-
-%-----------------------------------------------------
-
-%define poster size
-\usepackage[paperwidth=45in,paperheight=38in, text={7in,10in},centering]{geometry}
-
-\geometry{
-left=1in,
-right=0mm,
-top=0mm,
-bottom=1in,
-headheight=0mm,
-}
-
-\thispagestyle{empty}
-
-\usepackage[style=authoryear-comp,backend=biber]{biblatex}
-\renewcommand*{\bibfont}{\tiny}
-
-\bibliography{$bibliography$}
-
-\counterwithout{section}{chapter}
-\makechapterstyle{mydefault}{
-\addtocounter{secnumdepth}{2}
-\setsecheadstyle{\Large\color{red}\textbf}
-\setsubsecheadstyle{\itshape}
-\setsubsubsecheadstyle{\itshape}
-}
-
-\setlength\parindent{10mm}
-
-\chapterstyle{mydefault}
-
-\defbibheading{bibliography}[\bibname]{%
-\section*{#1}%
-\markboth{#1}{#1}}
-
-
-\AtBeginDocument{%
-  \renewcommand{\bibname}{References}
-}
-
-
-%define column spacing
-\setlength\columnsep{1.2in}
-
-%spacing after section head title
-\setaftersecskip{0.3in}
-\setbeforesecskip{0.5in}
-\setlength\textfloatsep{0.1in}
-\setlength\floatsep{0.1in}
-\setlength\intextsep{0.1in}
-\setlength{\parskip}{0pt}
-
-%for shading the top
-\definecolor{shadecolor}{gray}{0.9}
-
-
-%begin the document
-\begin{document}
-
-
-% group which adds title author and other infor
-% Used instead of \maketitle for better spacing options
-\begin{shaded}
-\begingroup
-  \centering
-  \huge\textbf{$title$}\\[0.3in]
-  \large $author$\par
-\endgroup
-\vspace{1.2in}
-% end title section -------------------
-  \end{shaded}
-% Brgin body of poster
-\begin{multicols*}{3}
-\small{\noindent
-$body$
-\printbibliography
-}
-\end{multicols*}
-
-%end the poster
-\end{document}
