diff --git a/DESCRIPTION b/DESCRIPTION
index 1eba809..df45d70 100644
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -6,7 +6,8 @@
     person('Hao', 'Zhu', email = 'haozhu233@gmail.com', role = c('aut', 'cre')),
     person('Will', 'Beasley', email = 'wibeasley@hotmail.com', role = 'ctb'),
     person('Yihui', 'Xie', email = 'xie@yihui.name', role = 'ctb'),
-    person('Thomas', 'Travison', email = 'tgt@hsl.harvard.edu', role = 'aut')
+    person('Thomas', 'Travison', email = 'tgt@hsl.harvard.edu', role = 'ctb'),
+    person('GuangChuang', 'Yu', email = 'guangchuangyu@gmail.com', role = 'ctb')
     )
 Description: A collection of functions to help build complex HTML or 'LaTeX' 
     tables using 'kable()' from 'knitr' and the piping syntax from 'magrittr'. 
diff --git a/NAMESPACE b/NAMESPACE
index de8dd30..a431fba 100644
--- a/NAMESPACE
+++ b/NAMESPACE
@@ -4,6 +4,7 @@
 export(add_footnote)
 export(add_header_above)
 export(kable_styling)
+export(landscape)
 export(magic_mirror)
 export(rmd_format)
 export(usepackage_latex)
