diff --git a/R/KorAPCorpusStats.R b/R/KorAPCorpusStats.R
index 4056ded..2390d6b 100644
--- a/R/KorAPCorpusStats.R
+++ b/R/KorAPCorpusStats.R
@@ -13,7 +13,7 @@
 #' @slot paragraphs number of paragraphs
 setClass("KorAPCorpusStats", slots=c(vc="character", documents="numeric", tokens="numeric", sentences="numeric", paragraphs="numeric"))
 
-log.info <- function(v,  ...) {
+log_info <- function(v,  ...) {
   cat(ifelse(v, paste0(...), ""))
 }
 setGeneric("corpusStats", function(kco, ...)  standardGeneric("corpusStats") )
@@ -45,12 +45,12 @@
       paste0(kco@apiUrl,
              'statistics?cq=',
              URLencode(enc2utf8(vc), reserved = TRUE))
-    log.info(verbose, "Getting size of virtual corpus \"", vc, "\"", sep = "")
+    log_info(verbose, "Getting size of virtual corpus \"", vc, "\"", sep = "")
     res <- apiCall(kco, url)
     if(is.null(res)) {
       res <- data.frame(documents=NA, tokens=NA, sentences=NA, paragraphs=NA)
     }
-    log.info(verbose, ": ", res$tokens, " tokens\n")
+    log_info(verbose, ": ", res$tokens, " tokens\n")
     if (as.df)
       data.frame(vc = vc, res, stringsAsFactors = FALSE)
     else
diff --git a/R/KorAPQuery.R b/R/KorAPQuery.R
index b6ed0da..d5894b2 100644
--- a/R/KorAPQuery.R
+++ b/R/KorAPQuery.R
@@ -198,20 +198,20 @@
         paste(fields, collapse = ","),
         if (metadataOnly) '&access-rewrite-disabled=true' else ''
       )
-      log.info(verbose, "Searching \"", query, "\" in \"", vc, "\"", sep =
+      log_info(verbose, "Searching \"", query, "\" in \"", vc, "\"", sep =
                  "")
       res = apiCall(kco, paste0(requestUrl, '&count=0'))
       if (is.null(res)) {
-        log.info(verbose, " [failed]\n")
+        log_info(verbose, " [failed]\n")
         message("API call failed.")
         totalResults <- 0
       } else {
         totalResults <-res$meta$totalResults
-        log.info(verbose, ": ", totalResults, " hits")
+        log_info(verbose, ": ", totalResults, " hits")
         if(!is.null(res$meta$cached))
-          log.info(verbose, " [cached]\n")
+          log_info(verbose, " [cached]\n")
         else
-          log.info(verbose, ", took ", res$meta$benchmark, "\n", sep = "")
+          log_info(verbose, ", took ", res$meta$benchmark, "\n", sep = "")
       }
       if (as.df)
         data.frame(
diff --git a/R/collocationAnalysis.R b/R/collocationAnalysis.R
index edc427d..fcc80c1 100644
--- a/R/collocationAnalysis.R
+++ b/R/collocationAnalysis.R
@@ -243,7 +243,7 @@
   if (length(snippet) < 1) {
     dplyr::tibble(word=c(), frequency=c())
   } else if (length(snippet) > 1) {
-    log.info(verbose, paste("Joining", length(snippet), "kwics\n"))
+    log_info(verbose, paste("Joining", length(snippet), "kwics\n"))
     for (s in snippet) {
       oldTable <- snippet2FreqTable(
         s,
@@ -254,7 +254,7 @@
         stopwords = stopwords
       )
     }
-    log.info(verbose, paste("Aggregating", length(oldTable$word), "tokens\n"))
+    log_info(verbose, paste("Aggregating", length(oldTable$word), "tokens\n"))
     oldTable  %>%
       group_by(word) %>%
       mutate(word = dplyr::case_when(ignoreCollocateCase ~ tolower(word), TRUE ~ word)) %>%
