diff --git a/man/KorAPConnection-class.Rd b/man/KorAPConnection-class.Rd
index df40b36..0637e39 100644
--- a/man/KorAPConnection-class.Rd
+++ b/man/KorAPConnection-class.Rd
@@ -14,8 +14,12 @@
 \usage{
 \S4method{initialize}{KorAPConnection}(
   .Object,
-  KorAPUrl = if (is.null(Sys.getenv("KORAP_URL")) | Sys.getenv("KORAP_URL") == "")
-    "https://korap.ids-mannheim.de/" else Sys.getenv("KORAP_URL"),
+  KorAPUrl = if (is.null(Sys.getenv("KORAP_URL")) | Sys.getenv("KORAP_URL") == "") {
+    
+    "https://korap.ids-mannheim.de/"
+ } else {
+     Sys.getenv("KORAP_URL")
+ },
   apiVersion = "v1.0",
   apiUrl,
   accessToken = getAccessToken(KorAPUrl),
@@ -161,8 +165,8 @@
 
 \dontrun{
 
-kcon <- KorAPConnection(verbose = TRUE, accessToken="e739u6eOzkwADQPdVChxFg")
-kq <- corpusQuery(kcon, "Ameisenplage", metadataOnly=FALSE)
+kcon <- KorAPConnection(verbose = TRUE, accessToken = "e739u6eOzkwADQPdVChxFg")
+kq <- corpusQuery(kcon, "Ameisenplage", metadataOnly = FALSE)
 kq <- fetchAll(kq)
 kq@collectedMatches$snippet
 }
diff --git a/man/KorAPQuery-class.Rd b/man/KorAPQuery-class.Rd
index e6705e3..1bfa9ce 100644
--- a/man/KorAPQuery-class.Rd
+++ b/man/KorAPQuery-class.Rd
@@ -37,9 +37,13 @@
 
 \S4method{corpusQuery}{KorAPConnection}(
   kco,
-  query = if (missing(KorAPUrl))
+  query = if (missing(KorAPUrl)) {
+    
     stop("At least one of the parameters query and KorAPUrl must be specified.", call. =
-    FALSE) else httr2::url_parse(KorAPUrl)$query$q,
+    FALSE)
+ } else {
+     httr2::url_parse(KorAPUrl)$query$q
+ },
   vc = if (missing(KorAPUrl)) "" else httr2::url_parse(KorAPUrl)$query$cq,
   KorAPUrl,
   metadataOnly = TRUE,
@@ -69,9 +73,13 @@
 
 buildWebUIRequestUrl(
   kco,
-  query = if (missing(KorAPUrl))
+  query = if (missing(KorAPUrl)) {
+    
     stop("At least one of the parameters query and KorAPUrl must be specified.", call. =
-    FALSE) else httr2::url_parse(KorAPUrl)$query$q,
+    FALSE)
+ } else {
+     httr2::url_parse(KorAPUrl)$query$q
+ },
   vc = if (missing(KorAPUrl)) "" else httr2::url_parse(KorAPUrl)$query$cq,
   KorAPUrl,
   ql = if (missing(KorAPUrl)) "poliqarp" else httr2::url_parse(KorAPUrl)$query$ql
@@ -172,7 +180,9 @@
 \dontrun{
 
 # Fetch metadata of every query hit for "Ameisenplage" and show a summary
-KorAPConnection() \%>\% corpusQuery("Ameisenplage") \%>\% fetchAll()
+KorAPConnection() \%>\%
+  corpusQuery("Ameisenplage") \%>\%
+  fetchAll()
 }
 
 \dontrun{
@@ -181,15 +191,19 @@
 # and show the number of query hits (but don't fetch them).
 
 KorAPConnection(verbose = TRUE) \%>\%
- corpusQuery(KorAPUrl =
-   "https://korap.ids-mannheim.de/?q=Ameise&cq=pubDate+since+2017&ql=poliqarp")
+  corpusQuery(
+    KorAPUrl =
+      "https://korap.ids-mannheim.de/?q=Ameise&cq=pubDate+since+2017&ql=poliqarp"
+  )
 }
 
 \dontrun{
 
 # Plot the time/frequency curve of "Ameisenplage"
-KorAPConnection(verbose=TRUE) \%>\%
-  { . ->> kco } \%>\%
+KorAPConnection(verbose = TRUE) \%>\%
+  {
+    . ->> kco
+  } \%>\%
   corpusQuery("Ameisenplage") \%>\%
   fetchAll() \%>\%
   slot("collectedMatches") \%>\%
@@ -197,27 +211,34 @@
   dplyr::select(year) \%>\%
   group_by(year) \%>\%
   summarise(Count = dplyr::n()) \%>\%
-  mutate(Freq = mapply(function(f, y)
-    f / corpusStats(kco, paste("pubDate in", y))@tokens, Count, year)) \%>\%
+  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")
 }
 \dontrun{
 
-q <- KorAPConnection() \%>\% corpusQuery("Ameisenplage") \%>\% fetchNext()
+q <- KorAPConnection() \%>\%
+  corpusQuery("Ameisenplage") \%>\%
+  fetchNext()
 q@collectedMatches
 }
 
 \dontrun{
 
-q <- KorAPConnection() \%>\% corpusQuery("Ameisenplage") \%>\% fetchAll()
+q <- KorAPConnection() \%>\%
+  corpusQuery("Ameisenplage") \%>\%
+  fetchAll()
 q@collectedMatches
 }
 
 \dontrun{
 
-q <- KorAPConnection() \%>\% corpusQuery("Ameisenplage") \%>\% fetchRest()
+q <- KorAPConnection() \%>\%
+  corpusQuery("Ameisenplage") \%>\%
+  fetchRest()
 q@collectedMatches
 }
 
diff --git a/man/auth-KorAPConnection-method.Rd b/man/auth-KorAPConnection-method.Rd
index bdb0993..3e8d336 100644
--- a/man/auth-KorAPConnection-method.Rd
+++ b/man/auth-KorAPConnection-method.Rd
@@ -33,7 +33,8 @@
 \dontrun{
 kco <- KorAPConnection(verbose = TRUE) \%>\% auth()
 df <- collocationAnalysis(kco, "focus([marmot/p=ADJA] {Ameisenplage})",
-  leftContextSize=1, rightContextSize=0)
+  leftContextSize = 1, rightContextSize = 0
+)
 }
 
 }
