diff --git a/core/src/test/java/de/ids_mannheim/korap/config/BeanConfigBaseTest.java b/core/src/test/java/de/ids_mannheim/korap/config/BeanConfigBaseTest.java
index d7be3d1..09bcee8 100644
--- a/core/src/test/java/de/ids_mannheim/korap/config/BeanConfigBaseTest.java
+++ b/core/src/test/java/de/ids_mannheim/korap/config/BeanConfigBaseTest.java
@@ -24,16 +24,14 @@
 @NotThreadSafe
 @RunWith(BeanConfigBaseTest.SpringExtendedSetupListener.class)
 @ContextConfiguration(classes = AppTestConfigBase.class)
-@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD)
+@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_CLASS)
 public abstract class BeanConfigBaseTest {
 
     private static Logger jlog = Logger.getLogger(BeanConfigBaseTest.class);
-//    @Autowired
+    @Autowired
     protected ApplicationContext context;
 
-    @Before
     public void init () throws Exception {
-        context = new ClassPathXmlApplicationContext("test-default-config.xml");
         assertNotNull("Application context must not be null!", this.context);
         jlog.debug("running one-time before init for class "
                 + this.getClass().getSimpleName() + " ...");
diff --git a/full/db.new-sqlite b/full/db.new-sqlite
deleted file mode 100644
index d1b2257..0000000
--- a/full/db.new-sqlite
+++ /dev/null
Binary files differ
diff --git a/full/pom.xml b/full/pom.xml
index 3193ee4..a7ca4f4 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.1</version>
+	<version>0.59.8</version>
 	<properties>
 		<java.version>1.7</java.version>
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
diff --git a/full/src/test/java/de/ids_mannheim/korap/config/AppTestConfig.java b/full/src/test/java/de/ids_mannheim/korap/config/AppTestConfig.java
index e39c5e0..591d631 100644
--- a/full/src/test/java/de/ids_mannheim/korap/config/AppTestConfig.java
+++ b/full/src/test/java/de/ids_mannheim/korap/config/AppTestConfig.java
@@ -35,7 +35,7 @@
 import de.ids_mannheim.korap.security.auth.KustvaktAuthenticationManager;
 import de.ids_mannheim.korap.security.auth.OpenIDconnectAuthentication;
 import de.ids_mannheim.korap.security.auth.SessionAuthentication;
-@Configuration
+
 public class AppTestConfig extends AppTestConfigBase implements TestBeans {
 
     protected PersistenceClient dataSource;
diff --git a/full/src/test/java/de/ids_mannheim/korap/config/BeanConfigTest.java b/full/src/test/java/de/ids_mannheim/korap/config/BeanConfigTest.java
index 8f941bb..868b901 100644
--- a/full/src/test/java/de/ids_mannheim/korap/config/BeanConfigTest.java
+++ b/full/src/test/java/de/ids_mannheim/korap/config/BeanConfigTest.java
@@ -23,8 +23,9 @@
  */
 @NotThreadSafe
 @RunWith(BeanConfigTest.SpringExtendedSetupListener.class)
-@ContextConfiguration(classes = AppTestConfig.class)
-@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD)
+//@ContextConfiguration(classes = AppTestConfig.class)
+@ContextConfiguration("classpath:test-default-config.xml")
+@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_CLASS)
 public abstract class BeanConfigTest {
 
     private static Logger jlog = Logger.getLogger(BeanConfigTest.class);
@@ -32,9 +33,9 @@
     private ApplicationContext context;
 
 
-    @Before
+//    @Before
     public void init () throws Exception {
-        context = new ClassPathXmlApplicationContext("test-default-config.xml");
+//        context = new ClassPathXmlApplicationContext("test-default-config.xml");
         assertNotNull("Application context must not be null!", this.context);
         jlog.debug("running one-time before init for class "
                 + this.getClass().getSimpleName() + " ...");
@@ -64,7 +65,7 @@
     public static class SpringExtendedSetupListener extends
             SpringJUnit4ClassRunner {
 
-        private BeanConfigBaseTest instanceSetupListener;
+        private BeanConfigTest instanceSetupListener;
 
 
         public SpringExtendedSetupListener (Class<?> clazz)
@@ -78,8 +79,8 @@
             Object test = super.createTest();
             // Note that JUnit4 will call this createTest() multiple times for each
             // test method, so we need to ensure to call "beforeClassSetup" only once.
-            if (test instanceof BeanConfigBaseTest && instanceSetupListener == null) {
-                instanceSetupListener = (BeanConfigBaseTest) test;
+            if (test instanceof BeanConfigTest && instanceSetupListener == null) {
+                instanceSetupListener = (BeanConfigTest) test;
                 instanceSetupListener.init();
             }
             return test;
diff --git a/full/src/test/java/de/ids_mannheim/korap/user/UserdataTest.java b/full/src/test/java/de/ids_mannheim/korap/user/UserdataTest.java
index a20685a..94742c0 100644
--- a/full/src/test/java/de/ids_mannheim/korap/user/UserdataTest.java
+++ b/full/src/test/java/de/ids_mannheim/korap/user/UserdataTest.java
@@ -119,13 +119,13 @@
                         helper().getContext().getUserDataProviders(),
                         UserDetails.class);
         assertNotNull(dao);
-        assertEquals(UserDetailsDao.class, dao.getClass());
+        assertTrue(dao instanceof UserDetailsDao);
 
         dao = BeansFactory.getTypeFactory().getTypeInterfaceBean(
                 helper().getContext().getUserDataProviders(),
                 UserSettings.class);
         assertNotNull(dao);
-        assertEquals(UserSettingsDao.class, dao.getClass());
+        assertTrue(dao instanceof UserSettingsDao);
     }
 
 
diff --git a/full/src/test/resources/test-default-config.xml b/full/src/test/resources/test-default-config.xml
index 34ad45e..de4cfe2 100644
--- a/full/src/test/resources/test-default-config.xml
+++ b/full/src/test/resources/test-default-config.xml
@@ -96,8 +96,8 @@
 	</bean>
 
 	<bean id="kustvakt_db" class="de.ids_mannheim.korap.handlers.JDBCClient">
-		<constructor-arg index="0" ref="dataSource" />
-		<property name="database" value="jdbc:sqlite::memory:" />
+		<constructor-arg index="0" ref="sqliteDataSource" />
+		<property name="database" value="sqlite" />
 	</bean>
 
 	<bean id="entityManagerFactory"
diff --git a/full/src/test/resources/test-jdbc.properties b/full/src/test/resources/test-jdbc.properties
index 1865408..ef7749d 100644
--- a/full/src/test/resources/test-jdbc.properties
+++ b/full/src/test/resources/test-jdbc.properties
@@ -3,7 +3,8 @@
 
 jdbc.database=sqlite
 jdbc.driverClassName=org.sqlite.JDBC
-jdbc.url=jdbc:sqlite:db.sqlite
+#jdbc.url=jdbc:sqlite:dbtest.sqlite
+jdbc.url=jdbc:sqlite::memory:
 # jdbc.url=jdbc:sqlite:kustvakt_init_test.sqlite
 jdbc.username=pc
 jdbc.password=pc
diff --git a/lite/pom.xml b/lite/pom.xml
index 010af48..02fe1af 100644
--- a/lite/pom.xml
+++ b/lite/pom.xml
@@ -3,7 +3,7 @@
 	<modelVersion>4.0.0</modelVersion>
 	<groupId>de.ids_mannheim.korap</groupId>
 	<artifactId>Kustvakt-lite</artifactId>
-	<version>0.1</version>
+	<version>0.59.8</version>
 	<properties>
 		<java.version>1.7</java.version>
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
