diff --git a/tests/testthat/test-KorAPConnection.R b/tests/testthat/test-KorAPConnection.R
index 0755b08..42e3fd6 100644
--- a/tests/testthat/test-KorAPConnection.R
+++ b/tests/testthat/test-KorAPConnection.R
@@ -1,32 +1,32 @@
 test_that("KorAPConnection fails gracefully on unresolvable host", {
-  expect_message(new("KorAPConnection", accessToken = NULL, apiUrl="http://xxx.asdhsahdsadhvgas.org"), "No internet|Could not resolve")
+  expect_message(KorAPConnection(accessToken = NULL, apiUrl="http://xxx.asdhsahdsadhvgas.org"), "No internet|Could not resolve")
 })
 
 test_that("KorAPConnection fails gracefully on timeout", {
-  expect_message(new("KorAPConnection", apiUrl="http://httpbin.org/delay/3", accessToken = NULL, timeout = 0.2), "No internet|Timeout|json|progress")
+  expect_message(KorAPConnection(apiUrl="http://httpbin.org/delay/3", accessToken = NULL, timeout = 0.2), "No internet|Timeout|json|progress")
 })
 
 test_that("KorAPConnection fails gracefully on Bad Gateway errors", {
-  expect_message(new("KorAPConnection", apiUrl="http://httpbin.org/status/502", accessToken = NULL, timeout = 0.5), "No internet|Timeout|progress|json|502")
+  expect_message(KorAPConnection(apiUrl="http://httpbin.org/status/502", accessToken = NULL, timeout = 0.5), "No internet|Timeout|progress|json|502")
 })
 
 test_that("KorAPConnection is printable", {
-  kco <- new("KorAPConnection", accessToken = NULL, timeout = 1)
+  kco <- KorAPConnection(accessToken = NULL, timeout = 1)
   skip_if(is.null(kco@welcome))
   expect_error(print(kco), NA)
 })
 
 test_that("Opening KorAPConnection prints some message.", {
-  expect_message(new("KorAPConnection", accessToken = NULL), "KorAP")
+  expect_message(KorAPConnection(accessToken = NULL), "KorAP")
 })
 
 test_that("Opening KorAPConnection with invalid apiToken fails gracefully", {
-  expect_message(new("KorAPConnection", accessToken="test token", timeout = 3),
+  expect_message(KorAPConnection(accessToken="test token", timeout = 3),
                "401|Timeout|progress")
 })
 
 test_that("Persisting null apiToken fails", {
-  kco <- new("KorAPConnection", accessToken = NULL, timeout = 3)
+  kco <- KorAPConnection(accessToken = NULL, timeout = 3)
   skip_if_not(is.null(kco@accessToken))
   skip_if(is.null(kco@welcome))
   expect_error(persistAccessToken(kco),
@@ -35,8 +35,8 @@
 })
 
 test_that("Opening KorAPConnection with KorAPUrl works", {
-  kco <- new("KorAPConnection", accessToken = NULL, KorAPUrl="https://korap.ids-mannheim.de", timeout = 1)
+  kco <- KorAPConnection(accessToken = NULL, KorAPUrl="https://korap.ids-mannheim.de", timeout = 1)
   expect_equal(kco@apiUrl, paste0("https://korap.ids-mannheim.de/api/", kco@apiVersion, "/"))
-  kco <- new("KorAPConnection", accessToken = NULL, KorAPUrl="https://korap.ids-mannheim.de/", timeout = 1)
+  kco <- KorAPConnection(accessToken = NULL, KorAPUrl="https://korap.ids-mannheim.de/", timeout = 1)
   expect_equal(kco@apiUrl, paste0("https://korap.ids-mannheim.de/api/", kco@apiVersion, "/"))
 })
diff --git a/tests/testthat/test-collocations.R b/tests/testthat/test-collocations.R
index aa4a771..d0dd761 100644
--- a/tests/testthat/test-collocations.R
+++ b/tests/testthat/test-collocations.R
@@ -1,6 +1,6 @@
 test_that("collocationScoreQuery works", {
   skip_if_offline()
-  kco <- new("KorAPConnection", accessToken = NULL, cache = TRUE, verbose = TRUE)
+  kco <- KorAPConnection(accessToken = NULL, cache = TRUE, verbose = TRUE)
   df <- collocationScoreQuery(kco, "Ameisenplage", "heimgesucht", leftContextSize=0, rightContextSize=1)
   expect_gt(df$logDice, 1)
   expect_equal(df$ll, ll(df$O1, df$O2, df$O, df$N, df$E, df$w))
@@ -13,7 +13,7 @@
 
 test_that("collocationAnalysis works and warns about missing token", {
   skip_if_offline()
-  kco <- new("KorAPConnection",
+  kco <- KorAPConnection(
                accessToken = NULL,
                verbose = TRUE)
     expect_warning(
@@ -32,7 +32,7 @@
 
 test_that("collocationAnalysis on unaccounted strings does not error out", {
   skip_if_offline()
-  kco <- new("KorAPConnection", accessToken = NULL, verbose = TRUE)
+  kco <- KorAPConnection(accessToken = NULL, verbose = TRUE)
   expect_warning(
     df <- collocationAnalysis(kco, "XXXXXXXXAmeisenplage", vc=c("corpusSigle=/WDD17/", "corpusSigle=/WUD17/"), maxRecurse = 2),
     "access token"
diff --git a/tests/testthat/test-corpusQuery.R b/tests/testthat/test-corpusQuery.R
index 223f526..e5289e0 100644
--- a/tests/testthat/test-corpusQuery.R
+++ b/tests/testthat/test-corpusQuery.R
@@ -1,13 +1,13 @@
 test_that("frequencyQuery can be cached", {
   skip_if_offline()
-  kco <- new("KorAPConnection", accessToken = NULL, cache = TRUE, verbose = TRUE)
+  kco <- KorAPConnection(accessToken = NULL, cache = TRUE, verbose = TRUE)
   frequencyQuery(kco, "Ameisenplage", "pubDate since 2014")
   expect_output(frequencyQuery(kco, "Ameisenplage", "pubDate since 2014"), "cached")
 })
 
 test_that("collocationScoreQuery works", {
   skip_if_offline()
-  kco <- new("KorAPConnection",  accessToken = NULL, cache = TRUE, verbose = TRUE)
+  kco <- KorAPConnection(accessToken = NULL, cache = TRUE, verbose = TRUE)
   df <- collocationScoreQuery(kco,"Ameisenplage", "heimgesucht", leftContextSize=0, rightContextSize=1)
   expect_gt(df$logDice, 1)
   expect_equal(df$ll, ll(df$O1, df$O2, df$O, df$N, df$E, df$w))
@@ -19,7 +19,7 @@
 
 test_that("Cache depends on indexRevision (handling also NULL values)", {
   skip_if_offline()
-  kco <- new("KorAPConnection", accessToken = NULL, cache = TRUE, verbose = TRUE)
+  kco <- KorAPConnection(accessToken = NULL, cache = TRUE, verbose = TRUE)
   kco@indexRevision <- NULL
   frequencyQuery(kco, "Ameisenplage", "pubDate since 2014")
   kco@indexRevision <- as.character(Sys.time())
@@ -29,7 +29,7 @@
 
 test_that("corpusQuery returns results", {
   skip_if_offline()
-  q <- new("KorAPConnection", accessToken = NULL) %>%
+  q <- KorAPConnection(accessToken = NULL) %>%
     corpusQuery("Ameisenplage")
   expect_gt(q@totalResults, 0)
 })
@@ -41,7 +41,7 @@
   Encoding(vc)="latin1"
 
   skip_if_offline()
-  q <- new("KorAPConnection", accessToken = NULL) %>%
+  q <- KorAPConnection(accessToken = NULL) %>%
     corpusQuery(query, vc=vc)
   expect_gt(q@totalResults, 0)
 })
@@ -53,14 +53,14 @@
   Encoding(vc)="UTF-8"
 
   skip_if_offline()
-  q <- new("KorAPConnection", accessToken = NULL) %>%
+  q <- KorAPConnection(accessToken = NULL) %>%
     corpusQuery(query, vc=vc)
   expect_gt(q@totalResults, 0)
 })
 
 test_that("fetchAll fetches all results with match positions", {
   skip_if_offline()
-  q <- new("KorAPConnection", accessToken = NULL, verbose = TRUE) %>%
+  q <- KorAPConnection(accessToken = NULL, verbose = TRUE) %>%
     corpusQuery("Ameisenplage", vc = "pubDate since 2014")
   expectedResults <- q@totalResults
   matches <- fetchAll(q)@collectedMatches
@@ -72,7 +72,7 @@
 
 test_that("fetchAll fetches textClass metadatum", {
   skip_if_offline()
-  q <- new("KorAPConnection", accessToken = NULL, verbose = TRUE) %>%
+  q <- KorAPConnection(accessToken = NULL, verbose = TRUE) %>%
     corpusQuery("Ameisenplage", vc = "pubDate since 2014")
   expectedResults <- q@totalResults
   matches <- fetchAll(q)@collectedMatches
@@ -83,13 +83,13 @@
 
 test_that("Uncached query for non-matching search string return 0 results", {
   skip_if_offline()
-  q <- new("KorAPConnection", accessToken = NULL, cache = FALSE) %>% corpusQuery("Xmeisenplagx")
+  q <- KorAPConnection(accessToken = NULL, cache = FALSE) %>% corpusQuery("Xmeisenplagx")
   expect_equal( q@totalResults, 0)
 })
 
 test_that("Empty query result is printable", {
   skip_if_offline()
-  q <- new("KorAPConnection", accessToken = NULL, cache = TRUE, verbose = TRUE) %>%
+  q <- KorAPConnection(accessToken = NULL, cache = TRUE, verbose = TRUE) %>%
     corpusQuery("Xmeisenplagx", vc = "pubDate in 2012") %>%
     fetchNext()
   expect_output(print(q), "Xmeisenplagx.*pubDate in 2012")
@@ -97,7 +97,7 @@
 
 test_that("Non-empty query result is printable", {
   skip_if_offline()
-  q <- new("KorAPConnection", accessToken = NULL, cache = TRUE, verbose = TRUE) %>%
+  q <- KorAPConnection(accessToken = NULL, cache = TRUE, verbose = TRUE) %>%
     corpusQuery("Ameisenplage", "pubDate since 2014", fields=c("textSigle")) %>%
     fetchRest()
   expect_output(print(q), "Ameisenplage.*pubDate since 2014")
@@ -105,7 +105,7 @@
 
 test_that("Query from KorAP URL returns as many results as corresponding direct query", {
   skip_if_offline()
-  kco <- new("KorAPConnection", accessToken = NULL)
+  kco <- KorAPConnection(accessToken = NULL)
   r1 <- corpusQuery(kco, KorAPUrl = "https://korap.ids-mannheim.de/?q=Ameisenplage&cq=pubDate+since+2014&ql=poliqarp")@totalResults
   r2 <- corpusQuery(kco, "Ameisenplage", "pubDate since 2014")@totalResults
   expect_equal(r1, r2)
@@ -113,13 +113,13 @@
 
 test_that("Typo in query causes error", {
   skip_if_offline()
-  kco <- new("KorAPConnection", accessToken = NULL, verbose = TRUE)
+  kco <- KorAPConnection(accessToken = NULL, verbose = TRUE)
   expect_message(kco %>% corpusQuery("[[xx"), "unbalanced")
 })
 
 test_that("corpusQuery token API works", {
   skip_if_offline()
-  kco <- new("KorAPConnection", accessToken = NULL,
+  kco <- KorAPConnection(accessToken = NULL,
              verbose = TRUE)
   q <- corpusQuery(kco, "focus([tt/p=ADJA] {Newstickeritis})", vc = "corpusSigle=/W.D17/", metadataOnly = FALSE)
   q <- fetchNext(q)
@@ -138,7 +138,7 @@
 
 test_that("matchStart and matchEnd are present and correct", {
   skip_if_offline()
-  kco <- new("KorAPConnection", accessToken = NULL, verbose = TRUE)
+  kco <- KorAPConnection(accessToken = NULL, verbose = TRUE)
   q <- corpusQuery(kco, "focus([tt/p=ADJA] {Newstickeritis})", vc = "corpusSigle=/W.D17/", metadataOnly = FALSE)
   q <- fetchNext(q)
   matches <-q@collectedMatches
@@ -147,7 +147,7 @@
 })
 
 test_that("extended metadata fields work cortrectly on instane KED", {
-  kco <- new("KorAPConnection", KorAPUrl = "https://korap.ids-mannheim.de/instance/ked", accessToken = NULL,
+  kco <- KorAPConnection(KorAPUrl = "https://korap.ids-mannheim.de/instance/ked", accessToken = NULL,
              verbose = TRUE)
   q <- corpusQuery(
     kco,
@@ -191,7 +191,7 @@
 
 test_that("corpusQuery token API works when textSigle field is deselected", {
   skip_if_offline()
-  kco <- new("KorAPConnection", accessToken = NULL, verbose = TRUE)
+  kco <- KorAPConnection(accessToken = NULL, verbose = TRUE)
   q <- corpusQuery(kco, "focus([tt/p=ADJA] {Newstickeritis})",
                    vc = "corpusSigle=/W.D17/",
                    fields = c("tokens"),
diff --git a/tests/testthat/test-corpusStats.R b/tests/testthat/test-corpusStats.R
index c25670d..f12159d 100644
--- a/tests/testthat/test-corpusStats.R
+++ b/tests/testthat/test-corpusStats.R
@@ -1,6 +1,6 @@
 test_that("corpusStats works", {
   skip_if_offline()
-  stats <- new("KorAPConnection", accessToken = NULL) %>% corpusStats("pubDate since 2020 & pubDate until 2021")
+  stats <- KorAPConnection(accessToken = NULL) %>% corpusStats("pubDate since 2020 & pubDate until 2021")
   expect_gt(stats@tokens, 0)
   expect_gt(stats@paragraphs, 0)
   expect_gt(stats@documents, 0)
@@ -9,7 +9,7 @@
 
 test_that("corpusStats with result as df works", {
   skip_if_offline()
-  stats <- new("KorAPConnection", accessToken = NULL) %>% corpusStats("pubDate since 2020 & pubDate until 2021", as.df = TRUE)
+  stats <- KorAPConnection(accessToken = NULL) %>% corpusStats("pubDate since 2020 & pubDate until 2021", as.df = TRUE)
   expect_gt(stats$tokens, 0)
   expect_gt(stats$paragraphs, 0)
   expect_gt(stats$documents, 0)
@@ -18,12 +18,12 @@
 
 test_that("Printing corpusStats for the whole corpus works", {
   skip_if_offline()
-  stats <- new("KorAPConnection", accessToken = NULL) %>% corpusStats()
+  stats <- KorAPConnection(accessToken = NULL) %>% corpusStats()
   expect_error(print(stats), NA)
 })
 
 test_that("Printing corpusStats for a sub-corpus works", {
   skip_if_offline()
-  stats <- new("KorAPConnection", accessToken = NULL) %>% corpusStats("pubDate since 2020 & pubDate until 2021")
+  stats <- KorAPConnection(accessToken = NULL) %>% corpusStats("pubDate since 2020 & pubDate until 2021")
   expect_error(print(stats), NA)
 })
diff --git a/tests/testthat/test-demos.R b/tests/testthat/test-demos.R
index 2e1a0a3..7bd38e4 100644
--- a/tests/testthat/test-demos.R
+++ b/tests/testthat/test-demos.R
@@ -2,7 +2,7 @@
   skip_if_offline()
   year <- c(2013:2018)
   alternatives <- c("macht []{0,3} Sinn", "ergibt []{0,3} Sinn")
-  hc <- new("KorAPConnection", accessToken = NULL, verbose = TRUE) %>%
+  hc <- KorAPConnection(accessToken = NULL, verbose = TRUE) %>%
     frequencyQuery(
       query = alternatives,
       vc = paste("textType = /Zeit.*/ & pubDate in", year),
@@ -17,7 +17,7 @@
   year <- c(2013:2018)
   alternatives <- c("macht []{0,3} Sinn", "ergibt []{0,3} Sinn")
 
-  hc <- new("KorAPConnection", accessToken = NULL, verbose = TRUE) %>%
+  hc <- KorAPConnection(accessToken = NULL, verbose = TRUE) %>%
     frequencyQuery(
       query = alternatives,
       vc = paste("textType = /Zeit.*/ & pubDate in", year),
@@ -32,7 +32,7 @@
   year <- c(2013:2018)
   alternatives <- c("macht []{0,3} Sinn", "ergibt []{0,3} Sinn")
 
-  hc <- new("KorAPConnection", accessToken = NULL, verbose = TRUE) %>%
+  hc <- KorAPConnection(accessToken = NULL, verbose = TRUE) %>%
     frequencyQuery(
       query = alternatives,
       vc = paste("textType = /Zeit.*/ & pubDate in", year),
@@ -47,7 +47,7 @@
   year <- c(2013:2018)
   q <- c("macht []{0,3} Sinn")
 
-  hc <- new("KorAPConnection", accessToken = NULL, verbose = TRUE) %>%
+  hc <- KorAPConnection(accessToken = NULL, verbose = TRUE) %>%
     frequencyQuery(
       query = q,
       vc = paste("textType = /Zeit.*/ & pubDate in", year),
@@ -59,7 +59,7 @@
 
 test_that("Auto conditions over time highcharter example works", {
   skip_if_offline()
-  kco <- new("KorAPConnection", accessToken = NULL, verbose=TRUE)
+  kco <- KorAPConnection(accessToken = NULL, verbose=TRUE)
   hc <- expand_grid(
     myconditions = c("textDomain = /Wirtschaft.*/",
                   "textDomain != /Wirtschaft.*/"),
@@ -76,7 +76,7 @@
 
 test_that("Single condition over time highcharter example works", {
   skip_if_offline()
-  kco <- new("KorAPConnection", accessToken = NULL, verbose=TRUE)
+  kco <- KorAPConnection(accessToken = NULL, verbose=TRUE)
   hc <- expand_grid(
     condition = c("textDomain = /Wirtschaft.*/"),
     year = (2011:2013)
@@ -92,7 +92,7 @@
 
 test_that("Multiple conditions over time highcharter example works", {
   skip_if_offline()
-  kco <- new("KorAPConnection", accessToken = NULL, verbose=TRUE)
+  kco <- KorAPConnection(accessToken = NULL, verbose=TRUE)
   hc <- expand_grid(
     condition = c("textDomain = /Wirtschaft.*/",
                   "textDomain != /Wirtschaft.*/"),
@@ -109,7 +109,7 @@
 
 test_that("Multiple conditions and queries over time highcharter example works", {
   skip_if_offline()
-  kco <- new("KorAPConnection", accessToken = NULL, verbose=TRUE)
+  kco <- KorAPConnection(accessToken = NULL, verbose=TRUE)
   hc <- expand_grid(
     qx = c("[tt/l=Heuschrecke]", "Ameise"),
     condition = c("textDomain = /Wirtschaft.*/",
@@ -127,7 +127,7 @@
 
 test_that("collocationScoreQuery works with hchart and hc_add_onclick_korap_search", {
   skip_if_offline()
-  kco <- new("KorAPConnection", accessToken = NULL, cache = TRUE, verbose = TRUE)
+  kco <- KorAPConnection(accessToken = NULL, cache = TRUE, verbose = TRUE)
   df <- collocationScoreQuery(kco,"Ameisenplage", "heimgesucht", leftContextSize=0, rightContextSize=1)
   hc <- hchart(df, type="spline", hcaes(label, logDice))
   hc <- hc_add_onclick_korap_search(hc)
diff --git a/tests/testthat/test-textMetadata.R b/tests/testthat/test-textMetadata.R
index 2355322..ab9ba01 100644
--- a/tests/testthat/test-textMetadata.R
+++ b/tests/testthat/test-textMetadata.R
@@ -1,18 +1,18 @@
 test_that("textMetadata works", {
   skip_if_offline()
-  m <- new("KorAPConnection", accessToken = NULL) %>% textMetadata(c("WUD17/B96/57558", "WUD17/A97/08541"))
+  m <- KorAPConnection(accessToken = NULL) %>% textMetadata(c("WUD17/B96/57558", "WUD17/A97/08541"))
   expect("textType" %in% names(m), "textMetadata value should contain a textType column")
 })
 
 
 test_that("textMetadata works for unknown text sigles", {
   skip_if_offline()
-  m <- new("KorAPConnection", accessToken = NULL) %>% textMetadata(c("WUD17/B96/57558", "unknownsigle"))
+  m <- KorAPConnection(accessToken = NULL) %>% textMetadata(c("WUD17/B96/57558", "unknownsigle"))
   expect("errors" %in% names(m), "textMetadata should return an errors column if a text does not exist")
 })
 
 test_that("textMetadata works with list valued fields", {
   skip_if_offline()
-  m <- new("KorAPConnection", accessToken = NULL) %>% textMetadata("WUD17/B96/57558")
+  m <- KorAPConnection(accessToken = NULL) %>% textMetadata("WUD17/B96/57558")
   expect("staat-gesellschaft\\tbiographien-interviews" == m$textClass[1], "multiple text classes / domnains should be tab separated")
 })