diff --git a/man/clearAccessToken-KorAPConnection-method.Rd b/man/clearAccessToken-KorAPConnection-method.Rd
index a6c665a..ecc7570 100644
--- a/man/clearAccessToken-KorAPConnection-method.Rd
+++ b/man/clearAccessToken-KorAPConnection-method.Rd
@@ -17,7 +17,6 @@
 Clear access token from keyring and KorAPConnection object
 }
 \examples{
-
 \dontrun{
 kco <- KorAPConnection()
 kco <- clearAccessToken(kco)
diff --git a/man/persistAccessToken-KorAPConnection-method.Rd b/man/persistAccessToken-KorAPConnection-method.Rd
index 094acee..4e539d7 100644
--- a/man/persistAccessToken-KorAPConnection-method.Rd
+++ b/man/persistAccessToken-KorAPConnection-method.Rd
@@ -20,10 +20,12 @@
 }
 \examples{
 \dontrun{
-kco <- KorAPConnection(accessToken="e739u6eOzkwADQPdVChxFg")
+kco <- KorAPConnection(accessToken = "e739u6eOzkwADQPdVChxFg")
 persistAccessToken(kco)
 
-kco <- KorAPConnection() \%>\% auth(app_id="<my application id>") \%>\% persistAccessToken()
+kco <- KorAPConnection() \%>\%
+  auth(app_id = "<my application id>") \%>\%
+  persistAccessToken()
 }
 
 }
