diff --git a/Changes b/Changes
index 1ba881e..7e88b0c 100644
--- a/Changes
+++ b/Changes
@@ -19,6 +19,8 @@
 - Fix authorization with POST tests.
 - Add apiVersion for checking VC in caching process (#806)
 - Update system-vc and fix get statistics with VC reference test.
+- Merge full and lite profiles and create one jar for both. 
+
 
 # version 0.79.1
 
diff --git a/pom.xml b/pom.xml
index 5723592..47c2b01 100644
--- a/pom.xml
+++ b/pom.xml
@@ -22,6 +22,7 @@
 		<!-- Align JBoss Logging with Hibernate Validator 9 requirements -->
 		<jboss.logging.version>3.6.1.Final</jboss.logging.version>
 	</properties>
+	<!--
 	<profiles>
 		<profile>
 			<id>full</id>
@@ -34,7 +35,6 @@
 						<artifactId>maven-shade-plugin</artifactId>
 						<version>3.6.1</version>
 						<executions>
-							<!-- option 1 -->
 							<execution>
 								<id>full</id>
 								<phase>package</phase>
@@ -42,7 +42,7 @@
 									<goal>shade</goal>
 								</goals>
 								<configuration>
-									<finalName>Kustvakt-full-${project.version}</finalName>
+									<finalName>Kustvakt-${project.version}</finalName>
 									<transformers>
 										<transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
 										<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
@@ -97,7 +97,7 @@
 						<artifactId>maven-shade-plugin</artifactId>
 						<version>3.6.1</version>
 						<executions>
-							<!--option 2 -->
+							
 							<execution>
 								<id>lite</id>
 								<phase>package</phase>
@@ -154,6 +154,7 @@
 		</profile>
 
 	</profiles>
+	-->
 	<build>
 		<resources>
 			<resource>
@@ -180,6 +181,60 @@
 			</testResource>
 		</testResources>
 		<plugins>
+			<plugin>
+				<artifactId>maven-shade-plugin</artifactId>
+				<version>3.6.1</version>
+				<executions>
+					<!-- option 1 -->
+					<execution>
+						<!--<id>full</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>
 			<!-- Formatter plugin for Eclipse based coding conventions http://maven-java-formatter-plugin.googlecode.com/svn/site/0.4/usage.html -->
 			<plugin>
 				<groupId>com.googlecode.maven-java-formatter-plugin</groupId>
diff --git a/src/main/java/de/ids_mannheim/korap/core/web/controller/SearchController.java b/src/main/java/de/ids_mannheim/korap/core/web/controller/SearchController.java
index e2613ce..a600c81 100644
--- a/src/main/java/de/ids_mannheim/korap/core/web/controller/SearchController.java
+++ b/src/main/java/de/ids_mannheim/korap/core/web/controller/SearchController.java
@@ -20,6 +20,7 @@
 import de.ids_mannheim.korap.exceptions.KustvaktException;
 import de.ids_mannheim.korap.oauth2.service.OAuth2ScopeService;
 import de.ids_mannheim.korap.security.context.TokenContext;
+import de.ids_mannheim.korap.server.KustvaktBaseServer;
 import de.ids_mannheim.korap.utils.JsonUtils;
 import de.ids_mannheim.korap.utils.ServiceInfo;
 import de.ids_mannheim.korap.web.KustvaktResponseHandler;
@@ -89,10 +90,15 @@
     @Path("{version}/info")
     @Produces(MediaType.APPLICATION_JSON + ";charset=utf-8")
     public Response info () {
+    	String kustvaktVersion = "full";
+    	if (KustvaktBaseServer.kargs != null && KustvaktBaseServer.kargs.isLite())
+    		kustvaktVersion = "lite";
+    		
         Map<String, Object> m = new HashMap<>();
         m.put("latest_api_version", config.getCurrentVersion());
         m.put("supported_api_versions", config.getSupportedVersions());
-        m.put("kustvakt_version", ServiceInfo.getInfo().getVersion());
+        m.put("kustvakt_version", kustvaktVersion + "-" + 
+        		ServiceInfo.getInfo().getVersion());
         m.put("krill_version", searchService.getKrillVersion());
         m.put("koral_version", ServiceInfo.getInfo().getKoralVersion());
         try {
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 7465bcf..0f0b68f 100644
--- a/src/main/java/de/ids_mannheim/korap/server/KustvaktBaseServer.java
+++ b/src/main/java/de/ids_mannheim/korap/server/KustvaktBaseServer.java
@@ -48,7 +48,7 @@
     protected static String springConfig = "default-config.xml";
 
     protected static String rootPackages;
-    protected static KustvaktArgs kargs;
+    public static KustvaktArgs kargs;
 
     public KustvaktBaseServer () {
         rootPackages = "de.ids_mannheim.korap.core.web;"
@@ -66,6 +66,14 @@
         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;";
+                    break;
                 case "--spring-config":
                     kargs.setSpringConfig(args[i + 1]);
                     break;
@@ -231,10 +239,21 @@
         @Getter
         private String springConfig;
         private int port;
+        private boolean isLite;
 
         public KustvaktArgs () {
             this.port = -1;
             this.springConfig = null;
+            this.isLite = false;
         }
+        
+        public boolean isLite () {
+			return isLite;
+		}
+        
+        public void setLite (boolean isLite) {
+			this.isLite = isLite;
+
+		}
     }
 }
diff --git a/src/main/java/de/ids_mannheim/korap/server/KustvaktServer.java b/src/main/java/de/ids_mannheim/korap/server/KustvaktServer.java
index 129cda2..7051c3e 100644
--- a/src/main/java/de/ids_mannheim/korap/server/KustvaktServer.java
+++ b/src/main/java/de/ids_mannheim/korap/server/KustvaktServer.java
@@ -17,7 +17,12 @@
         if (kargs == null)
             System.exit(0);
 
-        server.loadProperties("data/kustvakt.conf", "kustvakt.conf");
+        if (kargs.isLite()) {
+        	server.loadProperties("data/kustvakt-lite.conf", "kustvakt-lite.conf");
+        }
+        else {
+        	server.loadProperties("data/kustvakt.conf", "kustvakt.conf");
+        }
         server.start();
     }
 }
