diff --git a/DESCRIPTION b/DESCRIPTION
index 45b8220..900f120 100644
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -43,7 +43,6 @@
     highcharter,
     jsonlite,
     keyring,
-    plotly,
     htmlwidgets,
     utils,
     httr,
diff --git a/NAMESPACE b/NAMESPACE
index a3c590f..6017fe9 100644
--- a/NAMESPACE
+++ b/NAMESPACE
@@ -9,7 +9,6 @@
 export(defaultAssociationScoreFunctions)
 export(expand_grid)
 export(geom_freq_by_year_ci)
-export(ggplotly)
 export(group_by)
 export(hc_add_onclick_korap_search)
 export(hc_freq_by_year_ci)
@@ -76,12 +75,9 @@
 importFrom(ggplot2,layer)
 importFrom(ggplot2,scale_x_continuous)
 importFrom(ggplot2,theme)
-importFrom(htmlwidgets,onRender)
-importFrom(htmlwidgets,saveWidget)
 importFrom(jsonlite,fromJSON)
 importFrom(lubridate,year)
 importFrom(magrittr,"%>%")
-importFrom(plotly,ggplotly)
 importFrom(stats,prop.test)
 importFrom(tibble,add_column)
 importFrom(tibble,as_tibble)
diff --git a/NEWS.md b/NEWS.md
index e299e61..ec221e3 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -3,6 +3,7 @@
 ## Changes
 - collocationScoreQuery method added
 - hc_add_onclick_korap_search function added
+- support for orphaned plotly package dropped
 
 # RKorAPClient 0.5.9
 
diff --git a/R/misc.R b/R/misc.R
index 4529d7a..108d942 100644
--- a/R/misc.R
+++ b/R/misc.R
@@ -133,10 +133,12 @@
     scale_x_continuous(breaks = function(x) seq(ceiling(x[1]), floor(x[2]), by = 1 + floor(((x[2]-x[1])/30)))))
 }
 
+#'
 #' @importFrom ggplot2 ggproto aes GeomPoint
