diff --git a/Changes b/Changes
index fc41ea5..7afbd9d 100644
--- a/Changes
+++ b/Changes
@@ -24,6 +24,8 @@
 - Fix redundant initial-super-client generation.
 - Allow system VC to have names with less than 3 characters (support for existing 
   C2 VC, #788)
+- Switch Kustvakt Server to run the lite version by default.  
+  
 
 # version 0.79.1
 
diff --git a/Dockerfile b/Dockerfile
index 4024c72..7702635 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -97,7 +97,7 @@
 
 # docker build -f Dockerfile -t korap/kustvakt:{nr} .
 # docker build -f Dockerfile -t korap/example-index:{nr} --target example-index .
-# run full version
+# run lite version (default)
 # docker run --rm --net host -v [absolute-path-sample-index]:/kustvakt/index korap/kustvakt:{nr}
-# run lite version 
-# docker run --rm --net host -v [absolute-path-sample-index]:/kustvakt/index korap/kustvakt:{nr} Kustvakt.jar --lite
\ No newline at end of file
+# run full version 
+# docker run --rm --net host -v [absolute-path-sample-index]:/kustvakt/index korap/kustvakt:{nr} Kustvakt.jar --full
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index e749a94..dd25a36 100644
--- a/pom.xml
+++ b/pom.xml
@@ -22,10 +22,10 @@
 		<!-- Align JBoss Logging with Hibernate Validator 9 requirements -->
 		<jboss.logging.version>3.6.1.Final</jboss.logging.version>
 	</properties>
-	<!--
+	
 	<profiles>
 		<profile>
-			<id>full</id>
+			<id>all</id>
 			<activation>
 				<activeByDefault>true</activeByDefault>
 			</activation>
@@ -36,18 +36,80 @@
 						<version>3.6.1</version>
 						<executions>
 							<execution>
+								<id>all</id>
+								<phase>package</phase>
+								<goals>
+									<goal>shade</goal>
+								</goals>
+								<configuration>
+									<finalName>Kustvakt-${project.version}</finalName>
+									<transformers>
+										<transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
+										<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
+											<mainClass>
+												de.ids_mannheim.korap.server.KustvaktServer
+											</mainClass>
+											<manifestEntries>
+												<Multi-Release>true</Multi-Release>
+											</manifestEntries>
+										</transformer>
+										<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
+											<resource>META-INF/spring.handlers</resource>
+										</transformer>
+										<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
+											<resource>META-INF/spring.schemas</resource>
+										</transformer>
+										<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
+											<resource>META-INF/spring/aot.factories</resource>
+										</transformer>
+										<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
+											<resource>META-INF/hk2-locator/default</resource>
+										</transformer>
+										<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
+											<resource>META-INF/spring.tooling</resource>
+										</transformer>
+									</transformers>
+									<filters>
+										<filter>
+											<artifact>*:*</artifact>
+											<excludes>
+												<!--<exclude>db/lite/**</exclude>-->
+												<exclude>META-INF/*.SF</exclude>
+								                <exclude>META-INF/*.DSA</exclude>
+								                <exclude>META-INF/*.RSA</exclude>
+											</excludes>
+										</filter>
+									</filters>
+								</configuration>
+							</execution>
+						</executions>
+					</plugin>
+				</plugins>
+			</build>
+		</profile>
+
+
+		<profile>
+			<id>full</id>
+			<build>
+				<plugins>
+					<plugin>
+						<artifactId>maven-shade-plugin</artifactId>
+						<version>3.6.1</version>
+						<executions>
+							<execution>
 								<id>full</id>
 								<phase>package</phase>
 								<goals>
 									<goal>shade</goal>
 								</goals>
 								<configuration>
-									<finalName>Kustvakt-${project.version}</finalName>
+									<finalName>Kustvakt-full-${project.version}</finalName>
 									<transformers>
 										<transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
 										<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
 											<mainClass>
-												de.ids_mannheim.korap.server.KustvaktServer
+												de.ids_mannheim.korap.server.KustvaktFullServer
 											</mainClass>
 											<manifestEntries>
 												<Multi-Release>true</Multi-Release>
@@ -88,73 +150,8 @@
 			</build>
 		</profile>
 
-
-		<profile>
-			<id>lite</id>
-			<build>
-				<plugins>
-					<plugin>
-						<artifactId>maven-shade-plugin</artifactId>
-						<version>3.6.1</version>
-						<executions>
-							
-							<execution>
-								<id>lite</id>
-								<phase>package</phase>
-								<goals>
-									<goal>shade</goal>
-								</goals>
-								<configuration>
-									<finalName>
-										Kustvakt-lite-${project.version}
-									</finalName>
-									<transformers>
-										<transformer
-											implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
-											<mainClass>
-												de.ids_mannheim.korap.server.KustvaktLiteServer
-											</mainClass>
-											<manifestEntries>
-												<Multi-Release>true</Multi-Release>
-											</manifestEntries>
-										</transformer>
-										<transformer
-											implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
-											<resource>META-INF/spring.handlers
-											</resource>
-										</transformer>
-										<transformer
-											implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
-											<resource>META-INF/spring.schemas
-											</resource>
-										</transformer>
-									</transformers>
-									<filters>
-										<filter>
-											<artifact>*:*</artifact>
-											<excludes>
-												<exclude>db/mysql/**</exclude>
-												<exclude>db/predefined/**</exclude>
-												<exclude>db/sqlite/**</exclude>
-												<exclude>com.novell.ldap</exclude>
-												<exclude>com.unboundid</exclude>
-												<exclude>org.glassfish.jersey.test-framework*</exclude>
-												<exclude>META-INF/*.SF</exclude>
-								                <exclude>META-INF/*.DSA</exclude>
-								                <exclude>META-INF/*.RSA</exclude>
-											</excludes>
-										</filter>
-									</filters>
-								</configuration>
-							</execution>
-						</executions>
-					</plugin>
-				</plugins>
-			</build>
-		</profile>
-
 	</profiles>
-	-->
+	
 	<build>
 		<resources>
 			<resource>
diff --git a/src/main/java/de/ids_mannheim/korap/server/KustvaktBaseServer.java b/src/main/java/de/ids_mannheim/korap/server/KustvaktBaseServer.java
index 0f0b68f..53211cf 100644
--- a/src/main/java/de/ids_mannheim/korap/server/KustvaktBaseServer.java
+++ b/src/main/java/de/ids_mannheim/korap/server/KustvaktBaseServer.java
@@ -45,16 +45,16 @@
     private Logger log = LogManager.getLogger(KustvaktBaseServer.class);
 
     protected static KustvaktConfiguration config;
-    protected static String springConfig = "default-config.xml";
+    protected static String springConfig = "default-lite-config.xml";
 
     protected static String rootPackages;
     public static KustvaktArgs kargs;
 
     public KustvaktBaseServer () {
-        rootPackages = "de.ids_mannheim.korap.core.web;"
-                + "de.ids_mannheim.korap.web;"
-//                + "com.fasterxml.jackson.jaxrs.json;"
-                ;
+    	rootPackages = "de.ids_mannheim.korap.core.web; "
+                + "de.ids_mannheim.korap.web.filter; "
+                + "de.ids_mannheim.korap.web.utils; "
+                + "com.fasterxml.jackson.jaxrs.json;";
 
         File d = new File(KustvaktConfiguration.DATA_FOLDER);
         if (!d.exists()) {
@@ -63,16 +63,14 @@
     }
 
     protected KustvaktArgs readAttributes (String[] args) {
-        KustvaktArgs kargs = new KustvaktArgs();
+        kargs = new KustvaktArgs();
         for (int i = 0; i < args.length; i++) {
             switch ((args[i])) {
-            	case "--lite":
-                    kargs.setLite(true);     
-                    springConfig = "default-lite-config.xml";
-                    rootPackages = "de.ids_mannheim.korap.core.web; "
-                            + "de.ids_mannheim.korap.web.filter; "
-                            + "de.ids_mannheim.korap.web.utils; "
-                            + "com.fasterxml.jackson.jaxrs.json;";
+            	case "--full":
+                    kargs.setLite(false);     
+                    springConfig = "default-config.xml";
+                    rootPackages = "de.ids_mannheim.korap.core.web;"
+                            + "de.ids_mannheim.korap.web;";
                     break;
                 case "--spring-config":
                     kargs.setSpringConfig(args[i + 1]);
@@ -244,7 +242,7 @@
         public KustvaktArgs () {
             this.port = -1;
             this.springConfig = null;
-            this.isLite = false;
+            this.isLite = true;
         }
         
         public boolean isLite () {
diff --git a/src/main/java/de/ids_mannheim/korap/server/KustvaktFullServer.java b/src/main/java/de/ids_mannheim/korap/server/KustvaktFullServer.java
new file mode 100644
index 0000000..6a14071
--- /dev/null
+++ b/src/main/java/de/ids_mannheim/korap/server/KustvaktFullServer.java
@@ -0,0 +1,23 @@
+package de.ids_mannheim.korap.server;
+
+public class KustvaktFullServer extends KustvaktBaseServer {
+
+    public static void main (String[] args) throws Exception {
+        System.setProperty("log4j.configurationFile", "data/log4j2.properties, log4j2.properties");
+        
+        KustvaktFullServer server = new KustvaktFullServer();
+        kargs = server.readAttributes(args);
+
+        if (kargs == null)
+            System.exit(0);
+
+        kargs.setLite(false);     
+        springConfig = "default-config.xml";
+        rootPackages = "de.ids_mannheim.korap.core.web;"
+                + "de.ids_mannheim.korap.web;";
+        
+        server.loadProperties("data/kustvakt.conf", "kustvakt.conf");
+        server.start();
+    }
+
+}
diff --git a/src/main/java/de/ids_mannheim/korap/server/KustvaktLiteServer.java b/src/main/java/de/ids_mannheim/korap/server/KustvaktLiteServer.java
deleted file mode 100644
index edc5a4c..0000000
--- a/src/main/java/de/ids_mannheim/korap/server/KustvaktLiteServer.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package de.ids_mannheim.korap.server;
-
-public class KustvaktLiteServer extends KustvaktBaseServer {
-
-    public static void main (String[] args) throws Exception {
-        System.setProperty("log4j.configurationFile", "data/log4j2.properties, log4j2.properties");
-        
-        KustvaktLiteServer server = new KustvaktLiteServer();
-        kargs = server.readAttributes(args);
-
-        if (kargs == null)
-            System.exit(0);
-
-        server.loadProperties("data/kustvakt-lite.conf", "kustvakt-lite.conf");
-
-        springConfig = "default-lite-config.xml";
-
-        rootPackages = "de.ids_mannheim.korap.core.web; "
-                + "de.ids_mannheim.korap.web.filter; "
-                + "de.ids_mannheim.korap.web.utils; "
-                + "com.fasterxml.jackson.jaxrs.json;";
-
-        server.start();
-    }
-
-}
