diff --git a/R/posterdown.R b/R/posterdown.R
index b50d351..e226c95 100644
--- a/R/posterdown.R
+++ b/R/posterdown.R
@@ -1,15 +1,12 @@
-#' posterdown package
+#' posterdown.ids package
 #'
 #' This package creates posters for conferences
 #'
 #' @author Brent Thorne
+#' @author Marc Kupietz
 #'
-#' @section poster_html:
-#' Creates an R Markdown template for a PDF poster document via HTML
-#' @section poster_betterland:
-#' Creates an R Markdown template for a PDF poster document via HTML
-#' @section poster_betterport:
-#' Creates an R Markdown template for a PDF poster document via HTML
+#' @section posterdown_ids:
+#' Creates an R Markdown template for a IDS CD compliant PDF poster document via HTML
 #' @docType package
 #' @name posterdown
 NULL
diff --git a/R/posterdown_html.R b/R/posterdown_html.R
index 8e54155..a321229 100644
--- a/R/posterdown_html.R
+++ b/R/posterdown_html.R
@@ -1,24 +1,3 @@
-#' Posterdown HTML format (using pagedown::poster_relaxed)
-#'
-#' @inheritParams pagedown::poster_relaxed
-#' @param ... Additional arguments to `rmarkdown::html_document`
-#'
-#' @return R Markdown output format to pass to
-#'   [rmarkdown::render()]
-#'
-#'@examples
-#'\donttest{
-#'file <- file.path(tempdir(),"foo.rmd")
-#'rmarkdown::draft(file, template="posterdown_html", package="posterdown")
-#'}
-#'
-#' @export
-posterdown_html <- function(...,
-	template = find_resource("posterdown_html", "template.html"),
-	css = NULL) {
-	pagedown::poster_relaxed(..., css = css, template = template)
-}
-
 #' Posterdown IDS-CD based on HTML format (using pagedown::poster_relaxed)
 #'
 #' @inheritParams pagedown::poster_relaxed
@@ -30,12 +9,12 @@
 #'@examples
 #'\donttest{
 #'file <- file.path(tempdir(),"foo.rmd")
-#'rmarkdown::draft(file, template="posterdown_ids", package="posterdown")
+#'rmarkdown::draft(file, template="posterdown_ids", package="posterdown.ids")
 #'}
 #'
-#' @description The output format `poster_ids()` mimics the IDS Mannheim
+#' @description The output format `posterdown_ids()` mimics the IDS Mannheim
 #' corporate design posters.
-#' @rdname posterdown_html
+#' @rdname posterdown_ids
 #' @export
 posterdown_ids <- function(...,
                             template = find_resource("posterdown_ids", "template.html"),
@@ -43,25 +22,6 @@
   pagedown::poster_relaxed(..., css = css, template = template)
 }
 
-#' @description The output format `poster_betterland()` mimics the style of the
-#' BetterPoster movement from twitter.
-#' @rdname posterdown_html
-#' @export
-posterdown_betterland <- function(...,
-                            template = find_resource("posterdown_betterland", "template.html"),
-                            css = NULL) {
-  pagedown::poster_relaxed(..., css = css, template = template)
-}
-
-#' @description The output format `poster_betterport()` mimics the style of the
-#' BetterPoster movement from twitter.
-#' @rdname posterdown_html
-#' @export
-posterdown_betterport <- function(...,
-                                  template = find_resource("posterdown_betterport", "template.html"),
-                                  css = NULL) {
-  pagedown::poster_relaxed(..., css = css, template = template)
-}
 
 #' @description Print html code for a linked qr code to the given url
 #' @importFrom qrcode add_logo qr_code generate_svg