diff --git a/src/test/java/de/ids_mannheim/korap/config/LiteJerseyTest.java b/src/test/java/de/ids_mannheim/korap/config/LiteJerseyTest.java
index a4edbd1..fa0f1ca 100644
--- a/src/test/java/de/ids_mannheim/korap/config/LiteJerseyTest.java
+++ b/src/test/java/de/ids_mannheim/korap/config/LiteJerseyTest.java
@@ -16,6 +16,9 @@
 import org.springframework.test.context.junit.jupiter.SpringExtension;
 import org.springframework.web.context.support.GenericWebApplicationContext;
 
+import de.ids_mannheim.korap.server.KustvaktBaseServer;
+import de.ids_mannheim.korap.server.KustvaktBaseServer.KustvaktArgs;
+
 @ExtendWith(SpringExtension.class)
 @ContextConfiguration("classpath:test-config-lite.xml")
 public abstract class LiteJerseyTest extends JerseyTest {
@@ -51,10 +54,15 @@
 
     @Override
     protected DeploymentContext configureDeployment () {
+    	 KustvaktArgs ka = new KustvaktArgs();
+    	 ka.setLite(true);
+    	 KustvaktBaseServer.kargs = ka;
+    	
         return ServletDeploymentContext
                 .forServlet(new ServletContainer(
                         new ResourceConfig().packages(classPackages)))
                 .addListener(StaticContextLoaderListener.class)
-                .contextParam("adminToken", "secret").build();
+                .contextParam("adminToken", "secret")
+                .build();
     }
 }
