diff --git a/core/Changes b/core/Changes
index 7434a31..3b341f8 100644
--- a/core/Changes
+++ b/core/Changes
@@ -1,5 +1,5 @@
 version 0.59.10 
-07/02/2018
+20/02/2018
 	- updated hibernate and reflection versions (margaretha)
 	- added Changes file (margaretha)
 	- merged BeanConfigBaseTest to BeanConfigTest in /full (margaretha)
@@ -7,6 +7,7 @@
 	- updated library versions and java environment (margaretha)
 	- added status codes (margaretha)
 	- moved validation.properties (margaretha)
+	- fixed unrecognize media-type application/json (margaretha)
 	
 version 0.59.9 	
 08/11/2017
diff --git a/core/pom.xml b/core/pom.xml
index a8420e4..9089163 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -261,7 +261,7 @@
 		<dependency>
 			<groupId>de.ids_mannheim.korap</groupId>
 			<artifactId>Krill</artifactId>
-			<version>0.56.1</version>
+			<version>0.56.2</version>
 			<exclusions>
 				<exclusion>
 					<groupId>org.xerial</groupId>
diff --git a/core/src/main/java/de/ids_mannheim/korap/web/KustvaktBaseServer.java b/core/src/main/java/de/ids_mannheim/korap/web/KustvaktBaseServer.java
index 904e04e..8496d04 100644
--- a/core/src/main/java/de/ids_mannheim/korap/web/KustvaktBaseServer.java
+++ b/core/src/main/java/de/ids_mannheim/korap/web/KustvaktBaseServer.java
@@ -24,7 +24,7 @@
 public abstract class KustvaktBaseServer {
 
     protected static KustvaktConfiguration config;
-    
+
     protected static String rootPackages;
     protected static KustvaktArgs kargs;
 
@@ -62,35 +62,37 @@
         return kargs;
     }
 
