diff --git a/R/KorAPConnection.R b/R/KorAPConnection.R
index 7eface5..fa8f1f5 100644
--- a/R/KorAPConnection.R
+++ b/R/KorAPConnection.R
@@ -4,10 +4,11 @@
 #' New \code{KorAPConnection} objects can be created by \code{KorAPConnection()}.
 #'
 #' @import R.cache
-#' @import jsonlite
 #' @import utils
 #' @import methods
-#'
+#' @import dplyr
+#' @import purrr
+#' @import tidyr
 #'
 
 #' @export
@@ -64,6 +65,8 @@
 #' @rdname KorAPConnection-class
 #' @param kco KorAPConnection object
 #' @param url request url
+#' @importFrom jsonlite fromJSON
+#' @export
 setMethod("apiCall", "KorAPConnection",  function(kco, url) {
   if (kco@cache) {
     parsed <- R.cache::loadCache(dir=KorAPCacheSubDir(), key=list(url))
diff --git a/R/KorAPQuery.R b/R/KorAPQuery.R
index 0b9ee7c..3cc0b37 100644
--- a/R/KorAPQuery.R
+++ b/R/KorAPQuery.R
@@ -4,7 +4,8 @@
 #' New \code{KorAPQuery} objects are typically created by the \code{\link{corpusQuery}} method.
 #'
 #' @include KorAPConnection.R
-#' @import jsonlite
+#' @import tidyr
+#' @import dplyr
 #' @import httr
 #'
 #'
@@ -98,28 +99,30 @@
 #'
 #' @examples
 #' # Fetch metadata of every query hit for "Ameisenplage" and show a summary
-#' kco <- new("KorAPConnection")
-#' kqo <- corpusQuery(kco, "Ameisenplage")
-#' kqo <- fetchAll(kqo)
-#' kqo
+#' new("KorAPConnection") %>% corpusQuery("Ameisenplage") %>% fetchAll()
 #'
 #' # Use the copy of a KorAP-web-frontend URL for an API query of "Ameise" in a virtual corpus
 #' # and show the number of query hits (but don't fetch them).
-#' kco <- new("KorAPConnection")
-#' kqo <- corpusQuery(kco,
-#'        KorAPUrl = "https://korap.ids-mannheim.de/?q=Ameise&cq=pubDate+since+2017&ql=poliqarp")
-#' kqo
+#'
+#' new("KorAPConnection", verbose = TRUE) %>%
+#'  corpusQuery(KorAPUrl =
+#'    "https://korap.ids-mannheim.de/?q=Ameise&cq=pubDate+since+2017&ql=poliqarp")
 #'
 #' # Plot the time/frequency curve of "Ameisenplage"
-#' kco <- new("KorAPConnection", verbose=TRUE)
-#' q <- fetchAll(corpusQuery(kco, "Ameisenplage"))
-#' df <- as.data.frame(table(as.numeric(format(q@collectedMatches$pubDate,"%Y")), dnn="year"),
-#'                     stringsAsFactors = FALSE)
-#' df$Freq <- mapply(function(f, y) f / corpusStats(kco, paste("pubDate in", y))@tokens,
-#'                   df$Freq, df$year)
-#' df <- merge(data.frame(year=min(df$year):max(df$year)), df, all = TRUE)
-#' df[is.na(df$Freq),]$Freq <- 0
-#' plot(df, type="l")
+#' new("KorAPConnection", verbose=TRUE) %>%
+#'   { . ->> kco } %>%
+#'   corpusQuery("Ameisenplage") %>%
+#'   fetchAll() %>%
+#'   slot("collectedMatches") %>%
+#'   mutate(year = lubridate::year(pubDate)) %>%
+#'   dplyr::select(year) %>%
+#'   group_by(year) %>%
+#'   summarise(Count = n()) %>%
+#'   mutate(Freq = mapply(function(f, y)
+#'     f / corpusStats(kco, paste("pubDate in", y))@tokens, Count, year)) %>%
+#'   dplyr::select(-Count) %>%
+#'   complete(year = min(year):max(year), fill = list(Freq = 0)) %>%
+#'   plot(type = "l")
 #'
 #' @seealso \code{\link{KorAPConnection}}, \code{\link{fetchNext}}, \code{\link{fetchRest}}, \code{\link{fetchAll}}, \code{\link{corpusStats}}
 #'
@@ -203,10 +206,14 @@
         res$matches[, field] <- NA
       }
     }
-    currentMatches <- res$matches[kqo@fields]
+    currentMatches <-
+      kqo@fields %>%
+      map_dfr( ~tibble(!!.x := logical() ) ) %>%
+      bind_rows(res$matches) %>%
+      select(kqo@fields)
     if ("pubDate" %in% kqo@fields) {
-      currentMatches$pubDate = as.Date(currentMatches$pubDate, format = "%Y-%m-%d")
-      factorCols <- colnames(subset(currentMatches, select=-c(pubDate)))
+      currentMatches$pubDate <-  currentMatches$pubDate %>% as.Date(format = "%Y-%m-%d")
+      factorCols <- currentMatches %>% select(-pubDate) %>% colnames()
     } else {
       factorCols <- colnames(currentMatches)
     }
@@ -242,7 +249,7 @@
 #' Fetch all results of a KorAP query.
 #'
 #' @examples
-#' q <- fetchAll(corpusQuery(new("KorAPConnection"), "Ameisenplage"))
+#' q <- new("KorAPConnection") %>% corpusQuery("Ameisenplage") %>% fetchAll()
 #' q@collectedMatches
 #'
 #' @aliases fetchAll
@@ -255,7 +262,7 @@
 #' Fetches the remaining results of a KorAP query.
 #'
 #' @examples
-#' q <- fetchRest(fetchNext(corpusQuery(new("KorAPConnection"), "Ameisenplage")))
+#' q <- new("KorAPConnection") %>% corpusQuery("Ameisenplage") %>% fetchAll()
 #' q@collectedMatches
 #'
 #' @aliases fetchRest
diff --git a/R/reexports.R b/R/reexports.R
new file mode 100644
index 0000000..f6624ba
--- /dev/null
+++ b/R/reexports.R
@@ -0,0 +1,30 @@
+
+#' Pipe operator
+#'
+#' See \code{magrittr::\link[magrittr:pipe]{\%>\%}} for details.
+#'
+#' @name %>%
+#' @rdname pipe
+#' @keywords internal
+#' @export
+#' @importFrom magrittr %>%
+#' @usage lhs \%>\% rhs
+NULL
+#' @importFrom dplyr mutate
+#' @export
+dplyr::mutate
+#' @importFrom dplyr select
+#' @export
+dplyr::select
+#' @importFrom dplyr group_by
+#' @export
+dplyr::group_by
+#' @importFrom dplyr summarise
+#' @export
+dplyr::summarise
+#' @importFrom tidyr complete
+#' @export
+tidyr::complete
+#' @importFrom lubridate year
+#' @export
+lubridate::year
