diff --git a/Changes b/Changes
index 7e8e0eb..ec63bfb 100644
--- a/Changes
+++ b/Changes
@@ -17,6 +17,7 @@
 - Replace origin with editor in rewrites (#782)
 - Update scope and add _comment as discussed in #782
 - Changed source to original #782
+- Change JsonInclude to non default to hide VC statistics when not computed
   
 
 # version 0.75
diff --git a/pom.xml b/pom.xml
index 07b024e..b6bae5e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -18,7 +18,7 @@
 		<jetty.version>11.0.24</jetty.version>
 		<flyway.version>10.6.0</flyway.version>
 		<log4j.version>2.22.1</log4j.version>
-		<krill.version>[0.63.3,)</krill.version>
+		<krill.version>0.63.3</krill.version>
 		<koral.version>[0.44,)</koral.version>
 	</properties>
 	<profiles>
diff --git a/src/main/java/de/ids_mannheim/korap/dto/QueryDto.java b/src/main/java/de/ids_mannheim/korap/dto/QueryDto.java
index 6918b6d..6d31fd6 100644
--- a/src/main/java/de/ids_mannheim/korap/dto/QueryDto.java
+++ b/src/main/java/de/ids_mannheim/korap/dto/QueryDto.java
@@ -17,7 +17,7 @@
  */
 @Getter
 @Setter
-@JsonInclude(Include.NON_NULL)
+@JsonInclude(Include.NON_DEFAULT)
 public class QueryDto {
 
     private int id;
diff --git a/src/test/java/de/ids_mannheim/korap/web/controller/vc/VirtualCorpusListTest.java b/src/test/java/de/ids_mannheim/korap/web/controller/vc/VirtualCorpusListTest.java
index e33da75..7f45f6f 100644
--- a/src/test/java/de/ids_mannheim/korap/web/controller/vc/VirtualCorpusListTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/controller/vc/VirtualCorpusListTest.java
@@ -1,20 +1,16 @@
 package de.ids_mannheim.korap.web.controller.vc;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
+import org.junit.jupiter.api.Test;
+
+import com.fasterxml.jackson.databind.JsonNode;
+
+import de.ids_mannheim.korap.exceptions.KustvaktException;
+import de.ids_mannheim.korap.user.User.CorpusAccess;
 import jakarta.ws.rs.ProcessingException;
 import jakarta.ws.rs.core.Response;
-import jakarta.ws.rs.core.Response.Status;
-
-import org.junit.jupiter.api.Disabled;
-import org.junit.jupiter.api.Test;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.google.common.net.HttpHeaders;
-import de.ids_mannheim.korap.authentication.http.HttpAuthorizationHandler;
-import de.ids_mannheim.korap.config.Attributes;
-import de.ids_mannheim.korap.exceptions.KustvaktException;
-import de.ids_mannheim.korap.exceptions.StatusCodes;
-import de.ids_mannheim.korap.utils.JsonUtils;
 
 public class VirtualCorpusListTest extends VirtualCorpusTestBase {
 
@@ -36,6 +32,17 @@
         assertEquals(0, node.size());
         node = listVC("pearl");
         assertEquals(1, node.size());
+        node = node.get(0);
+		assertEquals("system-vc", node.at("/name").asText());
+		assertEquals("system", node.at("/type").asText());
+		assertEquals("experimental", node.at("/status").asText());
+		assertEquals(CorpusAccess.ALL.name(),
+				node.at("/requiredAccess").asText());
+		assertEquals("system", node.at("/createdBy").asText());
+        assertTrue(node.at("/numberOfDoc").isMissingNode());
+        assertTrue(node.at("/numberOfParagraphs").isMissingNode());
+        assertTrue(node.at("/numberOfSentences").isMissingNode());
+        assertTrue(node.at("/numberOfTokens").isMissingNode());
     }
 
     @Test
