diff --git a/Changes b/Changes
index 2d89892..8cdea37 100644
--- a/Changes
+++ b/Changes
@@ -1,5 +1,8 @@
 # version 0.79.1
-- Bug fixes & Spring 6.2.11 upgrade(kupietz)
+
+- Bug fixes & Spring 6.2.11 upgrade (kupietz)
+- Migrate to Hibernate 7x (kupietz)
+- Make statistics in VC list configurable (default: false)
 
 # version 0.79
 
diff --git a/src/main/java/de/ids_mannheim/korap/config/FullConfiguration.java b/src/main/java/de/ids_mannheim/korap/config/FullConfiguration.java
index d606c76..0c04abe 100644
--- a/src/main/java/de/ids_mannheim/korap/config/FullConfiguration.java
+++ b/src/main/java/de/ids_mannheim/korap/config/FullConfiguration.java
@@ -66,6 +66,7 @@
     private String namedVCPath;
 
     private boolean createInitialSuperClient;
+    private boolean includeStatisticsInVCList;
 
     public FullConfiguration (Properties properties) throws Exception {
         super(properties);
@@ -96,6 +97,8 @@
 
         setMaxNumberOfUserQueries(Integer.parseInt(
                 properties.getProperty("max.user.persistent.queries", "20")));
+		setIncludeStatisticsInVCList(Boolean.valueOf(properties.getProperty(
+				"vc.list.include.statistics", "false")));
     }
 
     private void setSecurityConfiguration (Properties properties)
@@ -427,4 +430,12 @@
         this.maxNumberOfUserQueries = maxNumberOfUserQueries;
     }
 
+	public boolean includeStatisticsInVCList () {
+		return includeStatisticsInVCList;
+	}
+
+	public void setIncludeStatisticsInVCList (boolean includeStatisticsInVCList) {
+		this.includeStatisticsInVCList = includeStatisticsInVCList;
+	}
+
 }
diff --git a/src/main/java/de/ids_mannheim/korap/service/QueryService.java b/src/main/java/de/ids_mannheim/korap/service/QueryService.java
index f329ab0..344ba6f 100644
--- a/src/main/java/de/ids_mannheim/korap/service/QueryService.java
+++ b/src/main/java/de/ids_mannheim/korap/service/QueryService.java
@@ -146,24 +146,32 @@
         Iterator<QueryDO> i = queryList.iterator();
         while (i.hasNext()) {
             query = i.next();
-            String json = "";
-            String statistics = null;
-			if (queryType.equals(QueryType.VIRTUAL_CORPUS)) {
-				if (query.isCached()) {
-					List<String> cqList = new ArrayList<>(1);
-					cqList.add("referTo " + query.getName());
-					json = buildKoralQueryFromCorpusQuery(cqList);
-				}
-				else {
-					json = query.getKoralQuery();
-				}
-				statistics = krill.getStatistics(json);
-			}
+            String statistics = computeStatisticsForVC(query, queryType);
 			QueryDto dto = converter.createQueryDto(query, statistics);
 			dtos.add(dto);
 		}
 		return dtos;
     }
+    
+	private String computeStatisticsForVC (QueryDO query, QueryType queryType)
+			throws KustvaktException {
+		if (config.includeStatisticsInVCList() && 
+				queryType.equals(QueryType.VIRTUAL_CORPUS)) {		
+    		String json = "";
+    		if (query.isCached()) {
+    			List<String> cqList = new ArrayList<>(1);
+    			cqList.add("referTo " + query.getName());
+    			json = buildKoralQueryFromCorpusQuery(cqList);
+    		}
+    		else {
+    			json = query.getKoralQuery();
+    		}
+    		return krill.getStatistics(json);
+		}
+		else {
+			return null;
+		}
+	}
 
     public void deleteQueryByName (String deletedBy, String queryName,
             String createdBy, QueryType type) throws KustvaktException {
diff --git a/src/main/resources/kustvakt.conf b/src/main/resources/kustvakt.conf
index e45ea32..7244d35 100644
--- a/src/main/resources/kustvakt.conf
+++ b/src/main/resources/kustvakt.conf
@@ -37,6 +37,9 @@
 default.foundry.morphology = marmot
 default.foundry.surface = base
 
+# Virtual corpus and queries
+max.user.persistent.queries = 5
+vc.list.include.statistics = false
 
 # Availability regex only support |
 # It should be removed/commented when the data doesn't contain availability field.
diff --git a/src/test/resources/kustvakt-test.conf b/src/test/resources/kustvakt-test.conf
index 13fd337..e4abfec 100644
--- a/src/test/resources/kustvakt-test.conf
+++ b/src/test/resources/kustvakt-test.conf
@@ -49,6 +49,8 @@
 # Virtual corpus and queries
 max.user.persistent.queries = 5
 max.token.context.size = 40
+# default false
+vc.list.include.statistics = true
 
 # Availability regex only support |
 # It should be removed/commented when the data doesn't contain availability field.
