diff --git a/R/KorAPConnection.R b/R/KorAPConnection.R
index 4652927..5ecd11c 100644
--- a/R/KorAPConnection.R
+++ b/R/KorAPConnection.R
@@ -10,13 +10,13 @@
 #' @note Currently it is not possible to authenticate the client
 #'
 #' @export
-KorAPConnection <- function(KorAPUrl=defaultKorAPUrl, apiVersion='v1.0', apiUrl = NA) {
+KorAPConnection <- function(KorAPUrl=defaultKorAPUrl, apiVersion='v1.0', apiUrl) {
   m <-regexpr("https?://[^?]+", KorAPUrl, perl = TRUE)
   KorAPUrl <- regmatches(KorAPUrl, m)
   if (!endsWith(KorAPUrl, '/')) {
     KorAPUrl <- paste0(KorAPUrl, "/")
   }
-  if (is.na(apiUrl)) {
+  if (missing(apiUrl)) {
     apiUrl = paste0(KorAPUrl, 'api/', apiVersion, '/')
   }
   con <- data.frame(apiUrl, KorAPUrl, apiVersion)
diff --git a/R/KorAPCorpusStats.R b/R/KorAPCorpusStats.R
index 0714b28..fb30b5d 100644
--- a/R/KorAPCorpusStats.R
+++ b/R/KorAPCorpusStats.R
@@ -9,11 +9,11 @@
 #' @param vc string describing the virtual corpus. An empty string (default) means the whole corpus, as far as it is license-wise accessible.
 #' @export
 #' @return object with the fields \code{$documents}, \code{$tokens}, \code{$sentences}, \code{$paragraphs}
-KorAPCorpusStats <- function(con, vc = NA, query = NA) {
-  if ((is.na(query) && is.na(vc)) || !(is.na(query) || is.na(vc))) {
+KorAPCorpusStats <- function(con, vc, query) {
+  if ((missing(query) && missing(vc)) || !(missing(query) || missing(vc))) {
     stop("Exaclty one of the parameters query and vc must be specified.")
   }
-  if (is.na(vc)) {
+  if (missing(vc)) {
     vc = query$vc
   }
   url <- paste0(con$apiUrl, 'statistics?cq=', URLencode(vc, reserved=TRUE))
diff --git a/R/KorAPQuery.R b/R/KorAPQuery.R
index 3875bc2..79b589c 100644
--- a/R/KorAPQuery.R
+++ b/R/KorAPQuery.R
@@ -48,19 +48,16 @@
 #' \url{https://ids-pub.bsz-bw.de/frontdoor/index/index/docId/9026}
 #'
 #' @export
-KorAPQuery <- function(con, query = NA, vc = NA, KorAPUrl = NA, metadataOnly = TRUE, ql = "poliqarp", fields = defaultFields,
+KorAPQuery <- function(con, query, vc="", KorAPUrl, metadataOnly = TRUE, ql = "poliqarp", fields = defaultFields,
                        accessRewriteFatal = TRUE) {
-  if (is.na(query) && is.na(KorAPUrl) ||  ! (is.na(query) || is.na(KorAPUrl))) {
+  if (missing(query) && missing(KorAPUrl) ||  ! (missing(query) || missing(KorAPUrl))) {
     stop("Exactly one of the parameters query and KorAPUrl must be specified.")
   }
-  if (is.na(query)) {
+  if (missing(query)) {
     query <- QueryParameterFromUrl(KorAPUrl, "q")
     vc <- QueryParameterFromUrl(KorAPUrl, "vc")
     ql <- QueryParameterFromUrl(KorAPUrl, "ql")
   }
-  if (is.na(vc)) {
-    vc <- ""
-  }
   request <- paste0('?q=', URLencode(query, reserved=TRUE),
                     ifelse(vc != '', paste0('&vc=', URLencode(vc, reserved=TRUE)), ''),
                     '&ql=', ql);
