diff --git a/plugin/pom.xml b/plugin/pom.xml
index 834bb14..fb561f5 100644
--- a/plugin/pom.xml
+++ b/plugin/pom.xml
@@ -1,5 +1,5 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>de.ids_mannheim.korap</groupId>
   <artifactId>KalamarExportPlugin</artifactId>
@@ -8,122 +8,150 @@
   <name>KalamarExportPlugin</name>
   <url>http://maven.apache.org</url>
   
-    <properties>
-        <jetty.version>9.2.3.v20140905</jetty.version>
-        <jersey.version>2.27</jersey.version>
-    </properties>
+  <properties>
+    <jetty.version>9.4.31.v20200723</jetty.version>
+    <jersey.version>2.27</jersey.version>
+  </properties>
 
-    <dependencies>
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <version>4.13</version>
-        </dependency>
+  <dependencies>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>4.13</version>
+    </dependency>
     
-        <dependency>
-            <groupId>com.fasterxml.jackson.core</groupId>
-            <artifactId>jackson-databind</artifactId>
-            <version>2.9.8</version>
-        </dependency>
-        <dependency> 
-            <groupId>com.tutego</groupId>
-             <artifactId>jrtf</artifactId>
-             <version>0.7</version>
-        </dependency>
-        <!-- jetty -->
-        <dependency>
-            <groupId>org.eclipse.jetty</groupId>
-            <artifactId>jetty-server</artifactId>
-            <version>${jetty.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.eclipse.jetty</groupId>
-            <artifactId>jetty-servlet</artifactId>
-            <version>${jetty.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.glassfish.jersey.core</groupId>
-            <artifactId>jersey-server</artifactId>
-            <version>${jersey.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.glassfish.jersey.core</groupId>
-            <artifactId>jersey-client</artifactId>
-            <version>${jersey.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.glassfish.jersey.inject</groupId>
-            <artifactId>jersey-hk2</artifactId>
-            <version>${jersey.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.glassfish.jersey.containers</groupId>
-            <artifactId>jersey-container-servlet-core</artifactId>
-            <version>${jersey.version}</version>
-        </dependency>
-
-        <!-- Jersey test framework -->
-        <dependency>
-            <groupId>org.glassfish.jersey.test-framework</groupId>
-            <artifactId>jersey-test-framework-core</artifactId>
-            <version>${jersey.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.glassfish.jersey.test-framework.providers</groupId>
-            <artifactId>jersey-test-framework-provider-grizzly2</artifactId>
-            <version>${jersey.version}</version>
-            <scope>test</scope>
-        </dependency>
-
-        <!-- Mock server framework -->
-        <dependency>
-	        <groupId>org.mock-server</groupId>
-          <artifactId>mockserver-netty</artifactId>
-          <version>3.10.2</version>
-	        <scope>test</scope>
-        </dependency>
-    </dependencies>
+    <dependency>
+      <groupId>com.fasterxml.jackson.core</groupId>
+      <artifactId>jackson-databind</artifactId>
+      <version>2.9.8</version>
+    </dependency>
+    <dependency> 
+      <groupId>com.tutego</groupId>
+      <artifactId>jrtf</artifactId>
+      <version>0.7</version>
+    </dependency>
+    <!-- jetty -->
+    <dependency>
+      <groupId>org.eclipse.jetty</groupId>
+      <artifactId>jetty-server</artifactId>
+      <version>${jetty.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.eclipse.jetty</groupId>
+      <artifactId>jetty-servlet</artifactId>
+      <version>${jetty.version}</version>
+    </dependency>
     
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-shade-plugin</artifactId>
-                <version>1.6</version>
-                <configuration>
-                    <filters>
-                        <filter>
-                            <artifact>*:*</artifact>
-                            <excludes>
-                                <exclude>META-INF/*.SF</exclude>
-                                <exclude>META-INF/*.DSA</exclude>
-                                <exclude>META-INF/*.RSA</exclude>
-                            </excludes>
-                        </filter>
-                    </filters>
-                </configuration>
-                <executions>
-                    <execution>
-                        <phase>package</phase>
-                        <goals>
-                            <goal>shade</goal>
-                        </goals>
-                        <configuration>
-                            <transformers>
-                              <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
-                                <transformer
-                                    implementation='org.apache.maven.plugins.shade.resource.ManifestResourceTransformer'>
-                                    <manifestEntries>
-                                        <Main-Class>de.ids_mannheim.korap.plkexport.PluginServer</Main-Class>
-                                    </manifestEntries>
-                                </transformer>
-                            </transformers>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
+    <dependency>
+      <groupId>org.glassfish.jersey.core</groupId>
+      <artifactId>jersey-server</artifactId>
+      <version>${jersey.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.glassfish.jersey.core</groupId>
+      <artifactId>jersey-client</artifactId>
+      <version>${jersey.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.glassfish.jersey.inject</groupId>
+      <artifactId>jersey-hk2</artifactId>
+      <version>${jersey.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.glassfish.jersey.containers</groupId>
+      <artifactId>jersey-container-servlet-core</artifactId>
+      <version>${jersey.version}</version>
+    </dependency>
+
+    <!-- Jersey test framework -->
+    <dependency>
+      <groupId>org.glassfish.jersey.test-framework</groupId>
+      <artifactId>jersey-test-framework-core</artifactId>
+      <version>${jersey.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.glassfish.jersey.test-framework.providers</groupId>
+      <artifactId>jersey-test-framework-provider-grizzly2</artifactId>
+      <version>${jersey.version}</version>
+      <scope>test</scope>
+    </dependency>
+
+    <!-- Mock server framework -->
+    <dependency>
+	    <groupId>org.mock-server</groupId>
+      <artifactId>mockserver-netty</artifactId>
+      <version>3.10.2</version>
+	    <scope>test</scope>
+    </dependency>
+  </dependencies>
+  
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-shade-plugin</artifactId>
+        <version>3.2.4</version>
+        <configuration>
+          <filters>
+            <filter>
+              <artifact>*:*</artifact>
+              <excludes>
+                <exclude>META-INF/*.SF</exclude>
+                <exclude>META-INF/*.DSA</exclude>
+                <exclude>META-INF/*.RSA</exclude>
+              </excludes>
+            </filter>
+          </filters>
+        </configuration>
+        <executions>
+          <execution>
+            <goals>
+              <goal>shade</goal>
+            </goals>
+            <configuration>
+              <transformers>
+                <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
+                <transformer
+                    implementation='org.apache.maven.plugins.shade.resource.ManifestResourceTransformer'>
+                  <manifestEntries>
+                    <Main-Class>de.ids_mannheim.korap.plkexport.PluginServer</Main-Class>
+                  </manifestEntries>
+                </transformer>
+                <transformer implementation="org.apache.maven.plugins.shade.resource.IncludeResourceTransformer">
+                  <resource>resources</resource>
+                  <file>assets/test.txt</file>
+                </transformer>
+              </transformers>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-resources-plugin</artifactId>
+        <version>3.2.0</version>
+        <configuration>
+          <encoding>UTF-8</encoding>
+        </configuration>
+        <executions>
+          <execution>
+            <goals>
+              <goal>testResources</goal>
+            </goals>
+            <configuration>
+              <resources>          
+                <resource>
+                  <directory>src/main/resources</directory>
+                </resource>
+                <resource>
+                  <directory>src/test/resources</directory>
+                </resource>
+              </resources>              
+            </configuration>            
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
 </project>
 
diff --git a/plugin/src/main/java/de/ids_mannheim/korap/plkexport/IdsExportService.java b/plugin/src/main/java/de/ids_mannheim/korap/plkexport/IdsExportService.java
index e2dffaf..c0ecfef 100644
--- a/plugin/src/main/java/de/ids_mannheim/korap/plkexport/IdsExportService.java
+++ b/plugin/src/main/java/de/ids_mannheim/korap/plkexport/IdsExportService.java
@@ -1,6 +1,8 @@
 package de.ids_mannheim.korap.plkexport;
 
 import java.io.IOException;
+import java.lang.Thread;
+import java.io.InputStream;
 import java.net.URLEncoder;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -12,6 +14,7 @@
 import javax.ws.rs.WebApplicationException;
 import javax.ws.rs.FormParam;
 import javax.ws.rs.POST;
+import javax.ws.rs.GET;
 import javax.ws.rs.Path;
 import javax.ws.rs.Produces;
 import javax.ws.rs.client.Client;
@@ -29,6 +32,7 @@
 import com.fasterxml.jackson.core.Version;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
+
 import com.tutego.jrtf.*;
 import static com.tutego.jrtf.Rtf.rtf;
 import static com.tutego.jrtf.RtfPara.*;
@@ -41,6 +45,14 @@
 public class IdsExportService {
 
     Properties properties = ExWSConf.properties(null);
+
+    // Load export string
+    ClassLoader cl = Thread.currentThread().getContextClassLoader();
+    InputStream is1 = cl.getResourceAsStream("assets/export.html");
+    private final String exportStr = streamToString(is1);
+
+    InputStream is2 = cl.getResourceAsStream("assets/export.js");
+    private final String exportJsStr = streamToString(is2);
     
     /**
      * WebService calls Kustvakt Search Webservices and returns
@@ -58,7 +70,6 @@
      * 
      * 
      */
-
     @POST
     @Path("export")
     @Produces(MediaType.APPLICATION_OCTET_STREAM)
@@ -159,15 +170,30 @@
             fname = fname + ".rtf";
         }
 
-        // TODO:
-        //   Sanitize file name (i.e. replace extra characters)
         builder.header("Content-Disposition",
                        "attachment; filename=" + sanitizeFileName(fname));
         Response response = builder.build();
         return response;
     }
 
+    @GET
+    @Path("export")
+    @Produces(MediaType.TEXT_HTML)
+    public Response exportHTML () {
+        return Response
+            .ok(exportStr, MediaType.TEXT_HTML)
+            .build();
+    };
 
+    @GET
+    @Path("export.js")
+    @Produces("application/javascript")
+    public Response exportJavascript () {
+        return Response
+            .ok(exportJsStr, "application/javascript")
+            .build();
+    };
+    
     public String writeRTF (LinkedList list) {
         LinkedList matchlist = list;
         RtfTextPara par = p((" "));
diff --git a/plugin/src/main/java/de/ids_mannheim/korap/plkexport/PluginServer.java b/plugin/src/main/java/de/ids_mannheim/korap/plkexport/PluginServer.java
index 925a465..27fa634 100644
--- a/plugin/src/main/java/de/ids_mannheim/korap/plkexport/PluginServer.java
+++ b/plugin/src/main/java/de/ids_mannheim/korap/plkexport/PluginServer.java
@@ -9,14 +9,12 @@
 import org.eclipse.jetty.server.handler.ContextHandler;
 import org.eclipse.jetty.server.handler.DefaultHandler;
 import org.eclipse.jetty.server.handler.HandlerList;
-import org.eclipse.jetty.server.handler.ResourceHandler;
 import org.eclipse.jetty.servlet.ServletContextHandler;
 import org.eclipse.jetty.servlet.ServletHolder;
 
 public class PluginServer {
     public static void main (String[] args) throws Exception {
 
-
         ServletContextHandler contextHandler = new ServletContextHandler(
             ServletContextHandler.NO_SESSIONS);
         contextHandler.setContextPath("/");
@@ -35,21 +33,8 @@
         connector.setIdleTimeout(60000);
         jettyServer.addConnector(connector);
         
-        ResourceHandler resourceHandler = new ResourceHandler();
-        String resourceBase ="templates";
-        // If server is started as jar-file in target directory
-        if(!new File("templates").exists()) {
-           resourceBase = "../" + resourceBase; 
-        }
-
-        resourceHandler.setResourceBase(resourceBase);
-        //enable directory listing
-        resourceHandler.setDirectoriesListed(true);
-        ContextHandler contextHandRes= new ContextHandler("/res");
-        contextHandRes.setHandler(resourceHandler);
-
         HandlerList handlers = new HandlerList();
-        handlers.setHandlers(new Handler[] { contextHandRes, contextHandler, new DefaultHandler()});
+        handlers.setHandlers(new Handler[] { contextHandler, new DefaultHandler()});
         jettyServer.setHandler(handlers);
         
         ServletHolder servletHolder = contextHandler.addServlet(
diff --git a/plugin/src/main/java/de/ids_mannheim/korap/plkexport/Util.java b/plugin/src/main/java/de/ids_mannheim/korap/plkexport/Util.java
index 53614b2..c60cf27 100644
--- a/plugin/src/main/java/de/ids_mannheim/korap/plkexport/Util.java
+++ b/plugin/src/main/java/de/ids_mannheim/korap/plkexport/Util.java
@@ -1,5 +1,8 @@
 package de.ids_mannheim.korap.plkexport;
 
+import java.io.IOException;
+import java.io.*;
+
 public class Util {
     public static String sanitizeFileName (String fname) {
         return fname
@@ -11,4 +14,22 @@
             .replaceFirst("-+$","")
             ;
     }
+
+	public static String streamToString (InputStream in) {
+        StringBuilder sb = new StringBuilder();
+
+        try {
+            BufferedReader br = new BufferedReader(new InputStreamReader(in));
+
+            String line;
+            while ((line = br.readLine()) != null) {
+                sb.append(line + System.lineSeparator());
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+
+		return sb.toString();
+	}
+
 }
diff --git a/plugin/templates/export.html b/plugin/src/main/resources/assets/export.html
similarity index 89%
rename from plugin/templates/export.html
rename to plugin/src/main/resources/assets/export.html
index 9d404db..11adb85 100644
--- a/plugin/templates/export.html
+++ b/plugin/src/main/resources/assets/export.html
@@ -3,7 +3,7 @@
 <html>
   <head>
     <meta charset="UTF-8">
-    <title>Export Template</title>
+    <title>Export</title>
 
     <!-- This is only for testing purposes -->
     <script src="http://localhost:64543/js/korap-plugin-0.2.1.js"></script>
@@ -13,7 +13,7 @@
     <div class="banner" data-note="Experimental"></div>
     <h1>Export: <code id="export-query"></code></h1>
     <section>
-      <form id="frmid" class="form-table" action="http://localhost:7777/export" method="POST">
+      <form id="frmid" class="form-table" action="/export" method="POST">
         <fieldset>
           <input type="hidden"  id="q" name="q">
           <input type="hidden" id="ql" name="ql">
@@ -42,6 +42,6 @@
         </fieldset>
       </form>
     </section>
-    <script src="export.js" defer></script>
+    <script src="/export.js" defer></script>
   </body>
 </html>
diff --git a/plugin/templates/export.js b/plugin/src/main/resources/assets/export.js
similarity index 100%
rename from plugin/templates/export.js
rename to plugin/src/main/resources/assets/export.js
diff --git a/plugin/src/main/resources/exportPlugin.conf b/plugin/src/main/resources/exportPlugin.conf
index f2d907c..4e8ecbc 100644
--- a/plugin/src/main/resources/exportPlugin.conf
+++ b/plugin/src/main/resources/exportPlugin.conf
@@ -3,6 +3,8 @@
 #Server Configuration
 server.port=7777
 server.host=localhost
+server.scheme=https
 
 api.port=80
-api.host=korap.ids-mannheim.de
\ No newline at end of file
+api.host=korap.ids-mannheim.de
+api.scheme=https
\ No newline at end of file
diff --git a/plugin/src/test/java/de/ids_mannheim/korap/plkexport/IdsExportServiceTest.java b/plugin/src/test/java/de/ids_mannheim/korap/plkexport/IdsExportServiceTest.java
index 27a577a..cc9a96b 100644
--- a/plugin/src/test/java/de/ids_mannheim/korap/plkexport/IdsExportServiceTest.java
+++ b/plugin/src/test/java/de/ids_mannheim/korap/plkexport/IdsExportServiceTest.java
@@ -139,9 +139,30 @@
         assertEquals("Request JSON: Http Response should be 400: ",
                 Status.BAD_REQUEST.getStatusCode(), responsejson.getStatus());
 
-    };
+    }
 
     @Test
+    public void testFormHTML () {
+        Response responsehtml = target("/export").request()
+                .get();
+        assertEquals("HTTP Code",
+                Status.OK.getStatusCode(), responsehtml.getStatus());
+        String str = responsehtml.readEntity(String.class);
+        assertTrue("HTTP Body", str.contains("<title>Export</title>"));
+    }
+
+    @Test
+    public void testJS () {
+        Response responsejs = target("/export.js").request()
+                .get();
+        assertEquals("HTTP Code",
+                Status.OK.getStatusCode(), responsejs.getStatus());
+        String str = responsejs.readEntity(String.class);
+
+        assertTrue("HTTP Body", str.contains("pluginit"));
+    }
+    
+    @Test
     public void testExportWsJsonEmpty () {
         mockClient.reset().when(
             request()