-    protected void start(){
-        
-        if (kargs.port == -1){
+    protected void start () {
+
+        if (kargs.port == -1) {
             kargs.setPort(config.getPort());
         }
 
         Server server = new Server();
-        
-        ServletContextHandler contextHandler = new ServletContextHandler(
-                ServletContextHandler.NO_SESSIONS);
+
+        ServletContextHandler contextHandler =
+                new ServletContextHandler(ServletContextHandler.NO_SESSIONS);
         contextHandler.setContextPath("/");
         contextHandler.setInitParameter("contextConfigLocation",
                 "classpath:" + kargs.getConfig());
-        
+
         ServletContextListener listener = new ContextLoaderListener();
         contextHandler.addEventListener(listener);
 
         ServletHolder servletHolder = new ServletHolder(new SpringServlet());
         servletHolder.setInitParameter(
                 "com.sun.jersey.config.property.packages", rootPackages);
+        servletHolder.setInitParameter(
+                "com.sun.jersey.api.json.POJOMappingFeature", "true");
         servletHolder.setInitOrder(1);
         contextHandler.addServlet(servletHolder, config.getBaseURL());
 
         ServerConnector connector = new ServerConnector(server);
         connector.setPort(kargs.port);
         connector.setIdleTimeout(60000);
-        
+
         server.setHandler(contextHandler);
-        
+
         server.setConnectors(new Connector[] { connector });
         try {
             server.start();
diff --git a/full/Changes b/full/Changes
index be40c69..40a067f 100644
--- a/full/Changes
+++ b/full/Changes
@@ -17,7 +17,8 @@
 	- updated status codes and error messages to be more detailed (margaretha)
 	- testing mail implementation using embedded jetty jndi (margaretha)
 	- fixed collection rewrite regarding OR operation with other fields (margaretha)
-	- implemented sending mail using spring injection and removed jetty jndi (margaretha) 
+	- implemented sending mail using spring injection and removed jetty jndi (margaretha)
+	- fixed and updated velocity template (margaretha)
 	
 version 0.59.9 
 19/01/2018
diff --git a/full/notification.vm b/full/notification.vm
deleted file mode 100644
index 02cf5c6..0000000
--- a/full/notification.vm
+++ /dev/null
@@ -1,13 +0,0 @@
-<html>
-	<body>
-		<h3>Hi ${username}, you are invited to group {$group} by ${inviter}!</h3>
-		<p>
-			Login to KorAP to accept or reject the invitation.
-			<br /> 
-			The invitation is valid for 30 minutes.
-		</p>
-		<p>
-			Do not reply! This is an automated generated email.
-		</p>
-	</body>
-</html>
\ No newline at end of file
diff --git a/full/pom.xml b/full/pom.xml
index df0d2a8..1391cc4 100644
--- a/full/pom.xml
+++ b/full/pom.xml
@@ -25,6 +25,7 @@
 					<include>**/*.kustvakt</include>
 					<include>**/*.properties</include>
 					<include>**/*.sql</include>
+					<include>**/*.vm</include>
 				</includes>
 			</resource>
 		</resources>
@@ -224,6 +225,11 @@
 			<version>${jersey.version}</version>
 			<scope>test</scope>
 		</dependency>
+		<dependency>
+		    <groupId>com.sun.jersey</groupId>
+		    <artifactId>jersey-json</artifactId>
+		    <version>${jersey.version}</version>
+		</dependency>
 
 		<!-- Spring -->
 		<dependency>
@@ -248,7 +254,7 @@
 		</dependency>
 
 		<!-- jetty -->
-		<dependency>
+		<!-- <dependency>
 			<groupId>org.eclipse.jetty</groupId>
 			<artifactId>jetty-jndi</artifactId>
 			<version>${jetty.version}</version>
@@ -257,7 +263,7 @@
 			<groupId>org.eclipse.jetty</groupId>
 			<artifactId>jetty-plus</artifactId>
 			<version>${jetty.version}</version>
-		</dependency>
+		</dependency> -->
 
 		<!-- velocity -->
 		<dependency>
diff --git a/full/src/main/java/de/ids_mannheim/korap/service/MailService.java b/full/src/main/java/de/ids_mannheim/korap/service/MailService.java
index 75d5176..ff05bbe 100644
--- a/full/src/main/java/de/ids_mannheim/korap/service/MailService.java
+++ b/full/src/main/java/de/ids_mannheim/korap/service/MailService.java
@@ -45,7 +45,7 @@
                 MimeMessageHelper message = new MimeMessageHelper(mimeMessage);
                 message.setTo(new InternetAddress(invitee.getEmail()));
                 message.setFrom(sender);
-                message.setSubject("Invitation to join group");
+                message.setSubject("Invitation to join "+groupName);
                 message.setText(prepareText(inviteeName, groupName, inviter),
                         true);
             }
@@ -62,12 +62,8 @@
         context.put("inviter", inviter);
         
         StringWriter stringWriter = new StringWriter();
-//        URL url = getClass().getClassLoader().getResource("notification.vm");
-//        System.out.println(url);
-//        Template t = velocityEngine.getTemplate(url.toString());
-//        System.out.println(t);
         
-        velocityEngine.mergeTemplate("notification.vm",
+        velocityEngine.mergeTemplate("templates/notification.vm",
                 StandardCharsets.UTF_8.name(), context, stringWriter);
         
         String message = stringWriter.toString();
diff --git a/full/src/main/resources/WEB-INF/web.xml b/full/src/main/resources/WEB-INF/web.xml
deleted file mode 100644
index 4c2a254..0000000
--- a/full/src/main/resources/WEB-INF/web.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<resource-ref>
-  <res-ref-name>mail/Session</res-ref-name>
-  <res-type>javax.mail.Session</res-type>
-  <res-auth>Container</res-auth>
-</resource-ref>
\ No newline at end of file
diff --git a/full/src/main/resources/log4j.properties b/full/src/main/resources/log4j.properties
index e688b81..c747b68 100644
--- a/full/src/main/resources/log4j.properties
+++ b/full/src/main/resources/log4j.properties
@@ -4,9 +4,10 @@
 log4j.rootLogger=ERROR, stdout, debugLog
 log4j.logger.log=ERROR, errorLog
 
-#log4j.logger.de.ids_mannheim.korap.service.VirtualCorpusService = error, debugLog
 #log4j.logger.de.ids_mannheim.korap.web.controller.AuthenticationController = debug, debugLog, stdout
-#log4j.logger.de.ids_mannheim.korap.service.UserGroupService= stdout, debugLog
+#log4j.logger.de.ids_mannheim.korap.service.UserGroupService= debug, stdout, debugLog
+#log4j.logger.de.ids_mannheim.korap.rewrite.CollectionRewrite= debug, stdout, debugLog
+#log4j.logger.de.ids_mannheim.korap.service.MailService= debug, stdout, debugLog
 
 # Direct log messages to stdout
 log4j.appender.stdout=org.apache.log4j.ConsoleAppender
diff --git a/full/src/main/resources/templates/notification.vm b/full/src/main/resources/templates/notification.vm
new file mode 100644
index 0000000..254ad83
--- /dev/null
+++ b/full/src/main/resources/templates/notification.vm
@@ -0,0 +1,12 @@
+<html>
+    <body>
+        <h3>Hi $username,</h3>
+        <p> you have been invited to group $group by $inviter! </p>
+        <p> Please login to <a href="https://korap.ids-mannheim.de/kalamar">KorAP</a> with your
+            account to accept or reject this invitation within 30 minutes. </p>
+        <p>After joining a group, you will be able to access virtual corpora shared with members of
+            the group. If you would like share your virtual corpus to a group, please contact the
+            group admin.</p>
+        <p> This is an automated generated email. Please do not reply directly to this e-mail. </p>
+    </body>
+</html>
\ No newline at end of file
diff --git a/full/src/test/java/de/ids_mannheim/korap/web/controller/UserGroupControllerTest.java b/full/src/test/java/de/ids_mannheim/korap/web/controller/UserGroupControllerTest.java
index f5f44cb..be39d02 100644
--- a/full/src/test/java/de/ids_mannheim/korap/web/controller/UserGroupControllerTest.java
+++ b/full/src/test/java/de/ids_mannheim/korap/web/controller/UserGroupControllerTest.java
@@ -445,8 +445,10 @@
         assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
         assertEquals(StatusCodes.GROUP_MEMBER_EXISTS,
                 node.at("/errors/0/0").asInt());
-        assertEquals("Username marlin with status PENDING exists in the user-group "
-                + "dory group", node.at("/errors/0/1").asText());
+        assertEquals(
+                "Username marlin with status PENDING exists in the user-group "
+                        + "dory group",
+                node.at("/errors/0/1").asText());
         assertEquals("[marlin, PENDING, dory group]",
                 node.at("/errors/0/2").asText());
     }
@@ -470,8 +472,7 @@
                                 "pass"))
                 .entity(userGroup).post(ClientResponse.class);
 
-                String entity = response.getEntity(String.class);
-                System.out.println(entity);
+        String entity = response.getEntity(String.class);
         assertEquals(Status.OK.getStatusCode(), response.getStatus());
 
         // check member
@@ -653,7 +654,7 @@
                 node.at("/errors/0/1").asText());
         assertEquals("[pearl, dory group]", node.at("/errors/0/2").asText());
     }
-    
+
     @Test
     public void testUnsubscribePendingMember ()
             throws UniformInterfaceException, ClientHandlerException,
@@ -661,7 +662,7 @@
 
         JsonNode node = retrieveUserGroups("marlin");
         assertEquals(2, node.size());
-        
+
         MultivaluedMap<String, String> form = new MultivaluedMapImpl();
         // dory group
         form.add("groupId", "2");
@@ -678,9 +679,9 @@
         //        System.out.println(entity);
         assertEquals(Status.OK.getStatusCode(), response.getStatus());
 
-         node = retrieveUserGroups("marlin");
+        node = retrieveUserGroups("marlin");
         assertEquals(1, node.size());
-        
+
         // invite marlin to dory group to set back the GroupMemberStatus.PENDING
         testInviteDeletedMember();
     }