diff --git a/R/kable_styling.R b/R/kable_styling.R
index 4ede987..05a95cc 100644
--- a/R/kable_styling.R
+++ b/R/kable_styling.R
@@ -222,7 +222,7 @@
     return(x)
   }
   x <- sub(table_info$begin_tabular,
-           paste0("\\\\resizebox\\{\\\\textwidth\\}\\{\\!\\}\\{",
+           paste0("\\\\resizebox\\{\\\\linewidth\\}\\{\\!\\}\\{",
                   table_info$begin_tabular),
            x)
   sub(table_info$end_tabular, paste0(table_info$end_tabular, "\\}"), x)
diff --git a/R/landscape.R b/R/landscape.R
new file mode 100644
index 0000000..6f4049c
--- /dev/null
+++ b/R/landscape.R
@@ -0,0 +1,43 @@
+#' Print the table on an isolated landscape page in PDF
+#'
+#' @description For very wide tables in PDF documents, sometimes it might be a
+#' good idea to have a single landscape page to house it. This function
+#' will rotate the PDF page for the applied table in LaTeX environment. It won't
+#' have any effects on HTML.
+#'
+#' @param kable_input Output of `knitr::kable()` with `format` specified
+#' @param margin Customizable page margin for special needs. Values can be
+#' "1cm", "1in" or similar.
+#'
+#' @export
+landscape <- function(kable_input, margin = NULL) {
+  kable_format <- attr(kable_input, "format")
+  if (!kable_format %in% c("html", "latex")) {
+    message("Currently generic markdown table using pandoc is not supported.")
+    return(kable_input)
+  }
+  if (kable_format == "html") {
+    return(kable_input)
+  }
+  if (kable_format == "latex") {
+    return(landscape_latex(kable_input, margin))
+  }
+}
+
+landscape_latex <- function(kable_input, margin) {
+  kable_attrs <- attributes(kable_input)
+  usepackage_latex("pdflscape")
+  out <- paste0(
+    "\n\\begin{landscape}", kable_input, "\n\\end{landscape}"
+  )
+
+  if (!is.null(margin)) {
+    out <- paste0(
+      "\n\\newgeometry{margin=", margin, "}", out, "\n\\restoregeometry"
+    )
+  }
+  out <- structure(out, format = "latex", class = "knitr_kable")
+  attributes(out) <- kable_attrs
+  attr(out, "landscape") <- TRUE
+  return(out)
+}
diff --git a/man/landscape.Rd b/man/landscape.Rd
new file mode 100644
index 0000000..2048727
--- /dev/null
+++ b/man/landscape.Rd
@@ -0,0 +1,20 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/landscape.R
+\name{landscape}
+\alias{landscape}
+\title{Print the table on an isolated landscape page in PDF}
+\usage{
+landscape(kable_input, margin = NULL)
+}
+\arguments{
+\item{kable_input}{Output of `knitr::kable()` with `format` specified}
+
+\item{margin}{Customizable page margin for special needs. Values can be
+"1cm", "1in" or similar.}
+}
+\description{
+For very wide tables in PDF documents, sometimes it might be a
+good idea to have a single landscape page to house it. This function
+will rotate the PDF page for the applied table in LaTeX environment. It won't
+have any effects on HTML.
+}
diff --git a/tests/visual_tests/landscape_table.Rmd b/tests/visual_tests/landscape_table.Rmd
new file mode 100644
index 0000000..0b0fa2e
--- /dev/null
+++ b/tests/visual_tests/landscape_table.Rmd
@@ -0,0 +1,80 @@
+---
+title: "landscape_table"
+output: 
+    pdf_document:
+      keep_tex: true
+---
+
+# Introduction
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas nec elit sed felis luctus faucibus. Praesent elementum sapien neque, sit amet laoreet mi ullamcorper et. Cras commodo, odio ac aliquam scelerisque, nunc tortor pulvinar nulla, id laoreet arcu nisl quis tellus. Morbi tempor, dui in posuere imperdiet, massa nunc fermentum ligula, ut luctus nunc nulla sed est. Curabitur blandit tellus eu porttitor mollis. Nulla mattis, mi et elementum vestibulum, mi turpis euismod nisi, non porttitor diam sem sit amet ex. Aenean dictum, dolor vitae placerat dapibus, magna urna malesuada lorem, et facilisis urna augue ut arcu. Duis erat massa, malesuada ut tempor ac, rutrum vel justo. Mauris sit amet efficitur risus. Donec at vehicula sem. Mauris sed facilisis neque. Vestibulum suscipit aliquam purus. Mauris quis quam faucibus, tincidunt turpis eu, fringilla est.
+
+Etiam tempor, libero non efficitur tincidunt, dolor enim pretium mi, vitae scelerisque risus neque non felis. Vivamus blandit neque tellus, nec viverra leo suscipit vitae. Morbi vel sem vitae lacus pharetra vulputate. Phasellus a facilisis eros. Praesent nec semper eros. Phasellus porta ornare lectus eget viverra. Nam egestas, justo sit amet maximus rutrum, magna est aliquam mi, id consequat tellus arcu vitae neque. Nunc cursus varius est id rhoncus.
+
+Fusce sem libero, ultricies sed tristique in, auctor vitae justo. Aliquam et enim nisi. Nunc posuere gravida quam eget fringilla. Nullam mattis mi eget augue laoreet facilisis. Pellentesque mattis bibendum sodales. Pellentesque elementum eu massa nec suscipit. Etiam congue condimentum metus ut consectetur. Vestibulum pellentesque maximus odio, in facilisis lectus luctus at. In finibus augue nec lacus efficitur luctus.
+
+Aliquam quis consectetur urna, sit amet posuere tellus. Pellentesque molestie at dui feugiat semper. Phasellus interdum dignissim metus vel feugiat. Quisque sit amet leo aliquet, sodales eros nec, sollicitudin enim. Nullam facilisis dapibus ligula at hendrerit. Proin ultricies non massa sed ultrices. Ut tempus magna in fermentum pretium. Integer rhoncus interdum vestibulum. Nam a mi sed orci condimentum ornare at non elit. Sed vel ornare magna. Vestibulum semper quis leo ut consequat. Aenean eu odio mollis, dictum quam eu, faucibus quam. Sed nisl mauris, ornare non pharetra vitae, tincidunt sed quam. Pellentesque ullamcorper nunc sapien, nec convallis magna tincidunt vel. Praesent diam ipsum, rhoncus id euismod eget, tempor id elit.
+
+Quisque varius arcu feugiat turpis imperdiet, ac aliquam nulla interdum. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque lacus augue, laoreet eget lorem a, molestie facilisis orci. Etiam eu finibus libero. Curabitur commodo, neque eget sagittis pharetra, orci turpis pellentesque leo, a blandit odio quam sit amet lorem. Donec ac odio enim. Mauris eget fermentum nisi, ac sagittis ipsum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.
+
+Vestibulum semper, mi ut dictum pretium, lectus eros commodo ante, vitae finibus nulla justo ac purus. Nam tempus, est vitae posuere rutrum, nunc enim sagittis nibh, quis cursus nisl ante ac nisl. Praesent id elit posuere, egestas ligula vitae, feugiat eros. In venenatis odio vitae tincidunt sodales. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Morbi in lacus vitae tellus eleifend ultricies at sagittis diam. Phasellus in est lectus. Sed eu consequat diam, nec consectetur felis. Nam scelerisque varius turpis, at viverra magna iaculis vel. Nam mi purus, accumsan vitae metus sed, aliquet dictum dolor.
+
+Sed feugiat consequat dolor et dignissim. Vestibulum nec tempor purus. Vestibulum arcu libero, faucibus in sodales id, lacinia eget nunc. Aenean pharetra, enim eget iaculis tempus, felis elit dignissim leo, non tempus neque purus eu neque. Proin molestie augue ultrices metus dapibus, nec rhoncus dui fringilla. Aenean ultrices condimentum neque, luctus tempor justo viverra eu. Nullam tincidunt nibh in libero sagittis egestas. Pellentesque pulvinar vitae eros id mattis. Integer vestibulum nunc ut enim bibendum lacinia. Quisque tempor, tellus consequat porta iaculis, lectus mauris luctus purus, quis rhoncus libero massa non dui. Pellentesque pretium pharetra lacus ac varius. Vivamus tristique massa sit amet tincidunt auctor. Maecenas mollis interdum tellus, nec tristique felis convallis quis. Phasellus vestibulum auctor diam, ut mollis arcu interdum in. Fusce placerat purus lacus, at rutrum orci volutpat vel.
+
+Sed a condimentum mauris. Integer mi nisl, bibendum vel lacus ut, venenatis dapibus nisi. Donec congue, sapien in condimentum tincidunt, elit quam condimentum sapien, a aliquam tortor lectus a ex. Integer sed ligula vel eros viverra interdum eget eget lectus. Duis laoreet placerat dolor, ac vulputate tellus auctor congue. In blandit accumsan odio, ullamcorper elementum odio efficitur nec. Nulla facilisi. Nam pretium libero eu congue elementum. Pellentesque lacinia ligula dolor, et imperdiet dui rhoncus ac. Aenean iaculis tellus urna, eget molestie dolor facilisis in. Etiam posuere ipsum non ex maximus, ut sodales sem ullamcorper. Integer a bibendum neque.
+
+Nulla bibendum massa eget lectus pharetra pharetra. Cras fringilla est nec hendrerit sollicitudin. Vivamus laoreet leo sapien, quis consectetur justo consequat eu. Nullam ex erat, suscipit non molestie sit amet, maximus et sapien. Nullam imperdiet odio eget maximus convallis. Proin placerat luctus tempor. Fusce ac sem consequat, porta tortor vel, ultrices purus. Etiam dignissim libero sed imperdiet lobortis. Vivamus aliquam rhoncus suscipit. Nam at sem vitae erat efficitur ultrices. Sed sed hendrerit ipsum.
+
+Donec non ullamcorper ipsum, vel sodales leo. Etiam ac lobortis augue, ac tristique sem. Ut ornare felis bibendum gravida venenatis. Cras vehicula consequat dapibus. Aenean in mi sit amet dolor semper feugiat. Sed lacinia risus tellus, feugiat fermentum justo mattis non. Quisque non ex consequat nibh consectetur auctor in in odio. Phasellus mi dolor, consequat id sodales ac, laoreet ac purus. Nulla rhoncus fringilla metus, at porta purus finibus sit amet.
+
+Aenean eu viverra velit, vitae eleifend risus. Donec vitae ligula sit amet justo commodo commodo. Nam eu consectetur nisi. Nunc mi enim, fermentum ut posuere sed, posuere in metus. In fermentum placerat tincidunt. Nulla non tristique neque, vitae consectetur ligula. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+
+Pellentesque dignissim tincidunt nisi, ut tincidunt quam ultrices a. Aliquam erat volutpat. Vestibulum sagittis elit eu blandit feugiat. Donec aliquet velit porttitor, porttitor sapien sit amet, mattis erat. Nullam pretium vehicula nisl, non dictum lectus sodales ut. Sed laoreet ante ut augue venenatis egestas a vitae mi. Integer id eros dolor. Sed id sem accumsan, dapibus lectus at, condimentum sem. Praesent nec mauris urna. Pellentesque dapibus eros at ante consequat, eget eleifend purus sagittis. Phasellus sagittis eros at purus porttitor aliquam. Aliquam a finibus nulla, at ultrices velit. Mauris in lacinia nulla.
+
+Duis aliquam lobortis urna id dictum. Proin eget pharetra ligula. Integer non enim pulvinar, fringilla massa at, suscipit odio. Vestibulum pretium facilisis mollis. Ut porttitor magna eu luctus convallis. Integer elementum elit a condimentum malesuada. Ut molestie magna nisl, in rhoncus neque elementum quis. Integer posuere erat ut velit cursus porttitor vel sed dui. Vestibulum tempor ornare rhoncus. Integer commodo, tellus nec mattis pharetra, nisl leo sodales ante, sit amet commodo mauris quam vel dui. Duis convallis sapien tempus, gravida quam eget, vestibulum leo. Sed hendrerit risus a neque molestie, id feugiat eros volutpat. Nam eu fringilla enim. Sed aliquam, enim at tincidunt luctus, enim tellus placerat quam, et imperdiet libero felis nec libero. Curabitur et purus a magna ornare sodales.
+
+Nam non libero ut felis euismod efficitur. Maecenas ligula nisi, rutrum eu turpis quis, semper ultricies nibh. Quisque vehicula cursus erat. Donec aliquam augue ut magna vehicula lacinia. Quisque efficitur, arcu condimentum mollis scelerisque, tellus libero accumsan elit, in eleifend lorem lectus ut erat. Ut sit amet nulla quis turpis semper mattis. Ut rhoncus vitae nulla sit amet ultrices. Nulla justo ligula, rhoncus et interdum vel, cursus ut sem. Nullam elementum ullamcorper neque, imperdiet tempus sapien tincidunt et. Nulla diam nulla, varius ut nisi quis, hendrerit fringilla mi. In volutpat tincidunt faucibus. Donec luctus, mauris vitae consectetur placerat, elit velit tristique mauris, sed malesuada nisl sem eu justo. Nunc enim quam, pharetra vitae velit vel, posuere lacinia turpis. Proin volutpat porttitor ligula.
+
+```{r}
+library(knitr)
+library(kableExtra)
+dt <- mtcars[1:5, 1:8]
+dt <- cbind(dt, dt, dt)
+```
+
+```{r}
+kable(dt, format = "latex", booktabs = T) %>%
+  kable_styling(latex_options = c("striped", "hold_position", "scale_down")) %>%
+  landscape()
+```
+
+Aenean condimentum, magna in condimentum lacinia, metus enim placerat enim, in hendrerit ex mauris sed quam. Ut ut laoreet odio. Morbi enim libero, molestie a lacinia quis, tempor non erat. Proin sit amet ultricies mi. Donec metus enim, commodo eget tempus sed, aliquam ac lectus. Nunc congue velit nec eros consectetur finibus. Cras bibendum urna quis cursus iaculis. Maecenas et gravida lorem. Pellentesque pellentesque mauris nec massa sagittis elementum. Sed facilisis mattis nibh, ac hendrerit eros accumsan at. Duis suscipit purus id orci rhoncus sagittis. Nunc tincidunt nisi eros, ac maximus augue hendrerit ac. Etiam cursus, felis eget porttitor rutrum, massa turpis euismod turpis, quis blandit lectus erat sit amet justo. Etiam eu nulla porta, ultricies augue in, bibendum orci.
+
+Ut malesuada porttitor lacus, sit amet tempus est tempor vitae. Sed ullamcorper vitae orci id dignissim. Nunc id varius lacus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Integer ac orci ac enim ullamcorper auctor non sodales eros. Etiam rhoncus hendrerit mi. Nullam vehicula dui ut ipsum sollicitudin pellentesque. Duis placerat tellus quis augue sollicitudin, nec aliquet enim facilisis. Maecenas vulputate nibh elit, sed blandit erat dapibus non. Suspendisse purus tortor, finibus eget ante sed, mattis efficitur erat. Proin scelerisque augue felis. Pellentesque nec ligula at felis pulvinar porttitor. Aenean at dolor dolor. Donec quis condimentum felis.
+
+Nam sodales neque vel nibh vulputate pretium. Morbi consectetur viverra lectus sed consequat. Vivamus vel tristique risus. Donec ut bibendum tortor, sit amet commodo tellus. Sed orci sapien, luctus quis lectus vel, lacinia vulputate dui. Duis sit amet turpis sit amet nulla ultrices malesuada quis ut diam. Etiam ut sem porttitor justo accumsan aliquam vel nec dui. Proin id dictum risus. Mauris ullamcorper ultricies libero sed consequat.
+
+Nunc pretium at ex sed euismod. Aliquam rutrum augue leo, nec scelerisque ex sagittis vel. Vivamus sed mollis nisl. Pellentesque viverra finibus diam, quis porttitor dolor porttitor ac. Maecenas at risus in odio iaculis ultricies ac vel turpis. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Aliquam at dui odio. In tristique pretium velit, quis sollicitudin ante tristique sit amet. Aenean cursus, quam vel laoreet luctus, orci nunc tristique tortor, tristique congue tortor erat molestie dolor. Maecenas id cursus sapien. Curabitur vulputate massa eget velit imperdiet ornare.
+
+Nulla a eros turpis. Curabitur rutrum lectus venenatis tellus sodales, fermentum mollis dolor venenatis. Proin hendrerit tempus ex, commodo euismod leo. Quisque quam erat, tempor ac hendrerit vehicula, eleifend vitae justo. Nulla facilisi. Nam tincidunt nunc sollicitudin nisi rutrum imperdiet. Nullam congue tincidunt viverra. Vivamus nisl quam, vulputate a eros eget, volutpat accumsan lacus. Praesent sagittis ornare velit, elementum elementum lorem tincidunt eget. Vivamus blandit tortor blandit fringilla faucibus.
+
+Proin id purus a nisl volutpat faucibus at commodo est. Curabitur dapibus, justo ac pellentesque blandit, ligula risus aliquet lorem, et iaculis orci justo sed arcu. Cras tristique purus iaculis metus semper finibus et at magna. Phasellus malesuada sapien dui, et bibendum est viverra nec. Integer condimentum efficitur mauris ut interdum. Integer tortor nunc, faucibus quis urna in, faucibus congue arcu. Curabitur et elit tellus. Aenean in arcu lacinia, rutrum quam quis, rhoncus enim. Sed ultrices iaculis elit, ac luctus lectus volutpat sit amet. Quisque ac quam lectus. Duis nec est facilisis, sodales odio eu, scelerisque felis.
+
+Sed tincidunt at dui non sollicitudin. Morbi ligula erat, porta sit amet tempus sed, fermentum sed nisl. Quisque sodales hendrerit urna, id malesuada diam facilisis in. Pellentesque sapien tortor, euismod nec ipsum rhoncus, condimentum consectetur mi. Nam mollis sit amet tellus a cursus. Mauris sit amet pellentesque nibh, eu mattis metus. In efficitur purus mi, vel pulvinar sem tempus at. Phasellus bibendum a ante in venenatis. Nulla sagittis mauris at diam egestas, vitae aliquam mauris sollicitudin. Aenean molestie lacus imperdiet lorem mollis, ut volutpat nunc tincidunt. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam mattis felis ut commodo interdum. Nulla posuere nunc odio, sit amet semper nisl varius quis. Nulla nisi mauris, condimentum in augue eget, rhoncus ornare metus.
+
+Aliquam erat volutpat. Cras et purus a est imperdiet consequat ac at felis. Maecenas dictum turpis nec pretium maximus. Aliquam erat volutpat. Sed imperdiet urna at ipsum porta sodales. Nullam dictum, ante in mattis tincidunt, leo nisl rhoncus sapien, sit amet venenatis ante lacus sit amet ligula. Nam lorem velit, lobortis sit amet pulvinar vel, molestie vel mi. Morbi pretium nibh eu dolor gravida, in rutrum risus lacinia. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nam a est eleifend elit fringilla fringilla ut mollis elit. Morbi mattis in massa sed scelerisque. Etiam euismod pretium risus, ut hendrerit mi aliquam ultrices. Aenean egestas risus quam, vitae imperdiet orci rutrum nec. Nam sed nunc posuere, tincidunt ipsum eget, mollis augue.
+
+Nullam hendrerit leo sit amet libero facilisis pulvinar. Mauris tellus est, lacinia nec dignissim dignissim, commodo nec purus. Nulla tempus metus non dolor vehicula, ac rhoncus odio tristique. Duis a aliquam lorem. Curabitur sagittis tempus est vel tempor. Sed in mollis dui. Integer nec ante ac ligula porttitor cursus a ut risus. Etiam consequat ipsum eu metus aliquam, a mattis leo lacinia. Maecenas tempor orci ac lacinia sollicitudin. Donec neque nisi, sagittis quis elit nec, lacinia mattis ante. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam eget magna bibendum, rhoncus dui eget, hendrerit purus. Donec dignissim sagittis lectus, a faucibus tortor posuere at. Quisque euismod mi et magna luctus, vel viverra diam lacinia. Donec euismod fringilla urna a consectetur. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.
+
+Proin lacus purus, viverra a lacinia eget, faucibus in enim. Praesent ut aliquet lectus, ac volutpat mauris. Ut mollis libero in sollicitudin porttitor. Duis tincidunt risus sit amet efficitur rhoncus. Nam tellus nulla, euismod in finibus vel, vestibulum sed dolor. Phasellus efficitur tortor vitae ipsum ultricies viverra. Vestibulum risus justo, dapibus non magna nec, elementum ultrices nunc. Sed non eros tortor. Nam ultricies nunc eu interdum dapibus. Donec non dapibus nisl, et ultrices massa. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Phasellus nec dolor ut mi venenatis congue in in augue.
+
+Suspendisse euismod vulputate tortor consectetur auctor. Donec sit amet consectetur ipsum. Phasellus imperdiet mi eu feugiat vehicula. Vestibulum ut justo elementum, tincidunt purus quis, convallis turpis. Donec non condimentum lorem. Donec et interdum felis, vitae fermentum tortor. Maecenas sit amet ipsum vel urna congue condimentum. Praesent eu finibus massa, a auctor augue. Praesent nunc nibh, euismod eget mauris eu, tempor dapibus ipsum. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+
+Aliquam sed bibendum mi. Suspendisse hendrerit, ipsum ut euismod congue, erat augue volutpat sapien, a egestas neque purus sit amet arcu. Aliquam elementum nunc ipsum. Vivamus et lacus in lacus sollicitudin pharetra quis convallis quam. Cras gravida sodales commodo. Nullam viverra et risus et facilisis. Praesent gravida ligula ut ullamcorper eleifend. Duis elementum arcu sit amet risus efficitur malesuada at id nunc. Maecenas et laoreet massa. Vestibulum sagittis viverra urna eu gravida. Aenean lacinia nisl vitae augue bibendum feugiat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae;
+
+Proin a commodo quam. Duis sollicitudin leo nibh, sit amet consequat nulla tincidunt sed. Maecenas quis facilisis massa. Donec placerat, purus ac congue commodo, ex ante elementum ipsum, id congue justo sem a dui. Fusce imperdiet ex auctor, hendrerit augue eget, dapibus metus. Sed gravida finibus efficitur. Sed eu porta velit, sed mollis diam. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+
+Donec nisl justo, efficitur a dictum vitae, elementum a nulla. Nam sit amet accumsan massa. Aliquam vitae lacus nibh. Nullam iaculis sapien non bibendum pharetra. Quisque eu hendrerit ante, non consequat sapien. Ut rutrum orci a urna imperdiet, ut malesuada turpis volutpat. Fusce quis scelerisque lectus, sed convallis quam. Curabitur erat libero, rutrum vitae nunc eu, cursus hendrerit tellus. Mauris suscipit eleifend leo, luctus maximus nisl cursus vel. Praesent finibus id neque rhoncus tempus. Pellentesque et accumsan quam. Sed nunc mi, lacinia ut lacus in, mattis fringilla ante. Aliquam volutpat vitae lorem ac aliquam.
+
+Aliquam id felis vitae enim convallis sodales. Nunc finibus consectetur metus. Integer laoreet libero justo, a viverra lectus vulputate ac. Fusce aliquam felis et viverra feugiat. Vivamus lobortis quam sed mauris interdum, a mollis mauris sagittis. Nam nec lacus sed nisi viverra varius. Suspendisse non massa ac arcu tempor commodo. Aliquam enim metus, egestas ac risus nec, pretium eleifend felis. Phasellus quis magna mi. Sed sollicitudin faucibus lacus ac commodo.
+
+Suspendisse iaculis lacus in quam porttitor, eu euismod metus maximus. Suspendisse sed turpis quis sapien accumsan suscipit ac eu turpis. Nam rutrum ligula dolor, id sollicitudin nisl semper eget. Aenean pharetra dapibus lacus vitae lobortis. Cras vitae nibh nisi. Aliquam vitae laoreet lectus. Nunc quis malesuada ligula, non mattis libero. Quisque volutpat porta ipsum imperdiet facilisis. Ut cursus quam eget mauris molestie ultricies. Quisque at risus quis metus euismod venenatis. Suspendisse eu libero gravida risus auctor semper. Sed in cursus tellus. Aenean suscipit eu est ac imperdiet. Mauris velit eros, sagittis vitae porta non, tristique vel urna.