diff --git a/src/test/java/de/ids_mannheim/korap/config/SpringJerseyTest.java b/src/test/java/de/ids_mannheim/korap/config/SpringJerseyTest.java
index 2bed357..68a0cc8 100644
--- a/src/test/java/de/ids_mannheim/korap/config/SpringJerseyTest.java
+++ b/src/test/java/de/ids_mannheim/korap/config/SpringJerseyTest.java
@@ -18,6 +18,9 @@
 import org.springframework.test.context.junit.jupiter.SpringExtension;
 import org.springframework.web.context.support.GenericWebApplicationContext;
 
+import de.ids_mannheim.korap.server.KustvaktBaseServer;
+import de.ids_mannheim.korap.server.KustvaktBaseServer.KustvaktArgs;
+
 @DirtiesContext(classMode = ClassMode.BEFORE_CLASS)
 @ExtendWith(SpringExtension.class)
 @ContextConfiguration("classpath:test-config.xml")
@@ -63,6 +66,9 @@
 
     @Override
     protected DeploymentContext configureDeployment () {
+    	KustvaktArgs ka = new KustvaktArgs();
+       	ka.setLite(false);
+       	KustvaktBaseServer.kargs = ka;
         return ServletDeploymentContext
                 .forServlet(new ServletContainer(
                         new ResourceConfig().packages(classPackages)))
diff --git a/src/test/java/de/ids_mannheim/korap/web/controller/InfoControllerTest.java b/src/test/java/de/ids_mannheim/korap/web/controller/InfoControllerTest.java
index d8e5416..847de71 100644
--- a/src/test/java/de/ids_mannheim/korap/web/controller/InfoControllerTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/controller/InfoControllerTest.java
@@ -35,7 +35,7 @@
                 node.at("/latest_api_version").asText());
         assertEquals(config.getSupportedVersions().size(),
                 node.at("/supported_api_versions").size());
-        assertEquals(ServiceInfo.getInfo().getVersion(),
+        assertEquals("full-"+ServiceInfo.getInfo().getVersion(),
                 node.at("/kustvakt_version").asText());
         assertEquals(krill.getIndex().getVersion(),
                 node.at("/krill_version").asText());
diff --git a/src/test/java/de/ids_mannheim/korap/web/controller/vc/VirtualCorpusControllerAdminTest.java b/src/test/java/de/ids_mannheim/korap/web/controller/vc/VirtualCorpusControllerAdminTest.java
index 34e9c9a..db790ed 100644
--- a/src/test/java/de/ids_mannheim/korap/web/controller/vc/VirtualCorpusControllerAdminTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/controller/vc/VirtualCorpusControllerAdminTest.java
@@ -75,6 +75,7 @@
         assertEquals(Status.CREATED.getStatusCode(), response.getStatus());
         JsonNode node = testAdminListVC_UsingAdminToken("system",
                 ResourceType.SYSTEM);
+        System.out.println(node.toPrettyString());
         assertEquals(2, node.size());
         testDeleteSystemVC(admin, "new-system-vc");
     }
diff --git a/src/test/java/de/ids_mannheim/korap/web/lite/InfoControllerTest.java b/src/test/java/de/ids_mannheim/korap/web/lite/InfoControllerTest.java
index 27054fd..20f8672 100644
--- a/src/test/java/de/ids_mannheim/korap/web/lite/InfoControllerTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/lite/InfoControllerTest.java
@@ -35,7 +35,7 @@
                 node.at("/latest_api_version").asText());
         assertEquals(config.getSupportedVersions().size(),
                 node.at("/supported_api_versions").size());
-        assertEquals(ServiceInfo.getInfo().getVersion(),
+        assertEquals("lite-"+ServiceInfo.getInfo().getVersion(),
                 node.at("/kustvakt_version").asText());
         assertEquals(krill.getIndex().getVersion(),
                 node.at("/krill_version").asText());
