diff --git a/full/Changes b/full/Changes
index 8d030e7..3973646 100644
--- a/full/Changes
+++ b/full/Changes
@@ -1,4 +1,4 @@
-# version 0.71.1
+# version 0.72-SNAPSHOT
 
 - Replaced javax.ws to jakarta.ws namespace (#648)
 - Upgrading Jersey 2.40 to 3.x (#646)
@@ -18,8 +18,11 @@
 - Removed Apache Oltu API from token requests (#650)
 - Removed OpenID
 - Fixed clearing cache
+- Fix JettyServerTest, init package, and some java docs.
+- Make scope extraction more flexible.
 
-# version 0.71
+
+# version 0.71.1
 
 - Removed auditing (#611)
 - Removed old database configurations (#612)
@@ -35,7 +38,7 @@
 - Fix lombok compile warning
 - Ensure the order of clean token tests.
 
-# version 0.70.1
+# version 0.71
 
 - Renamed entity and service packages in core
 - Renamed web.controller package in core
@@ -43,7 +46,8 @@
 - Merged lite into full
 - Merged core into full
 
-# version 0.70
+
+# version 0.70.1
 
 - Added data folder containing super_client_info and database 
   for mounting into docker
@@ -54,7 +58,7 @@
 - Moved hibernate.properties
 - Added maximum number of user persistent virtual corpora and queries
 
-# version 0.69.4
+# version 0.70
 
 - Support token array in matchinfo (fixes #570; diewald)
 - Updated VC list API and deprecated owner VC list (addressed #580)
@@ -66,6 +70,7 @@
 - Added LDAP log for users without idsC2Profile
 - Fixed log4j2 properties.
 
+
 # version 0.69.3
 
 - Moved the service path of VC admin services to admin/vc (closed #543)
diff --git a/full/pom.xml b/full/pom.xml
index af78195..2cccf71 100644
--- a/full/pom.xml
+++ b/full/pom.xml
@@ -3,7 +3,7 @@
 	<modelVersion>4.0.0</modelVersion>
 	<groupId>de.ids_mannheim.korap</groupId>
 	<artifactId>Kustvakt-full</artifactId>
-	<version>0.71.1</version>
+	<version>0.72-SNAPSHOT</version>
 	<properties>
 		<java.version>17</java.version>
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -14,7 +14,7 @@
 		<jetty.version>11.0.15</jetty.version>
 		<flyway.version>9.21.1</flyway.version>
 		<log4j.version>2.20.0</log4j.version>
-		<krill.version>[0.61.4,)</krill.version>
+		<krill.version>[0.61.3,)</krill.version>
 		<koral.version>[0.41,)</koral.version>
 	</properties>
 	<profiles>
@@ -302,19 +302,6 @@
 			<version>2.5.0</version>
 		</dependency>
 		
-		<!-- Jersey 1x originally uses codehaus -->
-		<!--<dependency>
-			<groupId>com.fasterxml.jackson.jaxrs</groupId>
-			<artifactId>jackson-jaxrs-json-provider</artifactId>
-			<version>2.15.1</version>
-		</dependency>
-		<dependency>
-		    <groupId>com.fasterxml.jackson.jakarta.rs</groupId>
-		    <artifactId>jackson-jakarta-rs-json-provider</artifactId>
-		    <version>2.15.2</version>
-		</dependency>-->
-
-
 		<!-- Flyway -->
 		<dependency>
 			<groupId>org.flywaydb</groupId>
@@ -643,11 +630,6 @@
 			<version>${hibernate.version}</version>
 		</dependency>
 		
-		<!--<dependency>
-			<groupId>com.github.gwenn</groupId>
-			<artifactId>sqlite-dialect</artifactId>
-			<version>0.1.0</version>
-		</dependency>-->
 		<dependency>
 		    <groupId>org.hibernate.orm</groupId>
 		    <artifactId>hibernate-community-dialects</artifactId>
diff --git a/full/src/main/java/de/ids_mannheim/de/init/Initializator.java b/full/src/main/java/de/ids_mannheim/korap/init/Initializator.java
similarity index 97%
rename from full/src/main/java/de/ids_mannheim/de/init/Initializator.java
rename to full/src/main/java/de/ids_mannheim/korap/init/Initializator.java
index bea303e..e908737 100644
--- a/full/src/main/java/de/ids_mannheim/de/init/Initializator.java
+++ b/full/src/main/java/de/ids_mannheim/korap/init/Initializator.java
@@ -1,4 +1,4 @@
-package de.ids_mannheim.de.init;
+package de.ids_mannheim.korap.init;
 
 import java.io.IOException;
 import java.util.EnumSet;
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2AuthorizationService.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2AuthorizationService.java
index 06960bb..19cf2e1 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2AuthorizationService.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2AuthorizationService.java
@@ -160,7 +160,7 @@
      * @param username
      * @param clientId
      * @param redirectUri
-     * @param scopeSet
+     * @param scope
      * @param code
      * @param authenticationTime
      *            user authentication time
@@ -208,9 +208,6 @@
      * 
      * @param client
      *            an OAuth2Client
-     * @param hasRedirectUri
-     *            true if request contains redirect_uri, false
-     *            otherwise
      * @param redirectUri
      *            the redirect_uri value
      * @return a client's redirect URI
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2ScopeServiceImpl.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2ScopeServiceImpl.java
index 56f0115..f8430aa 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2ScopeServiceImpl.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2ScopeServiceImpl.java
@@ -78,7 +78,7 @@
     public Set<AccessScope> convertToAccessScope (String scopes)
             throws KustvaktException {
 
-        String[] scopeArray = scopes.split(" ");
+        String[] scopeArray = scopes.split("\\s+");
         List<AccessScope> definedScopes = accessScopeDao.retrieveAccessScopes();
         Set<AccessScope> requestedScopes =
                 new HashSet<AccessScope>(scopeArray.length);
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2TokenService.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2TokenService.java
index 40ef907..70c9a0b 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2TokenService.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2TokenService.java
@@ -449,6 +449,8 @@
      *            a user id
      * @param authenticationTime
      *            the user authentication time
+     * @param client
+     *            an OAuth2Client
      * @return an {@link OAuthResponse}
      * @throws OAuthSystemException
      * @throws KustvaktException
diff --git a/full/src/main/java/de/ids_mannheim/korap/web/controller/OAuth2Controller.java b/full/src/main/java/de/ids_mannheim/korap/web/controller/OAuth2Controller.java
index 0686a89..a74d241 100644
--- a/full/src/main/java/de/ids_mannheim/korap/web/controller/OAuth2Controller.java
+++ b/full/src/main/java/de/ids_mannheim/korap/web/controller/OAuth2Controller.java
@@ -40,6 +40,7 @@
 import de.ids_mannheim.korap.web.filter.BlockingFilter;
 import de.ids_mannheim.korap.web.utils.ResourceFilters;
 import jakarta.servlet.http.HttpServletRequest;
+import jakarta.validation.constraints.NotEmpty;
 import jakarta.ws.rs.Consumes;
 import jakarta.ws.rs.FormParam;
 import jakarta.ws.rs.GET;
@@ -261,7 +262,8 @@
     @ResourceFilters({APIVersionFilter.class})
     @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
     public Response requestAccessToken (@Context HttpServletRequest request,
-            @FormParam("client_id") String clientId,
+            @NotEmpty @FormParam("grant_type") String grantType,
+            @NotEmpty @FormParam("client_id") String clientId,
             @FormParam("client_secret") String clientSecret,
             MultivaluedMap<String, String> form) {
 
diff --git a/full/src/main/resources/default-config.xml b/full/src/main/resources/default-config.xml
index f726e2a..36925cb 100644
--- a/full/src/main/resources/default-config.xml
+++ b/full/src/main/resources/default-config.xml
@@ -189,7 +189,7 @@
 		<constructor-arg name="properties" ref="props" />
 	</bean>
 
-	<bean id="initializator" class="de.ids_mannheim.de.init.Initializator"
+	<bean id="initializator" class="de.ids_mannheim.korap.init.Initializator"
 		init-method="init">
 	</bean>
 	
diff --git a/full/src/main/resources/default-lite-config.xml b/full/src/main/resources/default-lite-config.xml
index c4cdd96..8069c8e 100644
--- a/full/src/main/resources/default-lite-config.xml
+++ b/full/src/main/resources/default-lite-config.xml
@@ -130,9 +130,7 @@
 	</bean>
 
 	<!-- Initialization -->
-	<!-- <bean id="initializator" class="de.ids_mannheim.de.init.LiteInitializatorImpl"
-		init-method="init">
-	</bean> 
+	<!--
 	<bean id="annotationParser" class="de.ids_mannheim.korap.annotation.AnnotationParser"
 		scope="singleton" />
 	-->
diff --git a/full/src/test/java/de/ids_mannheim/korap/dao/VirtualCorpusDaoTest.java b/full/src/test/java/de/ids_mannheim/korap/dao/VirtualCorpusDaoTest.java
index 02c4642..95af5dc 100644
--- a/full/src/test/java/de/ids_mannheim/korap/dao/VirtualCorpusDaoTest.java
+++ b/full/src/test/java/de/ids_mannheim/korap/dao/VirtualCorpusDaoTest.java
@@ -59,7 +59,11 @@
                     QueryType.VIRTUAL_CORPUS, User.CorpusAccess.FREE,
                     "corpusSigle=GOE", "definition", "description", "experimental",
                     false, "system", null, null);
-        });        
+        });
+        
+        assertEquals(exception.getMessage(),
+                "Converting `org.hibernate.exception.GenericJDBCException` "
+                + "to JPA `PersistenceException` : could not execute statement");
     }
 
     @Test
diff --git a/full/src/test/java/de/ids_mannheim/korap/web/JettyServerTest.java b/full/src/test/java/de/ids_mannheim/korap/web/JettyServerTest.java
index 0255c45..571c15c 100644
--- a/full/src/test/java/de/ids_mannheim/korap/web/JettyServerTest.java
+++ b/full/src/test/java/de/ids_mannheim/korap/web/JettyServerTest.java
@@ -4,38 +4,43 @@
 
 import java.io.IOException;
 import java.net.HttpURLConnection;
+import java.net.ServerSocket;
 import java.net.URL;
 
-import org.eclipse.jetty.server.Connector;
 import org.eclipse.jetty.server.Server;
-import org.eclipse.jetty.server.ServerConnector;
-import org.eclipse.jetty.server.handler.HandlerList;
 import org.eclipse.jetty.server.handler.ShutdownHandler;
 import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
 
 /**
  * @author margaretha
  */
-@Disabled
 public class JettyServerTest {
 
+    static int selectedPort = 0;
+    
     @BeforeAll
     static void testServerStarts() throws Exception {
-        Server server = new Server();
-        ServerConnector connector = new ServerConnector(server);
-        connector.setPort(8000);
-        server.setConnectors(new Connector[]{connector});
-        HandlerList handlers = new HandlerList();
-        handlers.addHandler(new ShutdownHandler("secret", false, true));
-        server.setHandler(handlers);
+        
+        
+        for (int port = 1000; port <= 2000; port++) {
+            try (ServerSocket ignored = new ServerSocket(port)) {
+                selectedPort = port;
+                break;
+            } catch (IOException ignored) {
+                // Port is already in use, try the next one
+            }
+        }
+        
+        Server server = new Server(selectedPort);
+        ShutdownHandler shutdownHandler = new ShutdownHandler("secret"); 
+        server.setHandler(shutdownHandler);
         server.start();
     }
-
+    
     @Test
     public void testShutdown() throws IOException {
-        URL url = new URL("http://localhost:8000/shutdown?token=secret");
+        URL url = new URL("http://localhost:"+selectedPort+"/shutdown?token=secret");
         HttpURLConnection connection = (HttpURLConnection) url.openConnection();
         connection.setRequestMethod("POST");
         assertEquals(200, connection.getResponseCode());
diff --git a/full/src/test/resources/test-config-icc.xml b/full/src/test/resources/test-config-icc.xml
index 466b052..9d65017 100644
--- a/full/src/test/resources/test-config-icc.xml
+++ b/full/src/test/resources/test-config-icc.xml
@@ -177,7 +177,7 @@
 		<constructor-arg name="properties" ref="props" />
 	</bean>
 
-	<bean id="initializator" class="de.ids_mannheim.de.init.Initializator"
+	<bean id="initializator" class="de.ids_mannheim.korap.init.Initializator"
 		init-method="initTest">
 	</bean>
 
diff --git a/full/src/test/resources/test-config.xml b/full/src/test/resources/test-config.xml
index 6abc135..b3ae6f3 100644
--- a/full/src/test/resources/test-config.xml
+++ b/full/src/test/resources/test-config.xml
@@ -172,7 +172,7 @@
 		<constructor-arg name="properties" ref="props" />
 	</bean>
 
-	<bean id="initializator" class="de.ids_mannheim.de.init.Initializator"
+	<bean id="initializator" class="de.ids_mannheim.korap.init.Initializator"
 		init-method="initTest">
 	</bean>
 
diff --git a/full/src/test/resources/test-resource-config.xml b/full/src/test/resources/test-resource-config.xml
index 8b5e7d5..28eea3e 100644
--- a/full/src/test/resources/test-resource-config.xml
+++ b/full/src/test/resources/test-resource-config.xml
@@ -16,7 +16,7 @@
            http://www.springframework.org/schema/util/spring-util.xsd">
 
 	<import resource="classpath:test-config.xml"/>
-	<bean id="initializator" class="de.ids_mannheim.de.init.Initializator"
+	<bean id="initializator" class="de.ids_mannheim.korap.init.Initializator"
 		init-method="initResourceTest">
 	</bean>
 