-GeomClickPoint <- ggproto(
+#'
+GeomClickPoint <- ggplot2::ggproto(
   "GeomPoint",
-  GeomPoint,
+  ggplot2::GeomPoint,
   required_aes = c("x", "y"),
   default_aes = aes(
     shape = 19, colour = "black", size = 1.5, fill = NA,
@@ -151,8 +153,8 @@
 
 #' @importFrom ggplot2 layer
 geom_click_point <- function(mapping = NULL, data = NULL, stat = "identity",
-                              position = "identity", na.rm = FALSE, show.legend = NA,
-                              inherit.aes = TRUE, url = NA, ...) {
+                             position = "identity", na.rm = FALSE, show.legend = NA,
+                             inherit.aes = TRUE, url = NA, ...) {
   layer(
     geom = GeomClickPoint, mapping = mapping,  data = data, stat = stat,
     position = position, show.legend = show.legend, inherit.aes = inherit.aes,
@@ -160,55 +162,3 @@
   )
 }
 
-
-#' @importFrom htmlwidgets onRender
-tooltip2hyperlink <- function(p, attribute="webUIRequestUrl") {
-  pattern <- paste0(attribute, ": ([^<]+)")
-  for(i in grep(attribute, p$x$data)) {
-    x <- p[["x"]][["data"]][[i]][["text"]]
-    m <- regexpr(pattern, x)
-    matches <- sub(paste0(attribute, ": "), "", regmatches(x, m))
-    p$x$data[[i]]$customdata <- matches
-    p[["x"]][["data"]][[i]][["text"]] <- sub(paste0(attribute, ":[^<]*<br ?/?>"), "", p[["x"]][["data"]][[i]][["text"]] )
-  }
-  onRender(p, "function(el, x) { el.on('plotly_click', function(d) { var url=d.points[0].customdata; if(url) { window.open(url, 'korap') } })}")
-}
-
-#' Experimental: Convert ggplot2 to plotly with hyperlinks to KorAP queries
-#'
-#' \code{RKorAPClient::ggplotly} converts a \code{ggplot2::ggplot()} object to a plotly
-#' object with hyperlinks from data points to corresponding KorAP queries.
-#' \bold{Warning:} This function may be moved to a new package.
-#'
-#' @param p a ggplot object.
-#' @param tooltip a character vector specifying which aesthetic mappings to show
-#'   in the tooltip. If you want hyperlinks to KorAP queries you need to include
-#'   \code{"url"} here.
-#' @param ... Other arguments passed to \code{plotly::ggplotly}
-#'
-#' @rdname misc-functions
-#'
-#' @examples
-#' library(ggplot2)
-#' kco <- new("KorAPConnection", verbose=TRUE)
-#' \donttest{year <- (2003:2011)}\dontshow{year <- c(2005)}
-#' \donttest{condition <- c("textDomain = /Wirtschaft.*/", "textDomain != /Wirtschaft.*/")}\dontshow{condition <- c("textDomain = /Wirtschaft.*/")}
-#' g <- expand_grid(condition, year) %>%
-#'   cbind(frequencyQuery(kco, "[tt/l=Heuschrecke]",
-#'                        paste0(.$condition," & pubDate in ", .$year)))  %>%
-#'   ipm() %>%
-#'   ggplot(aes(year, ipm, fill = condition, color = condition)) +
-#'   ##  theme_light(base_size = 20) +
-#'   geom_freq_by_year_ci()
-#' p <- ggplotly(g)
-#' print(p)
-#' ## saveWidget(p, paste0(tmpdir(), "heuschrecke.html")
-#'
-#'
-#' @importFrom plotly ggplotly
-#' @importFrom htmlwidgets saveWidget
-#' @export
-ggplotly <- function(p = ggplot2::last_plot(), tooltip = c("x", "y", "colour", "url"), ...) {
-  pp <- plotly::ggplotly(p = p, tooltip = tooltip, ...)
-  tooltip2hyperlink(pp)
-}
diff --git a/demo/alternativesOverTime.R b/demo/alternativesOverTime.R
index eb85ac8..07019bd 100755
--- a/demo/alternativesOverTime.R
+++ b/demo/alternativesOverTime.R
@@ -4,8 +4,6 @@
 #
 library(RKorAPClient)
 library(ggplot2)
-library(plotly)
-library(htmlwidgets)
 
 alternativesOverTime <- function(alternatives, years, kco = new("KorAPConnection", verbose=TRUE)) {
   df <- expand_grid(Variant = alternatives, year = years) %>%
@@ -16,8 +14,7 @@
     ggtitle(paste0(alternatives, collapse = " vs. ")) +
     xlab("TIME") +
     ylab(sprintf("Observed frequency ratio"))
-  ppp <- RKorAPClient::ggplotly(g)
-  print(ppp)
+  print(g)
   df
 }
 
diff --git a/demo/conditionsOverTime.R b/demo/conditionsOverTime.R
index b23d2bf..ccd5592 100644
--- a/demo/conditionsOverTime.R
+++ b/demo/conditionsOverTime.R
@@ -6,7 +6,6 @@
 #install_git("https://korap.ids-mannheim.de/gerrit/KorAP/RKorAPClient", upgrade="never")
 library(RKorAPClient)
 library(ggplot2)
-library(plotly)
 
 conditionsOverTime <- function(query, conditions, years, kco = new("KorAPConnection", verbose = TRUE)) {
   g <- expand_grid(condition = conditions, year = years) %>%
@@ -17,8 +16,7 @@
     xlab("TIME") +
     labs(color="Virtual Corpus", fill="Virtual Corpus") +
     ylab(sprintf("Observed frequency/million of \u201c%s\u201d", query))
-  p <- RKorAPClient::ggplotly(g)
-  print(p)
+  print(g)
 }
 
 conditionsOverTime("[tt/l=Heuschrecke]", c("textClass = /natur.*/", "textClass=/politik.*/", "textClass=/wirtschaft.*/"), (2002:2018))
diff --git a/demo/frequenciesOverTime.R b/demo/frequenciesOverTime.R
index 56b576f..aadd0d2 100644
--- a/demo/frequenciesOverTime.R
+++ b/demo/frequenciesOverTime.R
@@ -4,7 +4,6 @@
 #
 library(RKorAPClient)
 library(ggplot2)
-library(plotly)
 
 freqPerYear <- function(query, kco = new("KorAPConnection", verbose = TRUE)) {
   g <- data.frame(year = 2000:2018) %>%
@@ -15,8 +14,7 @@
     geom_freq_by_year_ci() +
     xlab("TIME") +
     ylab(sprintf("Observed frequency/million of \u201c%s\u201d", query))
-  p <- RKorAPClient::ggplotly(g)
-  print(p)
+  print(g)
   df
 }
 #df <- freqPerYear("Car-Bikini")
diff --git a/demo/regional.R b/demo/regional.R
index 05a3b6d..9480d67 100755
--- a/demo/regional.R
+++ b/demo/regional.R
@@ -3,7 +3,6 @@
 library(ggplot2)
 library(raster)
 library(broom)
-library(plotly)
 library(htmlwidgets)
 
 devAskNewPage(ask = FALSE)
@@ -58,14 +57,8 @@
     }
   }
   plot <- updatePlot(query, map, regions)
-  pp <- ggplotly(plot)
-  for (i in 1:nrow(regions)) {
-    j <- grep(paste0(regions$region[i], "\""), pp$x$data, perl=TRUE)
-    pp$x$data[[j]]$customdata <- regions[i,]$url
-  }
-  ppp <- onRender(pp, "function(el, x) { el.on('plotly_click', function(d) { var url=d.points[0].data.customdata; window.open(url, 'korap') })}")
-  print(ppp)
-  pp
+  print(plot)
+  plot
 }
 
 updatePlot <- function(query, map, regions) {
diff --git a/man/misc-functions.Rd b/man/misc-functions.Rd
index b0d9c0d..e3c0630 100644
--- a/man/misc-functions.Rd
+++ b/man/misc-functions.Rd
@@ -7,7 +7,6 @@
 \alias{percent}
 \alias{queryStringToLabel}
 \alias{geom_freq_by_year_ci}
-\alias{ggplotly}
 \title{Add confidence interval and relative frequency variables}
 \usage{
 ci(df, x = totalResults, N = total, conf.level = 0.95)
@@ -19,8 +18,6 @@
 queryStringToLabel(data, pubDateOnly = FALSE, excludePubDate = FALSE)
 
 geom_freq_by_year_ci(mapping = aes(ymin = conf.low, ymax = conf.high), ...)
-
-ggplotly(p = ggplot2::last_plot(), tooltip = c("x", "y", "colour", "url"), ...)
 }
 \arguments{
 \item{df}{table returned from \code{\link{frequencyQuery}}}
@@ -40,13 +37,7 @@
 
 \item{mapping}{Set of aesthetic mappings created by aes() or aes_(). If specified and inherit.aes = TRUE (the default), it is combined with the default mapping at the top level of the plot. You must supply mapping if there is no plot mapping.}
 
-\item{...}{Other arguments passed to \code{plotly::ggplotly}}
-
-\item{p}{a ggplot object.}
-
-\item{tooltip}{a character vector specifying which aesthetic mappings to show
-in the tooltip. If you want hyperlinks to KorAP queries you need to include
-\code{"url"} here.}
+\item{...}{Other arguments passed to geom_ribbon, geom_line, and geom_click_point.}
 }
 \value{
 original table with additional column \code{ipm} and converted columns \code{conf.low} and \code{conf.high}
@@ -72,10 +63,6 @@
 
 Experimental convenience function for plotting typical frequency by year graphs with confidence intervals using ggplot2.
 \bold{Warning:} This function may be moved to a new package.
-
-\code{RKorAPClient::ggplotly} converts a \code{ggplot2::ggplot()} object to a plotly
-object with hyperlinks from data points to corresponding KorAP queries.
-\bold{Warning:} This function may be moved to a new package.
 }
 \details{
 Given a table with columns \code{f}, \code{conf.low}, and \code{conf.high}, \code{ipm} ads a \code{column ipm}
@@ -117,22 +104,6 @@
   ggplot(aes(year, ipm, fill = condition, color = condition)) +
   geom_freq_by_year_ci()
 }
-library(ggplot2)
-kco <- new("KorAPConnection", verbose=TRUE)
-\donttest{year <- (2003:2011)}\dontshow{year <- c(2005)}
-\donttest{condition <- c("textDomain = /Wirtschaft.*/", "textDomain != /Wirtschaft.*/")}\dontshow{condition <- c("textDomain = /Wirtschaft.*/")}
-g <- expand_grid(condition, year) \%>\%
-  cbind(frequencyQuery(kco, "[tt/l=Heuschrecke]",
-                       paste0(.$condition," & pubDate in ", .$year)))  \%>\%
-  ipm() \%>\%
-  ggplot(aes(year, ipm, fill = condition, color = condition)) +
-  ##  theme_light(base_size = 20) +
-  geom_freq_by_year_ci()
-p <- ggplotly(g)
-print(p)
-## saveWidget(p, paste0(tmpdir(), "heuschrecke.html")
-
-
 }
 \seealso{
 \code{ci} is already included in \code{\link{frequencyQuery}}
diff --git a/tests/testthat/test-demos.R b/tests/testthat/test-demos.R
index bfc8f2e..8f99284 100644
--- a/tests/testthat/test-demos.R
+++ b/tests/testthat/test-demos.R
@@ -116,27 +116,3 @@
     hc_freq_by_year_ci()
   expect_true(all(class(hc) %in% c("highchart", "htmlwidget")))
 })
-
-test_that("Conditions over time ggplotly example works", {
-  kco <- new("KorAPConnection")
-  p <- expand_grid(
-    condition = c("textDomain = /Wirtschaft.*/",
-                  "textDomain != /Wirtschaft.*/"),
-    year = (2010:2013)
-  ) %>%
-    cbind(frequencyQuery(
-      kco,
-      "[tt/l=Heuschrecke]",
-      paste(.$condition, "& pubDate in", .$year)
-    ))  %>%
-    ipm() %>%
-    ggplot(aes(
-      x = year,
-      y = ipm,
-      fill = condition,
-      colour = condition
-    )) +
-    geom_freq_by_year_ci()
-  pp <- ggplotly(p)
-  expect_error(print(pp), NA)
-})
