diff --git a/src/main/java/de/ids_mannheim/korap/config/KustvaktConfiguration.java b/src/main/java/de/ids_mannheim/korap/config/KustvaktConfiguration.java
index 01bf704..4fe6a27 100644
--- a/src/main/java/de/ids_mannheim/korap/config/KustvaktConfiguration.java
+++ b/src/main/java/de/ids_mannheim/korap/config/KustvaktConfiguration.java
@@ -182,7 +182,7 @@
                 PropertyConfigurator.configure(log4j);
                 jlog.warn(
                         "using local logging properties file ({}) to configure logging system",
-                        "./config/log4j.properties");
+                        "./log4j.properties");
                 return;
             }
         }catch (Exception e) {
diff --git a/src/main/java/de/ids_mannheim/korap/interfaces/defaults/KustvaktEncryption.java b/src/main/java/de/ids_mannheim/korap/interfaces/defaults/KustvaktEncryption.java
index a21d767..d4b8a31 100644
--- a/src/main/java/de/ids_mannheim/korap/interfaces/defaults/KustvaktEncryption.java
+++ b/src/main/java/de/ids_mannheim/korap/interfaces/defaults/KustvaktEncryption.java
@@ -5,6 +5,7 @@
 import de.ids_mannheim.korap.exceptions.StatusCodes;
 import de.ids_mannheim.korap.interfaces.EncryptionIface;
 import de.ids_mannheim.korap.user.User;
+import de.ids_mannheim.korap.utils.KustvaktLogger;
 import edu.emory.mathcs.backport.java.util.Collections;
 import org.apache.commons.codec.EncoderException;
 import org.apache.commons.codec.binary.Base64;
@@ -15,7 +16,6 @@
 import org.owasp.esapi.errors.ValidationException;
 import org.owasp.esapi.reference.DefaultValidator;
 import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import java.io.UnsupportedEncodingException;
 import java.lang.reflect.Field;
@@ -31,7 +31,7 @@
 public class KustvaktEncryption implements EncryptionIface {
 
     private static final String ALGORITHM = "SHA-256";
-    private static Logger jlog = LoggerFactory
+    private static Logger jlog = KustvaktLogger
             .getLogger(KustvaktEncryption.class);
     // todo: disable this
     private static final String PASSWORD_SALT_FIELD = "accountCreation";
@@ -307,11 +307,9 @@
         return safeMap;
     }
 
-
     private String validateString(String descr, String input, String type,
             int length, boolean nullable) throws KustvaktException {
-        if (jlog.isDebugEnabled())
-            jlog.debug("validating string entry '{}'", input);
+        jlog.debug("validating string entry '{}'", input);
         String s;
         try {
             s = validator.getValidInput(descr, input, type, length, nullable);
diff --git a/src/main/java/de/ids_mannheim/korap/utils/KustvaktLogger.java b/src/main/java/de/ids_mannheim/korap/utils/KustvaktLogger.java
index 1a5c7a9..63d4533 100644
--- a/src/main/java/de/ids_mannheim/korap/utils/KustvaktLogger.java
+++ b/src/main/java/de/ids_mannheim/korap/utils/KustvaktLogger.java
@@ -28,13 +28,12 @@
     private Logger log;
 
     public static KustvaktLogger getLogger(Class cl) {
-        KustvaktLogger l = new KustvaktLogger(LoggerFactory.getLogger(cl));
-        return l;
+        return new KustvaktLogger(LoggerFactory.getLogger(cl));
     }
 
     public static KustvaktLogger getLogger(String name) {
-        KustvaktLogger l = new KustvaktLogger(LoggerFactory.getLogger(name));
-        return l;
+        return new KustvaktLogger(LoggerFactory.getLogger(name));
+
     }
 
     private KustvaktLogger(Logger log) {
diff --git a/src/test/.DS_Store b/src/test/.DS_Store
index 0bfe70f..5e34de7 100644
--- a/src/test/.DS_Store
+++ b/src/test/.DS_Store
Binary files differ
diff --git a/src/test/java/.DS_Store b/src/test/java/.DS_Store
index b99d2f1..ebd2d37 100644
--- a/src/test/java/.DS_Store
+++ b/src/test/java/.DS_Store
Binary files differ
diff --git a/src/test/java/de/ids_mannheim/korap/config/ClassLoaderTest.java b/src/test/java/de/ids_mannheim/korap/config/ClassLoaderTest.java
index f149b6c..3c18c93 100644
--- a/src/test/java/de/ids_mannheim/korap/config/ClassLoaderTest.java
+++ b/src/test/java/de/ids_mannheim/korap/config/ClassLoaderTest.java
@@ -16,7 +16,7 @@
     @After
     public void close() {
         BeanConfiguration.closeApplication();
-    }
+    }    
 
     @Test
     public void testBeanConfigurationLoaderThrowsNoException() {
