diff --git a/.dockerignore b/.dockerignore
new file mode 100644
index 0000000000000000000000000000000000000000..f59ec20aabf5842d237244ece8c81ab184faeac1
--- /dev/null
+++ b/.dockerignore
@@ -0,0 +1 @@
+*
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index 39e650f361e617ad040bcca9744e9c01af0caafe..16d16353f5adac177ce99c6a3ac87765a2f29e75 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,4 +2,5 @@
 /dist
 /public
 /data
-/site
\ No newline at end of file
+/site
+/coverage
\ No newline at end of file
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..5fe199c8f2aa87f076e5c7e524e27cc51a1b024f
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,8 @@
+FROM library/node:8-alpine
+MAINTAINER Ulf Seltmann <ulf.seltmann@uni-leipzig.de>
+VOLUME ["/data"]
+EXPOSE 3000
+ENV npm_config_registry=https://docker.ub.intern.uni-leipzig.de/npm \
+ data_dir=/data
+RUN npm install -g dacap
+CMD chown node:node -R ${data_dir} && su node -c dacap
\ No newline at end of file
diff --git a/bin/dacap b/bin/dacap
index 3d31f4d3cfe7adc04c035093f11a11019fa69b4b..f89923b82fe70bdc0eb56fa66056c7b8dddb00a3 100755
--- a/bin/dacap
+++ b/bin/dacap
@@ -16,7 +16,17 @@ const defaultObjectValueSize = parseInt(process.env.object_value_size) || 80;
 const autosaveInterval = parseInt(process.env.autosave_interval) || 60;
 const registerName = process.env.register_name || 'api-cache';
 
-const server = new Server(storagePath, proxyPath, proxyUrl, defaultTtl, defaultCheckPeriod, defaultArrayValueSize, defaultObjectValueSize, autosaveInterval, registerName);
+const server = new Server({
+	storagePath: storagePath,
+	proxyPath: proxyPath,
+	proxyUrl: proxyUrl,
+	defaultTtl: defaultTtl,
+	defaultCheckPeriod: defaultCheckPeriod,
+	defaultArrayValueSize: defaultArrayValueSize,
+	defaultObjectValueSize: defaultObjectValueSize,
+	autosaveInterval: autosaveInterval,
+	registerName: registerName
+});
 
 server.listen(proxyPort, () => {
 	debug('server up and running');
diff --git a/docker-compose.yml b/docker-compose.yml
index 6fa502fbca60fbb05fde6752283ff27fa4243f3f..74d856687f7dfdd01ee0d7d9d82c785abcc824a8 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -20,7 +20,7 @@ services:
       - APP_TMP_DIR=/tmp
       - DEBUG=*
     command:
-      - npm run inspect
+      - npm run inspect-watch
     hostname: api.ub.uni-leipzig.de
 
 volumes:
diff --git a/package-lock.json b/package-lock.json
index 61e2dda1a578c73d32cb5f29021890b8d16f96b4..4c040f2a0266d5ded65b66d8c2fb1dbc036dd7a4 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -5,65 +5,65 @@
   "requires": true,
   "dependencies": {
     "@angular/common": {
-      "version": "4.3.5",
-      "resolved": "https://registry.npmjs.org/@angular/common/-/common-4.3.5.tgz",
-      "integrity": "sha1-X2sRNH6uHfw0YjzP1MBsj0xIji0=",
+      "version": "4.3.6",
+      "resolved": "https://docker.ub.intern.uni-leipzig.de/npm/@angular%2fcommon/-/common-4.3.6.tgz",
+      "integrity": "sha1-7TfpMHx1Bt2DR5fBps9nXlK1tu4=",
       "requires": {
         "tslib": "1.7.1"
       }
     },
     "@angular/compiler": {
-      "version": "4.3.5",
-      "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-4.3.5.tgz",
-      "integrity": "sha1-UNPJhmV77/H+9Pbdmj+ljiSr1Ug=",
+      "version": "4.3.6",
+      "resolved": "https://docker.ub.intern.uni-leipzig.de/npm/@angular%2fcompiler/-/compiler-4.3.6.tgz",
+      "integrity": "sha1-vhcN8Ji3HoNczt8WjV+3sj5QRbg=",
       "requires": {
         "tslib": "1.7.1"
       }
     },
     "@angular/core": {
-      "version": "4.3.5",
-      "resolved": "https://registry.npmjs.org/@angular/core/-/core-4.3.5.tgz",
-      "integrity": "sha1-vR79vx68+5wnojjiqkxIFZsIlbs=",
+      "version": "4.3.6",
+      "resolved": "https://docker.ub.intern.uni-leipzig.de/npm/@angular%2fcore/-/core-4.3.6.tgz",
+      "integrity": "sha1-u6xj1o0Pe8s4nRKzQghlK+MofpY=",
       "requires": {
         "tslib": "1.7.1"
       }
     },
     "@angular/forms": {
-      "version": "4.3.5",
-      "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-4.3.5.tgz",
-      "integrity": "sha1-UZqtCtgqG4cBmTf6k/wUdzRzd4c=",
+      "version": "4.3.6",
+      "resolved": "https://docker.ub.intern.uni-leipzig.de/npm/@angular%2fforms/-/forms-4.3.6.tgz",
+      "integrity": "sha1-DyDEWXwWoVJ0XXzZVVmFWgpcZoc=",
       "requires": {
         "tslib": "1.7.1"
       }
     },
     "@angular/http": {
-      "version": "4.3.5",
-      "resolved": "https://registry.npmjs.org/@angular/http/-/http-4.3.5.tgz",
-      "integrity": "sha1-gdSwdhyO8DXLC3NjAMI382KG8fA=",
+      "version": "4.3.6",
+      "resolved": "https://docker.ub.intern.uni-leipzig.de/npm/@angular%2fhttp/-/http-4.3.6.tgz",
+      "integrity": "sha1-Vjgn0afV6J47fYa3f7vTZ7LAhZE=",
       "requires": {
         "tslib": "1.7.1"
       }
     },
     "@angular/platform-browser": {
-      "version": "4.3.5",
-      "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-4.3.5.tgz",
-      "integrity": "sha1-wNA0CUmcwp+BZ3qrYjyQhnYNhO8=",
+      "version": "4.3.6",
+      "resolved": "https://docker.ub.intern.uni-leipzig.de/npm/@angular%2fplatform-browser/-/platform-browser-4.3.6.tgz",
+      "integrity": "sha1-YVKx87eNAkb8XhUOL3ue1DN+O6Y=",
       "requires": {
         "tslib": "1.7.1"
       }
     },
     "@angular/platform-browser-dynamic": {
-      "version": "4.3.5",
-      "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-4.3.5.tgz",
-      "integrity": "sha1-Sml7OwrsgFsziE/UqbNHMGW6seA=",
+      "version": "4.3.6",
+      "resolved": "https://docker.ub.intern.uni-leipzig.de/npm/@angular%2fplatform-browser-dynamic/-/platform-browser-dynamic-4.3.6.tgz",
+      "integrity": "sha1-nqv4JvEZyY+Fwqlu3LGKsAtO+xw=",
       "requires": {
         "tslib": "1.7.1"
       }
     },
     "@angular/router": {
-      "version": "4.3.5",
-      "resolved": "https://registry.npmjs.org/@angular/router/-/router-4.3.5.tgz",
-      "integrity": "sha1-GICCdHvJtpdPnUs/VVe0NGRdI80=",
+      "version": "4.3.6",
+      "resolved": "https://docker.ub.intern.uni-leipzig.de/npm/@angular%2frouter/-/router-4.3.6.tgz",
+      "integrity": "sha1-ZAM+20/NoIoyPnUztKGCDA8o0TA=",
       "requires": {
         "tslib": "1.7.1"
       }
@@ -74,8 +74,8 @@
       "integrity": "sha512-iGYVwwFznpBzqwS3QOoaop3mEbW8vAuqnPN2/pi2/HTREHeFTT+xX4hp5OImpQ7q4bE3a96JsDgBUccsx0fL/A==",
       "dev": true,
       "requires": {
-        "@types/express": "4.0.36",
-        "@types/node": "8.0.20"
+        "@types/express": "4.0.37",
+        "@types/node": "8.0.25"
       }
     },
     "@types/compression": {
@@ -84,7 +84,7 @@
       "integrity": "sha1-ldxzOiM5qoRjgdfxN3eS0lU9wn0=",
       "dev": true,
       "requires": {
-        "@types/express": "4.0.36"
+        "@types/express": "4.0.37"
       }
     },
     "@types/debug": {
@@ -94,22 +94,22 @@
       "dev": true
     },
     "@types/express": {
-      "version": "4.0.36",
-      "resolved": "https://registry.npmjs.org/@types/express/-/express-4.0.36.tgz",
-      "integrity": "sha512-bT9q2eqH/E72AGBQKT50dh6AXzheTqigGZ1GwDiwmx7vfHff0bZOrvUWjvGpNWPNkRmX1vDF6wonG6rlpBHb1A==",
+      "version": "4.0.37",
+      "resolved": "https://docker.ub.intern.uni-leipzig.de/npm/@types%2fexpress/-/express-4.0.37.tgz",
+      "integrity": "sha512-tIULTLzQpFFs5/PKnFIAFOsXQxss76glppbVKR3/jddPK26SBsD5HF5grn5G2jOGtpRWSBvYmDYoduVv+3wOXg==",
       "dev": true,
       "requires": {
-        "@types/express-serve-static-core": "4.0.49",
-        "@types/serve-static": "1.7.31"
+        "@types/express-serve-static-core": "4.0.50",
+        "@types/serve-static": "1.7.32"
       }
     },
     "@types/express-serve-static-core": {
-      "version": "4.0.49",
-      "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.0.49.tgz",
-      "integrity": "sha512-b7mVHoURu1xaP/V6xw1sYwyv9V0EZ7euyi+sdnbnTZxEkAh4/hzPsI6Eflq+ZzHQ/Tgl7l16Jz+0oz8F46MLnA==",
+      "version": "4.0.50",
+      "resolved": "https://docker.ub.intern.uni-leipzig.de/npm/@types%2fexpress-serve-static-core/-/express-serve-static-core-4.0.50.tgz",
+      "integrity": "sha512-0n1YgeUfZEIaMMu82LuOFIFDyMtFtcEP0yjQKihJlNjpCiygDVri7C26DC7jaUOwFXL6ZU2x4tGtNYNEgeO3tw==",
       "dev": true,
       "requires": {
-        "@types/node": "8.0.20"
+        "@types/node": "8.0.25"
       }
     },
     "@types/form-data": {
@@ -118,7 +118,7 @@
       "integrity": "sha512-vm5OGsKc61Sx/GTRMQ9d0H0PYCDebT78/bdIBPCoPEHdgp0etaH1RzMmkDygymUmyXTj3rdWQn0sRUpYKZzljA==",
       "dev": true,
       "requires": {
-        "@types/node": "8.0.20"
+        "@types/node": "8.0.25"
       }
     },
     "@types/mime": {
@@ -134,9 +134,9 @@
       "dev": true
     },
     "@types/node": {
-      "version": "8.0.20",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-8.0.20.tgz",
-      "integrity": "sha512-MnB7YEpmLUyEWRVRhKpRs4swwqITnY8BcVFPoTuCl99SCplI/lLUiU5vcJ/OANDqwkpdIg0pDEM38K22KQT2RA==",
+      "version": "8.0.25",
+      "resolved": "https://docker.ub.intern.uni-leipzig.de/npm/@types%2fnode/-/node-8.0.25.tgz",
+      "integrity": "sha512-zT+t9841g1HsjLtPMCYxmb1U4pcZ2TOegAKiomlmj6bIziuaEYHUavxLE9NRwdntY0vOCrgHho6OXjDX7fm/Kw==",
       "dev": true
     },
     "@types/node-cache": {
@@ -145,41 +145,41 @@
       "integrity": "sha512-7wZKfsOBpcc+bRQNQ2doC4okGLRWD4EW/JMe3TTuGB3NYxT7lj0RQzHf04At1QaAt8jRE7o+xY/NvuaVP/rg3w==",
       "dev": true,
       "requires": {
-        "@types/node": "8.0.20"
+        "@types/node": "8.0.25"
       }
     },
     "@types/react": {
-      "version": "16.0.2",
-      "resolved": "https://registry.npmjs.org/@types/react/-/react-16.0.2.tgz",
-      "integrity": "sha512-vVdCha0AMQRMmE26AySLZG+R6qgZ8oNl4Qa2GxryM15rqY4zWKHl2hHLbfEXfaIxzdeDOmyX4O5p7gU/wT0jJw==",
+      "version": "16.0.5",
+      "resolved": "https://docker.ub.intern.uni-leipzig.de/npm/@types%2freact/-/react-16.0.5.tgz",
+      "integrity": "sha512-Wo/JT6Cpl7XuLA1Ov2M2Rso4Tep7rX6h1csbqhNDaSxqeY8nxUbrDkT6vJrKVu+7tw7vmJP9libZSReV9GsG9A==",
       "dev": true
     },
     "@types/react-dom": {
-      "version": "15.5.3",
-      "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-15.5.3.tgz",
-      "integrity": "sha512-fbOEw/SVkp8iOLKvHnpDwJ/TytEogvN6shdY1G3o9gvbuypre1KYSQ81nPy7ZgQQ1mOJJkl2WNVmZNeZ1FjAQA==",
+      "version": "15.5.4",
+      "resolved": "https://docker.ub.intern.uni-leipzig.de/npm/@types%2freact-dom/-/react-dom-15.5.4.tgz",
+      "integrity": "sha512-70jxjspCatgOXpRptyp/T8bag5prWMvd/rjc5trY3xiKQJOFfWMxGI8pSEJMHi9KQRAhpiLCbJLzcbVFX/nw2w==",
       "dev": true,
       "requires": {
-        "@types/react": "16.0.2"
+        "@types/react": "16.0.5"
       }
     },
     "@types/request": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/@types/request/-/request-2.0.1.tgz",
-      "integrity": "sha512-DTz1/+CU76KsskRoNqKAa/jIaLoAXNdffP0ah8rt3P2OtxRqRU5nWZkC/GEQXNcO9qMzIxKIW969sSBtMlZ4cA==",
+      "version": "2.0.3",
+      "resolved": "https://docker.ub.intern.uni-leipzig.de/npm/@types%2frequest/-/request-2.0.3.tgz",
+      "integrity": "sha512-cIvnyFRARxwE4OHpCyYue7H+SxaKFPpeleRCHJicft8QhyTNbVYsMwjvEzEPqG06D2LGHZ+sN5lXc8+bTu6D8A==",
       "dev": true,
       "requires": {
         "@types/form-data": "2.2.0",
-        "@types/node": "8.0.20"
+        "@types/node": "8.0.25"
       }
     },
     "@types/serve-static": {
-      "version": "1.7.31",
-      "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.7.31.tgz",
-      "integrity": "sha1-FUVt6NmNa0z/Mb5savdJKuY/Uho=",
+      "version": "1.7.32",
+      "resolved": "https://docker.ub.intern.uni-leipzig.de/npm/@types%2fserve-static/-/serve-static-1.7.32.tgz",
+      "integrity": "sha512-WpI0g7M1FiOmJ/a97Qrjafq2I938tjAZ3hZr9O7sXyA6oUhH3bqUNZIt7r1KZg8TQAKxcvxt6JjQ5XuLfIBFvg==",
       "dev": true,
       "requires": {
-        "@types/express-serve-static-core": "4.0.49",
+        "@types/express-serve-static-core": "4.0.50",
         "@types/mime": "1.3.1"
       }
     },
@@ -189,6 +189,12 @@
       "integrity": "sha512-+J77XoXmKIXcLK5fWS5B3j31F4wfdclzk+lRxFcKfXTHzZfd153u8w96W30dQBIT4kwKobjvYa0kIb0BWJX21Q==",
       "dev": true
     },
+    "abbrev": {
+      "version": "1.0.9",
+      "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz",
+      "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=",
+      "dev": true
+    },
     "accepts": {
       "version": "1.3.3",
       "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz",
@@ -221,23 +227,6 @@
         }
       }
     },
-    "acorn-jsx": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz",
-      "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=",
-      "dev": true,
-      "requires": {
-        "acorn": "3.3.0"
-      },
-      "dependencies": {
-        "acorn": {
-          "version": "3.3.0",
-          "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz",
-          "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=",
-          "dev": true
-        }
-      }
-    },
     "ajv": {
       "version": "5.2.2",
       "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.2.tgz",
@@ -250,12 +239,6 @@
         "json-stable-stringify": "1.0.1"
       }
     },
-    "ajv-keywords": {
-      "version": "1.5.1",
-      "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz",
-      "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=",
-      "dev": true
-    },
     "align-text": {
       "version": "0.1.4",
       "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz",
@@ -302,12 +285,6 @@
         }
       }
     },
-    "ansi-escapes": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-2.0.0.tgz",
-      "integrity": "sha1-W65SvkJIeN2Xg+iRDj/Cki6DyBs=",
-      "dev": true
-    },
     "ansi-regex": {
       "version": "2.1.1",
       "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
@@ -320,12 +297,6 @@
       "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
       "dev": true
     },
-    "any-promise": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
-      "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=",
-      "dev": true
-    },
     "anymatch": {
       "version": "1.3.2",
       "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz",
@@ -371,33 +342,12 @@
       "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
       "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
     },
-    "array-union": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
-      "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
-      "dev": true,
-      "requires": {
-        "array-uniq": "1.0.3"
-      }
-    },
-    "array-uniq": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
-      "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
-      "dev": true
-    },
     "array-unique": {
       "version": "0.2.1",
       "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
       "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=",
       "dev": true
     },
-    "arrify": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
-      "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
-      "dev": true
-    },
     "asap": {
       "version": "2.0.6",
       "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
@@ -1070,21 +1020,6 @@
         }
       }
     },
-    "caller-path": {
-      "version": "0.1.0",
-      "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz",
-      "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=",
-      "dev": true,
-      "requires": {
-        "callsites": "0.2.0"
-      }
-    },
-    "callsites": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz",
-      "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=",
-      "dev": true
-    },
     "camel-case": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz",
@@ -1173,12 +1108,6 @@
         "safe-buffer": "5.1.1"
       }
     },
-    "circular-json": {
-      "version": "0.3.3",
-      "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz",
-      "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==",
-      "dev": true
-    },
     "clap": {
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.0.tgz",
@@ -1253,21 +1182,6 @@
         "source-map": "0.5.6"
       }
     },
-    "cli-cursor": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
-      "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
-      "dev": true,
-      "requires": {
-        "restore-cursor": "2.0.0"
-      }
-    },
-    "cli-width": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.1.0.tgz",
-      "integrity": "sha1-sjTKIJsp72b8UY2bmNWEewDt8Ao=",
-      "dev": true
-    },
     "cliui": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz",
@@ -1452,17 +1366,6 @@
       "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
       "dev": true
     },
-    "concat-stream": {
-      "version": "1.6.0",
-      "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz",
-      "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=",
-      "dev": true,
-      "requires": {
-        "inherits": "2.0.3",
-        "readable-stream": "2.3.3",
-        "typedarray": "0.0.6"
-      }
-    },
     "console-browserify": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz",
@@ -1741,9 +1644,9 @@
       "dev": true
     },
     "debug": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-3.0.0.tgz",
-      "integrity": "sha512-XQkHxxqbsCb+zFurCHbotmJZl5jXsxvkRt952pT6Hpo7LmjWAJF12d9/kqBg5owjbLADbBDli1olravjSiSg8g==",
+      "version": "3.0.1",
+      "resolved": "https://docker.ub.intern.uni-leipzig.de/npm/debug/-/debug-3.0.1.tgz",
+      "integrity": "sha512-6nVc6S36qbt/mutyt+UGMnawAMrPDZUPQjRZI3FS9tCtDRhvxJbK79unYBLPi+z5SLXQ3ftoVBFCblQtNSls8w==",
       "requires": {
         "ms": "2.0.0"
       }
@@ -1775,21 +1678,6 @@
       "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=",
       "dev": true
     },
-    "del": {
-      "version": "2.2.2",
-      "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz",
-      "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=",
-      "dev": true,
-      "requires": {
-        "globby": "5.0.0",
-        "is-path-cwd": "1.0.0",
-        "is-path-in-cwd": "1.0.0",
-        "object-assign": "4.1.1",
-        "pify": "2.3.0",
-        "pinkie-promise": "2.0.1",
-        "rimraf": "2.6.1"
-      }
-    },
     "delayed-stream": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
@@ -1832,16 +1720,6 @@
         "randombytes": "2.0.5"
       }
     },
-    "doctrine": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.0.tgz",
-      "integrity": "sha1-xz2NKQnSIpHhoAejlYBNqLZl/mM=",
-      "dev": true,
-      "requires": {
-        "esutils": "2.0.2",
-        "isarray": "1.0.0"
-      }
-    },
     "dom-converter": {
       "version": "0.1.4",
       "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.1.4.tgz",
@@ -2094,108 +1972,61 @@
       "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
       "dev": true
     },
-    "escope": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz",
-      "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=",
+    "escodegen": {
+      "version": "1.8.1",
+      "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz",
+      "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=",
       "dev": true,
       "requires": {
-        "es6-map": "0.1.5",
-        "es6-weak-map": "2.0.2",
-        "esrecurse": "4.2.0",
-        "estraverse": "4.2.0"
-      }
-    },
-    "eslint": {
-      "version": "4.4.1",
-      "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.4.1.tgz",
-      "integrity": "sha1-mc1+r8/8ov+Zpcj18qR01jZLS9M=",
-      "dev": true,
-      "requires": {
-        "ajv": "5.2.2",
-        "babel-code-frame": "6.22.0",
-        "chalk": "1.1.3",
-        "concat-stream": "1.6.0",
-        "cross-spawn": "5.1.0",
-        "debug": "2.6.8",
-        "doctrine": "2.0.0",
-        "eslint-scope": "3.7.1",
-        "espree": "3.5.0",
-        "esquery": "1.0.0",
-        "estraverse": "4.2.0",
+        "esprima": "2.7.3",
+        "estraverse": "1.9.3",
         "esutils": "2.0.2",
-        "file-entry-cache": "2.0.0",
-        "functional-red-black-tree": "1.0.1",
-        "glob": "7.1.2",
-        "globals": "9.18.0",
-        "ignore": "3.3.3",
-        "imurmurhash": "0.1.4",
-        "inquirer": "3.2.1",
-        "is-resolvable": "1.0.0",
-        "js-yaml": "3.9.1",
-        "json-stable-stringify": "1.0.1",
-        "levn": "0.3.0",
-        "lodash": "4.17.4",
-        "minimatch": "3.0.4",
-        "mkdirp": "0.5.1",
-        "natural-compare": "1.4.0",
         "optionator": "0.8.2",
-        "path-is-inside": "1.0.2",
-        "pluralize": "4.0.0",
-        "progress": "2.0.0",
-        "require-uncached": "1.0.3",
-        "semver": "5.4.1",
-        "strip-json-comments": "2.0.1",
-        "table": "4.0.1",
-        "text-table": "0.2.0"
+        "source-map": "0.2.0"
       },
       "dependencies": {
-        "debug": {
-          "version": "2.6.8",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz",
-          "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=",
+        "esprima": {
+          "version": "2.7.3",
+          "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz",
+          "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=",
+          "dev": true
+        },
+        "estraverse": {
+          "version": "1.9.3",
+          "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz",
+          "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=",
+          "dev": true
+        },
+        "source-map": {
+          "version": "0.2.0",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz",
+          "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=",
           "dev": true,
+          "optional": true,
           "requires": {
-            "ms": "2.0.0"
+            "amdefine": "1.0.1"
           }
         }
       }
     },
-    "eslint-scope": {
-      "version": "3.7.1",
-      "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz",
-      "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=",
+    "escope": {
+      "version": "3.6.0",
+      "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz",
+      "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=",
       "dev": true,
       "requires": {
+        "es6-map": "0.1.5",
+        "es6-weak-map": "2.0.2",
         "esrecurse": "4.2.0",
         "estraverse": "4.2.0"
       }
     },
-    "espree": {
-      "version": "3.5.0",
-      "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.0.tgz",
-      "integrity": "sha1-mDWGJb3QVYYeon4oZ+pyn69GPY0=",
-      "dev": true,
-      "requires": {
-        "acorn": "5.1.1",
-        "acorn-jsx": "3.0.1"
-      }
-    },
     "esprima": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz",
       "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==",
       "dev": true
     },
-    "esquery": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz",
-      "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=",
-      "dev": true,
-      "requires": {
-        "estraverse": "4.2.0"
-      }
-    },
     "esrecurse": {
       "version": "4.2.0",
       "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz",
@@ -2355,17 +2186,6 @@
         "is-extendable": "0.1.1"
       }
     },
-    "external-editor": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.0.4.tgz",
-      "integrity": "sha1-HtkZnanL/i7y96MbL96LDRI2iXI=",
-      "dev": true,
-      "requires": {
-        "iconv-lite": "0.4.18",
-        "jschardet": "1.5.1",
-        "tmp": "0.0.31"
-      }
-    },
     "extglob": {
       "version": "0.3.2",
       "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz",
@@ -2431,25 +2251,6 @@
         }
       }
     },
-    "figures": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
-      "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
-      "dev": true,
-      "requires": {
-        "escape-string-regexp": "1.0.5"
-      }
-    },
-    "file-entry-cache": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz",
-      "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=",
-      "dev": true,
-      "requires": {
-        "flat-cache": "1.2.2",
-        "object-assign": "4.1.1"
-      }
-    },
     "file-loader": {
       "version": "0.11.2",
       "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-0.11.2.tgz",
@@ -2511,18 +2312,6 @@
         "locate-path": "2.0.0"
       }
     },
-    "flat-cache": {
-      "version": "1.2.2",
-      "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.2.2.tgz",
-      "integrity": "sha1-+oZxTnLCHbiGAXYezy9VXRq8a5Y=",
-      "dev": true,
-      "requires": {
-        "circular-json": "0.3.3",
-        "del": "2.2.2",
-        "graceful-fs": "4.1.11",
-        "write": "0.2.1"
-      }
-    },
     "flatten": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz",
@@ -2596,12 +2385,6 @@
       "integrity": "sha1-FhdnFMgBeY5Ojyz391KUZ7tKV3E=",
       "dev": true
     },
-    "functional-red-black-tree": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
-      "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
-      "dev": true
-    },
     "get-caller-file": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz",
@@ -2635,20 +2418,6 @@
         }
       }
     },
-    "glob": {
-      "version": "7.1.2",
-      "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
-      "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
-      "dev": true,
-      "requires": {
-        "fs.realpath": "1.0.0",
-        "inflight": "1.0.6",
-        "inherits": "2.0.3",
-        "minimatch": "3.0.4",
-        "once": "1.4.0",
-        "path-is-absolute": "1.0.1"
-      }
-    },
     "glob-base": {
       "version": "0.3.0",
       "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz",
@@ -2668,26 +2437,6 @@
         "is-glob": "2.0.1"
       }
     },
-    "globals": {
-      "version": "9.18.0",
-      "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz",
-      "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==",
-      "dev": true
-    },
-    "globby": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz",
-      "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=",
-      "dev": true,
-      "requires": {
-        "array-union": "1.0.2",
-        "arrify": "1.0.1",
-        "glob": "7.1.2",
-        "object-assign": "4.1.1",
-        "pify": "2.3.0",
-        "pinkie-promise": "2.0.1"
-      }
-    },
     "graceful-fs": {
       "version": "4.1.11",
       "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
@@ -2706,6 +2455,35 @@
       "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=",
       "dev": true
     },
+    "handlebars": {
+      "version": "4.0.10",
+      "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.10.tgz",
+      "integrity": "sha1-PTDHGLCaPZbyPqTMH0A8TTup/08=",
+      "dev": true,
+      "requires": {
+        "async": "1.5.2",
+        "optimist": "0.6.1",
+        "source-map": "0.4.4",
+        "uglify-js": "2.8.29"
+      },
+      "dependencies": {
+        "async": {
+          "version": "1.5.2",
+          "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
+          "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
+          "dev": true
+        },
+        "source-map": {
+          "version": "0.4.4",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
+          "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
+          "dev": true,
+          "requires": {
+            "amdefine": "1.0.1"
+          }
+        }
+      }
+    },
     "har-schema": {
       "version": "1.0.5",
       "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz",
@@ -3047,18 +2825,6 @@
       "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=",
       "dev": true
     },
-    "ignore": {
-      "version": "3.3.3",
-      "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.3.tgz",
-      "integrity": "sha1-QyNS5XrM2HqzEQ6C0/6g5HgSFW0=",
-      "dev": true
-    },
-    "imurmurhash": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
-      "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
-      "dev": true
-    },
     "indexes-of": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz",
@@ -3086,74 +2852,6 @@
       "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
       "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
     },
-    "inquirer": {
-      "version": "3.2.1",
-      "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.2.1.tgz",
-      "integrity": "sha512-QgW3eiPN8gpj/K5vVpHADJJgrrF0ho/dZGylikGX7iqAdRgC9FVKYKWFLx6hZDBFcOLEoSqINYrVPeFAeG/PdA==",
-      "dev": true,
-      "requires": {
-        "ansi-escapes": "2.0.0",
-        "chalk": "2.1.0",
-        "cli-cursor": "2.1.0",
-        "cli-width": "2.1.0",
-        "external-editor": "2.0.4",
-        "figures": "2.0.0",
-        "lodash": "4.17.4",
-        "mute-stream": "0.0.7",
-        "run-async": "2.3.0",
-        "rx-lite": "4.0.8",
-        "rx-lite-aggregates": "4.0.8",
-        "string-width": "2.1.1",
-        "strip-ansi": "4.0.0",
-        "through": "2.3.8"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
-          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
-          "dev": true
-        },
-        "ansi-styles": {
-          "version": "3.2.0",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
-          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
-          "dev": true,
-          "requires": {
-            "color-convert": "1.9.0"
-          }
-        },
-        "chalk": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz",
-          "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==",
-          "dev": true,
-          "requires": {
-            "ansi-styles": "3.2.0",
-            "escape-string-regexp": "1.0.5",
-            "supports-color": "4.2.1"
-          }
-        },
-        "strip-ansi": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
-          "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "3.0.0"
-          }
-        },
-        "supports-color": {
-          "version": "4.2.1",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.1.tgz",
-          "integrity": "sha512-qxzYsob3yv6U+xMzPrv170y8AwGP7i74g+pbixCfD6rgso8BscLT2qXIuz6TpOaiJZ3mFgT5O9lyT9nMU4LfaA==",
-          "dev": true,
-          "requires": {
-            "has-flag": "2.0.0"
-          }
-        }
-      }
-    },
     "interpret": {
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.3.tgz",
@@ -3315,30 +3013,6 @@
         }
       }
     },
-    "is-path-cwd": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz",
-      "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=",
-      "dev": true
-    },
-    "is-path-in-cwd": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz",
-      "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=",
-      "dev": true,
-      "requires": {
-        "is-path-inside": "1.0.0"
-      }
-    },
-    "is-path-inside": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz",
-      "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=",
-      "dev": true,
-      "requires": {
-        "path-is-inside": "1.0.2"
-      }
-    },
     "is-plain-obj": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
@@ -3374,21 +3048,6 @@
       "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=",
       "dev": true
     },
-    "is-promise": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
-      "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=",
-      "dev": true
-    },
-    "is-resolvable": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz",
-      "integrity": "sha1-jfV8YeouPFAUCNEA+wE8+NbgzGI=",
-      "dev": true,
-      "requires": {
-        "tryit": "1.0.3"
-      }
-    },
     "is-stream": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
@@ -3408,12 +3067,6 @@
       "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
       "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
     },
-    "is-utf8": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
-      "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
-      "dev": true
-    },
     "isarray": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
@@ -3449,6 +3102,70 @@
       "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
       "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
     },
+    "istanbul": {
+      "version": "0.4.5",
+      "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.4.5.tgz",
+      "integrity": "sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=",
+      "dev": true,
+      "requires": {
+        "abbrev": "1.0.9",
+        "async": "1.5.2",
+        "escodegen": "1.8.1",
+        "esprima": "2.7.3",
+        "glob": "5.0.15",
+        "handlebars": "4.0.10",
+        "js-yaml": "3.9.1",
+        "mkdirp": "0.5.1",
+        "nopt": "3.0.6",
+        "once": "1.4.0",
+        "resolve": "1.1.7",
+        "supports-color": "3.2.3",
+        "which": "1.3.0",
+        "wordwrap": "1.0.0"
+      },
+      "dependencies": {
+        "async": {
+          "version": "1.5.2",
+          "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
+          "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
+          "dev": true
+        },
+        "esprima": {
+          "version": "2.7.3",
+          "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz",
+          "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=",
+          "dev": true
+        },
+        "glob": {
+          "version": "5.0.15",
+          "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
+          "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
+          "dev": true,
+          "requires": {
+            "inflight": "1.0.6",
+            "inherits": "2.0.3",
+            "minimatch": "3.0.4",
+            "once": "1.4.0",
+            "path-is-absolute": "1.0.1"
+          }
+        },
+        "has-flag": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
+          "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
+          "dev": true
+        },
+        "supports-color": {
+          "version": "3.2.3",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
+          "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
+          "dev": true,
+          "requires": {
+            "has-flag": "1.0.0"
+          }
+        }
+      }
+    },
     "jquery": {
       "version": "3.2.1",
       "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.2.1.tgz",
@@ -3482,12 +3199,6 @@
       "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
       "optional": true
     },
-    "jschardet": {
-      "version": "1.5.1",
-      "resolved": "https://registry.npmjs.org/jschardet/-/jschardet-1.5.1.tgz",
-      "integrity": "sha512-vE2hT1D0HLZCLLclfBSfkfTTedhVj0fubHpJBHKwwUWX0nSbhPAfk+SG9rTX95BYNmau8rGFfCeaT6T5OW1C2A==",
-      "dev": true
-    },
     "jsesc": {
       "version": "0.5.0",
       "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
@@ -3757,12 +3468,6 @@
       "integrity": "sha1-WQTcU3w57G2+/q6QIycTX6hRHxI=",
       "dev": true
     },
-    "make-error": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.0.tgz",
-      "integrity": "sha1-Uq06M5zPEM5itAQLcI/nByRLi5Y=",
-      "dev": true
-    },
     "map-cache": {
       "version": "0.2.2",
       "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
@@ -4005,17 +3710,31 @@
         }
       }
     },
+    "mocha-jenkins-reporter": {
+      "version": "0.3.9",
+      "resolved": "https://registry.npmjs.org/mocha-jenkins-reporter/-/mocha-jenkins-reporter-0.3.9.tgz",
+      "integrity": "sha512-+/nhhGRiAVkoQcapiWdlazL/6/bDr+adQYHQ3sjKR3ipB7O2cZIuGvkgaeKDxMtEFby/ZbWhi2CYHhtJm487GA==",
+      "dev": true,
+      "requires": {
+        "diff": "1.0.7",
+        "mkdirp": "0.5.1",
+        "mocha": "3.5.0",
+        "xml": "1.0.1"
+      },
+      "dependencies": {
+        "diff": {
+          "version": "1.0.7",
+          "resolved": "https://registry.npmjs.org/diff/-/diff-1.0.7.tgz",
+          "integrity": "sha1-JLuwAcSn1VIhaefKvbLCgU7ZHPQ=",
+          "dev": true
+        }
+      }
+    },
     "ms": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
       "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
     },
-    "mute-stream": {
-      "version": "0.0.7",
-      "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
-      "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=",
-      "dev": true
-    },
     "nanomatch": {
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.0.tgz",
@@ -4065,12 +3784,6 @@
         }
       }
     },
-    "natural-compare": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
-      "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
-      "dev": true
-    },
     "ncname": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/ncname/-/ncname-1.0.0.tgz",
@@ -4151,6 +3864,15 @@
         }
       }
     },
+    "nopt": {
+      "version": "3.0.6",
+      "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
+      "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
+      "dev": true,
+      "requires": {
+        "abbrev": "1.0.9"
+      }
+    },
     "normalize-package-data": {
       "version": "2.4.0",
       "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
@@ -4329,13 +4051,22 @@
         "wrappy": "1.0.2"
       }
     },
-    "onetime": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
-      "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
+    "optimist": {
+      "version": "0.6.1",
+      "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
+      "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
       "dev": true,
       "requires": {
-        "mimic-fn": "1.1.0"
+        "minimist": "0.0.8",
+        "wordwrap": "0.0.3"
+      },
+      "dependencies": {
+        "wordwrap": {
+          "version": "0.0.3",
+          "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
+          "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=",
+          "dev": true
+        }
       }
     },
     "optionator": {
@@ -4369,12 +4100,6 @@
         "mem": "1.1.0"
       }
     },
-    "os-tmpdir": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
-      "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
-      "dev": true
-    },
     "p-finally": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
@@ -4474,12 +4199,6 @@
       "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
       "dev": true
     },
-    "path-is-inside": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
-      "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
-      "dev": true
-    },
     "path-key": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
@@ -4533,27 +4252,6 @@
       "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
       "dev": true
     },
-    "pinkie": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
-      "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
-      "dev": true
-    },
-    "pinkie-promise": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
-      "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
-      "dev": true,
-      "requires": {
-        "pinkie": "2.0.4"
-      }
-    },
-    "pluralize": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-4.0.0.tgz",
-      "integrity": "sha1-WbcIwcAZCi9pLxx2GMRGsFL9F2I=",
-      "dev": true
-    },
     "posix-character-classes": {
       "version": "0.1.1",
       "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
@@ -5126,12 +4824,6 @@
       "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=",
       "dev": true
     },
-    "progress": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz",
-      "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=",
-      "dev": true
-    },
     "promise": {
       "version": "7.3.1",
       "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
@@ -5585,20 +5277,10 @@
       "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
       "dev": true
     },
-    "require-uncached": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz",
-      "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=",
-      "dev": true,
-      "requires": {
-        "caller-path": "0.1.0",
-        "resolve-from": "1.0.1"
-      }
-    },
-    "resolve-from": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz",
-      "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=",
+    "resolve": {
+      "version": "1.1.7",
+      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz",
+      "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=",
       "dev": true
     },
     "resolve-url": {
@@ -5607,16 +5289,6 @@
       "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
       "dev": true
     },
-    "restore-cursor": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
-      "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
-      "dev": true,
-      "requires": {
-        "onetime": "2.0.1",
-        "signal-exit": "3.0.2"
-      }
-    },
     "right-align": {
       "version": "0.1.3",
       "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz",
@@ -5626,15 +5298,6 @@
         "align-text": "0.1.4"
       }
     },
-    "rimraf": {
-      "version": "2.6.1",
-      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz",
-      "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=",
-      "dev": true,
-      "requires": {
-        "glob": "7.1.2"
-      }
-    },
     "ripemd160": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz",
@@ -5645,30 +5308,6 @@
         "inherits": "2.0.3"
       }
     },
-    "run-async": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz",
-      "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=",
-      "dev": true,
-      "requires": {
-        "is-promise": "2.1.0"
-      }
-    },
-    "rx-lite": {
-      "version": "4.0.8",
-      "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz",
-      "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=",
-      "dev": true
-    },
-    "rx-lite-aggregates": {
-      "version": "4.0.8",
-      "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz",
-      "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=",
-      "dev": true,
-      "requires": {
-        "rx-lite": "4.0.8"
-      }
-    },
     "rxjs": {
       "version": "5.4.3",
       "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.4.3.tgz",
@@ -5871,12 +5510,6 @@
       "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
       "dev": true
     },
-    "slice-ansi": {
-      "version": "0.0.4",
-      "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz",
-      "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=",
-      "dev": true
-    },
     "snapdragon": {
       "version": "0.8.1",
       "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.1.tgz",
@@ -6264,12 +5897,6 @@
       "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
       "dev": true
     },
-    "strip-json-comments": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
-      "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
-      "dev": true
-    },
     "style-loader": {
       "version": "0.18.2",
       "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.18.2.tgz",
@@ -6324,44 +5951,12 @@
       "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.4.tgz",
       "integrity": "sha1-Kb9hXUqnEhvdiYsi1LP5vE4qoD0="
     },
-    "table": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/table/-/table-4.0.1.tgz",
-      "integrity": "sha1-qBFsEz+sLGH0pCCrbN9cTWHw5DU=",
-      "dev": true,
-      "requires": {
-        "ajv": "4.11.8",
-        "ajv-keywords": "1.5.1",
-        "chalk": "1.1.3",
-        "lodash": "4.17.4",
-        "slice-ansi": "0.0.4",
-        "string-width": "2.1.1"
-      },
-      "dependencies": {
-        "ajv": {
-          "version": "4.11.8",
-          "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz",
-          "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=",
-          "dev": true,
-          "requires": {
-            "co": "4.6.0",
-            "json-stable-stringify": "1.0.1"
-          }
-        }
-      }
-    },
     "tapable": {
       "version": "0.2.8",
       "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.8.tgz",
       "integrity": "sha1-mTcqXJmb8t8WCvwNdL7U9HlIzSI=",
       "dev": true
     },
-    "text-table": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
-      "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
-      "dev": true
-    },
     "through": {
       "version": "2.3.8",
       "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
@@ -6377,15 +5972,6 @@
         "setimmediate": "1.0.5"
       }
     },
-    "tmp": {
-      "version": "0.0.31",
-      "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz",
-      "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=",
-      "dev": true,
-      "requires": {
-        "os-tmpdir": "1.0.2"
-      }
-    },
     "to-arraybuffer": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
@@ -6475,49 +6061,6 @@
         "punycode": "1.4.1"
       }
     },
-    "tryit": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/tryit/-/tryit-1.0.3.tgz",
-      "integrity": "sha1-OTvnMKlEb9Hq1tpZoBQwjzbCics=",
-      "dev": true
-    },
-    "ts-mocha": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/ts-mocha/-/ts-mocha-1.0.3.tgz",
-      "integrity": "sha1-KSlZ7MVtVrFVgA1TCrLcsxYKN+o=",
-      "dev": true,
-      "requires": {
-        "ts-node": "1.7.3"
-      }
-    },
-    "ts-node": {
-      "version": "1.7.3",
-      "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-1.7.3.tgz",
-      "integrity": "sha1-3uf4qEdRcy08Lkl8rFoC+xF9/uc=",
-      "dev": true,
-      "requires": {
-        "arrify": "1.0.1",
-        "chalk": "1.1.3",
-        "diff": "3.2.0",
-        "make-error": "1.3.0",
-        "minimist": "1.2.0",
-        "mkdirp": "0.5.1",
-        "pinkie": "2.0.4",
-        "source-map-support": "0.4.16",
-        "tsconfig": "5.0.3",
-        "v8flags": "2.1.1",
-        "xtend": "4.0.1",
-        "yn": "1.3.0"
-      },
-      "dependencies": {
-        "minimist": {
-          "version": "1.2.0",
-          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
-          "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
-          "dev": true
-        }
-      }
-    },
     "tsc-watch": {
       "version": "1.0.7",
       "resolved": "https://registry.npmjs.org/tsc-watch/-/tsc-watch-1.0.7.tgz",
@@ -6527,30 +6070,7 @@
         "chalk": "1.1.3",
         "cross-spawn": "5.1.0",
         "ps-tree": "1.1.0",
-        "typescript": "2.4.2"
-      }
-    },
-    "tsconfig": {
-      "version": "5.0.3",
-      "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-5.0.3.tgz",
-      "integrity": "sha1-X0J45wGACWeo/Dg/0ZZIh48qbjo=",
-      "dev": true,
-      "requires": {
-        "any-promise": "1.3.0",
-        "parse-json": "2.2.0",
-        "strip-bom": "2.0.0",
-        "strip-json-comments": "2.0.1"
-      },
-      "dependencies": {
-        "strip-bom": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
-          "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
-          "dev": true,
-          "requires": {
-            "is-utf8": "0.2.1"
-          }
-        }
+        "typescript": "2.5.1"
       }
     },
     "tslib": {
@@ -6596,16 +6116,10 @@
         "mime-types": "2.1.16"
       }
     },
-    "typedarray": {
-      "version": "0.0.6",
-      "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
-      "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
-      "dev": true
-    },
     "typescript": {
-      "version": "2.4.2",
-      "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.4.2.tgz",
-      "integrity": "sha1-+DlfhdRZJ2BnyYiqQYN6j4KHCEQ=",
+      "version": "2.5.1",
+      "resolved": "https://docker.ub.intern.uni-leipzig.de/npm/typescript/-/typescript-2.5.1.tgz",
+      "integrity": "sha1-znzJOto94ZR1zJ0X463qeu4YMqo=",
       "dev": true
     },
     "ua-parser-js": {
@@ -6796,12 +6310,6 @@
         }
       }
     },
-    "user-home": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz",
-      "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=",
-      "dev": true
-    },
     "util": {
       "version": "0.10.3",
       "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
@@ -6841,15 +6349,6 @@
       "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz",
       "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g=="
     },
-    "v8flags": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz",
-      "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=",
-      "dev": true,
-      "requires": {
-        "user-home": "1.1.1"
-      }
-    },
     "validate-npm-package-license": {
       "version": "3.0.1",
       "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz",
@@ -7050,14 +6549,11 @@
       "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
       "dev": true
     },
-    "write": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz",
-      "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=",
-      "dev": true,
-      "requires": {
-        "mkdirp": "0.5.1"
-      }
+    "xml": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz",
+      "integrity": "sha1-eLpyAgApxbyHuKgaPPzXS0ovweU=",
+      "dev": true
     },
     "xml-char-classes": {
       "version": "1.0.0",
@@ -7162,19 +6658,10 @@
         }
       }
     },
-    "yn": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/yn/-/yn-1.3.0.tgz",
-      "integrity": "sha1-GwgSq7jYBdSJZvjfOF3J2syaGdg=",
-      "dev": true,
-      "requires": {
-        "object-assign": "4.1.1"
-      }
-    },
     "zone.js": {
-      "version": "0.8.16",
-      "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.8.16.tgz",
-      "integrity": "sha1-rDG2xBj4jA+Ritas2KQCrKkxOrs="
+      "version": "0.8.17",
+      "resolved": "https://docker.ub.intern.uni-leipzig.de/npm/zone.js/-/zone.js-0.8.17.tgz",
+      "integrity": "sha1-TF5RhahX2o2nk9rzkZNxxaNrKgs="
     }
   }
 }
diff --git a/package.json b/package.json
index 4109abdc397ab017d6934b84732c6162528b6af7..3a11d4e899d6d4d187b4c60011f29b25fc43af02 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "dacap",
-  "version": "1.0.0",
+  "version": "1.0.1",
   "description": "proxies,compresses and caches api-requests",
   "main": "bin/dacap",
   "bin": {
@@ -13,26 +13,27 @@
     "webpack-watch": "webpack --config webpack.dev.js --watch",
     "start": "node bin/dacap",
     "tsc": "tsc",
-    "inspect-watch": "tsc-watch --sourceMap --onSuccess 'node --inspect=0.0.0.0:9229 bin/dacap'",
+    "inspect-watch": "tsc-watch --onSuccess 'node --inspect=0.0.0.0:9229 bin/dacap'",
     "inspect-brk-watch": "tsc-watch --onSuccess 'node --inspect-brk=0.0.0.0:9229 bin/dacap'",
-    "test": "ts-mocha --recursive test/*",
+    "test": "mocha",
+    "ci": "istanbul cover _mocha -- --no-colors --timeout 10000 --reporter mocha-jenkins-reporter",
     "build": "rm -rf dist public && tsc --declaration && webpack --config webpack.prod.js"
   },
   "author": "Ulf Seltmann <ulf.seltmann@uni-leipzig.de>",
   "license": "GPL-2.0",
   "dependencies": {
-    "@angular/common": "^4.3.5",
-    "@angular/compiler": "^4.3.5",
-    "@angular/core": "^4.3.5",
-    "@angular/forms": "^4.3.5",
-    "@angular/http": "^4.3.5",
-    "@angular/platform-browser": "^4.3.5",
-    "@angular/platform-browser-dynamic": "^4.3.5",
-    "@angular/router": "^4.3.5",
+    "@angular/common": "^4.3.6",
+    "@angular/compiler": "^4.3.6",
+    "@angular/core": "^4.3.6",
+    "@angular/forms": "^4.3.6",
+    "@angular/http": "^4.3.6",
+    "@angular/platform-browser": "^4.3.6",
+    "@angular/platform-browser-dynamic": "^4.3.6",
+    "@angular/router": "^4.3.6",
     "body-parser": "^1.17.2",
     "compression": "^1.7.0",
     "core-js": "^2.5.0",
-    "debug": "^3.0.0",
+    "debug": "^3.0.1",
     "express": "^4.15.4",
     "node-cache": "^4.1.5",
     "q": "^1.5.0",
@@ -41,37 +42,37 @@
     "react-proxy-loader": "^0.3.5",
     "request": "^2.81.0",
     "rxjs": "^5.4.3",
-    "zone.js": "^0.8.16"
+    "zone.js": "^0.8.17"
   },
   "devDependencies": {
     "@types/body-parser": "^1.16.5",
     "@types/compression": "0.0.33",
     "@types/debug": "0.0.30",
-    "@types/express": "^4.0.36",
+    "@types/express": "^4.0.37",
     "@types/mocha": "^2.2.42",
-    "@types/node": "^8.0.20",
+    "@types/node": "^8.0.25",
     "@types/node-cache": "^4.1.0",
-    "@types/react": "^16.0.2",
-    "@types/react-dom": "^15.5.3",
-    "@types/request": "^2.0.1",
+    "@types/react": "^16.0.5",
+    "@types/react-dom": "^15.5.4",
+    "@types/request": "^2.0.3",
     "@types/should": "^11.2.0",
     "angular2-template-loader": "^0.6.2",
     "awesome-typescript-loader": "^3.2.3",
     "bootstrap": "^3.3.7",
     "css-loader": "^0.28.5",
-    "eslint": "^4.4.1",
     "extract-text-webpack-plugin": "^3.0.0",
     "file-loader": "^0.11.2",
     "html-loader": "^0.5.1",
     "html-webpack-plugin": "^2.30.1",
+    "istanbul": "^0.4.5",
     "jquery": "^3.2.1",
     "mocha": "^3.5.0",
+    "mocha-jenkins-reporter": "^0.3.9",
     "should": "^11.2.1",
     "source-map-loader": "^0.2.1",
     "style-loader": "^0.18.2",
-    "ts-mocha": "^1.0.3",
     "tsc-watch": "^1.0.7",
-    "typescript": "^2.4.2",
+    "typescript": "^2.5.1",
     "webpack": "^3.5.5",
     "webpack-merge": "^4.1.0"
   }
diff --git a/src/admin/app/add-cache.component.ts b/src/admin/app/add-cache.component.ts
index 4b4dc39f6898b7a54208e4a42eafb606e29c329b..44c2200955700551d2e9ab056e3a633eb9d04145 100644
--- a/src/admin/app/add-cache.component.ts
+++ b/src/admin/app/add-cache.component.ts
@@ -1,4 +1,4 @@
-import { Component, Output, EventEmitter } from '@angular/core';
+import { Component, Input, Output, EventEmitter } from '@angular/core';
 import { CacheService } from './cache.service';
 import { Cache } from './cache';
 
@@ -10,7 +10,7 @@ import { Cache } from './cache';
 export class AddCacheComponent {
 	name: string;
 	apiEndPoint: string;
-	proxyUrl: string;
+	@Input () proxyUrl: string;
 	@Output() onAdd: EventEmitter<Cache> = new EventEmitter();
 
 	constructor(private cacheService: CacheService) { }
diff --git a/src/admin/app/app.component.html b/src/admin/app/app.component.html
index 2673a44aada26324f840717cfe34b7398bbe155a..65b1417c43e1500137cf99c94b1487bf88ceca15 100644
--- a/src/admin/app/app.component.html
+++ b/src/admin/app/app.component.html
@@ -4,7 +4,7 @@
 		<p>shows all cache caches available.</p>
 	</div>
 </div>
-<add-cache (onAdd)="addCache($event)"></add-cache>
+<add-cache [proxyUrl]="config.proxyUrl + config.proxyPath" (onAdd)="addCache($event)"></add-cache>
 <div class="container">
-	<cache *ngFor="let item of caches" [data]="item" (onDelete)="removeCache($event)"></cache>
+	<cache *ngFor="let item of caches" [data]="item" [proxyUrl]="config.proxyUrl + config.proxyPath" (onDelete)="removeCache($event)"></cache>
 </div>
\ No newline at end of file
diff --git a/src/admin/app/app.component.ts b/src/admin/app/app.component.ts
index e5947016804883c7a3d8a13e8f6e1ed5823c1847..8a0826ca4051c34848f1be465aa891bd7e38f338 100644
--- a/src/admin/app/app.component.ts
+++ b/src/admin/app/app.component.ts
@@ -1,5 +1,5 @@
 import { Component, OnInit, enableProdMode } from '@angular/core';
-import { Cache } from './cache';
+import { Cache, Config } from './cache';
 import { CacheService } from './cache.service';
 
 @Component({
@@ -12,6 +12,7 @@ import { CacheService } from './cache.service';
 
 export class AppComponent implements OnInit {
   caches: Cache[];
+  config: Config = new Config();
 
   constructor(private cacheService: CacheService) { }
 
@@ -20,6 +21,10 @@ export class AppComponent implements OnInit {
       this.caches = result;
     })
 
+    this.cacheService.getConfig().then((result) => {
+      this.config = result;
+    })
+
   }
 
   addCache(cache: Cache) {
diff --git a/src/admin/app/cache.component.html b/src/admin/app/cache.component.html
index db7f20b098531c4860c3c0c8bd7acbb0c672e452..9b4ab50156ed136b99a5848c8b24364851f5595e 100644
--- a/src/admin/app/cache.component.html
+++ b/src/admin/app/cache.component.html
@@ -18,7 +18,7 @@
 			</div>
 			<div class="col-md-6">
 				<label>Proxy-Endpoint:</label>
-				<pre>{{data.proxyEndPoint}}</pre>
+				<pre>{{proxyUrl}}{{data.name}}/</pre>
 			</div>
 		</div>
 		<div class="row">
@@ -31,7 +31,7 @@
 		</div>
 		<div class="row">
 			<div class="col-md-12">
-				<cache-details [cache]="data.cache" [proxyEndPoint]="data.proxyEndPoint" [name]="data.name"></cache-details>
+				<cache-details [cache]="data.cache" [proxyEndPoint]="proxyUrl + data.name + '/'" [name]="data.name"></cache-details>
 			</div>
 		</div>
 	</div>
diff --git a/src/admin/app/cache.component.ts b/src/admin/app/cache.component.ts
index 4e46d7087636139dc054c2cb6fe68b5abb789993..93d0b100cac2129c18b22e98b90569bf761ac7a6 100644
--- a/src/admin/app/cache.component.ts
+++ b/src/admin/app/cache.component.ts
@@ -11,6 +11,7 @@ import { Cache } from './cache';
 
 export class CacheComponent {
 	@Input() data: Cache;
+	@Input() proxyUrl: string
 	@Output() onDelete: EventEmitter<string> = new EventEmitter();
 
 	constructor(private cacheService: CacheService, private appComponent: AppComponent) { }
diff --git a/src/admin/app/cache.service.ts b/src/admin/app/cache.service.ts
index 647fda8bbe1003c190c72fb89bfd51170e2066ef..c6408dc2dd8946f98fb97804b7a4a2366d946e40 100644
--- a/src/admin/app/cache.service.ts
+++ b/src/admin/app/cache.service.ts
@@ -1,46 +1,51 @@
 import { Component, Injectable } from '@angular/core';
 import { HttpClient } from '@angular/common/http';
-import { Cache } from './cache';
-import { CacheDetails } from './cache';
+import { CacheDetails, Cache, Config } from './cache';
 
 @Injectable()
 export class CacheService {
 
 	constructor(private http: HttpClient) { }
 
+	getConfig(): Promise<Config> {
+		return new Promise<Config>((resolve, reject) => {
+			this.http.get('api/config').subscribe(resolve.bind(this));
+		});
+	}
+
 	getCaches(): Promise<Cache[]> {
 		return new Promise<Cache[]>((resolve, reject) => {
-			this.http.get('/api/list/cache').subscribe(resolve.bind(this));
+			this.http.get('api/list/cache').subscribe(resolve.bind(this));
 		});
 	}
 
 	addCache(name: string, params: { apiEndPoint: string, cacheOptions: { [key: string]: string } }): Promise<Cache> {
 		return new Promise<Cache>((resolve, reject) => {
-			this.http.post(`/api/add/cache/${name}`, params).subscribe(resolve.bind(this));
+			this.http.post(`api/add/cache/${name}`, params).subscribe(resolve.bind(this));
 		})
 	}
 
 	deleteCache(name: string): Promise<boolean> {
 		return new Promise<boolean>((resolve, reject) => {
-			this.http.get(`/api/delete/cache/${name}`).subscribe(resolve.bind(this));
+			this.http.get(`api/delete/cache/${name}`).subscribe(resolve.bind(this));
 		});
 	}
 
 	flushCache(name: string): Promise<Cache> {
 		return new Promise<Cache>((resolve, reject) => {
-			this.http.get(`/api/flush/cache/${name}`).subscribe(resolve.bind(this));
+			this.http.get(`api/flush/cache/${name}`).subscribe(resolve.bind(this));
 		});
 	}
 
 	deleteValue(name: string, hash: string): Promise<boolean> {
 		return new Promise<boolean>((resolve, reject) => {
-			this.http.get(`/api/delete/cache/${name}/key/${hash}`).subscribe(resolve.bind(this));
+			this.http.get(`api/delete/cache/${name}/key/${hash}`).subscribe(resolve.bind(this));
 		});
 	}
 
 	refreshValue(name: string, hash: string): Promise<CacheDetails> {
 		return new Promise<CacheDetails>((resolve, reject) => {
-			this.http.get(`/api/refresh/cache/${name}/key/${hash}`).subscribe(resolve.bind(this));
+			this.http.get(`api/refresh/cache/${name}/key/${hash}`).subscribe(resolve.bind(this));
 		});
 	}
 }
\ No newline at end of file
diff --git a/src/admin/app/cache.ts b/src/admin/app/cache.ts
index ee6005bad2886fcd7267824372e90a291473a5c4..81bac93f086360331d122711b0c6bdbe37c05b34 100644
--- a/src/admin/app/cache.ts
+++ b/src/admin/app/cache.ts
@@ -33,4 +33,16 @@ export class CacheDetails {
 	uriPath: string;
 	contentType: string;
 	size: number;
+}
+
+export class Config {
+	storagePath: string;
+	proxyPath: string;
+	proxyUrl: string;
+	defaultTtl: number;
+	defaultCheckPeriod: number;
+	defaultArrayValueSize: number;
+	defaultObjectValueSize: number;
+	autosaveInterval: number;
+	registerName: string;
 }
\ No newline at end of file
diff --git a/src/admin/index.html b/src/admin/index.html
index 717f296ca86fc1b6fc34ac794dd243ea68ec9294..c720f7760c385a9f183f4731fb6ce87e3f9e6e49 100644
--- a/src/admin/index.html
+++ b/src/admin/index.html
@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <html>
   <head>
-    <title>Angular Tour of Heroes</title>
+    <title>dacap :: Dynamic And Caching Api Proxy</title>
     <meta name="viewport" content="width=device-width, initial-scale=1">
 
   </head>
diff --git a/src/cache.ts b/src/cache.ts
index e4fe40e258a8f6050035a006ee625a23f951babf..b8c110b19608e5b6b04a9185d39eb674a5527874 100644
--- a/src/cache.ts
+++ b/src/cache.ts
@@ -40,7 +40,6 @@ export interface CacheDetails {
 export interface CacheInfo {
 	name: string,
 	apiEndPoint: string,
-	proxyEndPoint: string,
 	cacheOptions: NodeCache.Options,
 	cacheStats: NodeCache.Stats,
 	cache: CacheDetails[],
@@ -107,17 +106,16 @@ export class Register {
 		delete this.cacheRegister[name];
 	}
 
-	getInfo = (proxyUrl: string, name?: string): CacheInfo|CacheInfo[] => {
-		return (name) ? this._getInfo(proxyUrl, name) : Object.keys(this.cacheRegister).map((key): CacheInfo => {
-			return this._getInfo(proxyUrl, key);
+	getInfo = (name?: string): CacheInfo|CacheInfo[] => {
+		return (name) ? this._getInfo(name) : Object.keys(this.cacheRegister).map((key): CacheInfo => {
+			return this._getInfo(key);
 		});
 	}
 
-	private _getInfo(proxyUrl: string, name: string): CacheInfo {
+	private _getInfo(name: string): CacheInfo {
 		return {
 			name: name,
 			apiEndPoint: this.cacheRegister[name].getEndpoint().toString(),
-			proxyEndPoint: proxyUrl + name + '/',
 			cacheOptions: this.cacheRegister[name].getCache().options,
 			cacheStats: this.cacheRegister[name].getCache().getStats(),
 			cache: <CacheDetails[]>this.cacheRegister[name].getDetails()
diff --git a/src/server.ts b/src/server.ts
index 3717e5d9a51c08eba54a3cc6d3deb62e0301442d..20ffe3960f743174f438a27bd787c64d083b315c 100644
--- a/src/server.ts
+++ b/src/server.ts
@@ -11,23 +11,24 @@ export class Server {
 	private register: cache.Register;
 	private expressApp: express.Application;
 
-	constructor(private storagePath: string,
-		private proxyPath: string,
-		private proxyUrl: string,
-		private defaultTtl: number,
-		private defaultCheckPeriod: number,
-		private defaultArrayValueSize: number,
-		private defaultObjectValueSize: number,
-		private autosaveInterval: number,
-		private registerName: string) {
-
+	constructor(private config: {
+		storagePath: string,
+		proxyPath: string,
+		proxyUrl: string,
+		defaultTtl: number,
+		defaultCheckPeriod: number,
+		defaultArrayValueSize: number,
+		defaultObjectValueSize: number,
+		autosaveInterval: number,
+		registerName: string
+	}) {
 		this._init();
 	}
 
 	private _init() {
-		this.register = new cache.Register(this.storagePath, this.registerName);
+		this.register = new cache.Register(this.config.storagePath, this.config.registerName);
 		this.register.restore();
-		setTimeout(this.register.save, this.autosaveInterval * 1000);
+		setTimeout(this.register.save, this.config.autosaveInterval * 1000);
 
 		this.expressApp = express();
 		this.expressApp.get(/favicon.ico/, (req, res, next) => {
@@ -37,27 +38,31 @@ export class Server {
 		this.expressApp.use(compression());
 		this.expressApp.use(bodyparser.json());
 
-		this.expressApp.post('/api/add/cache/:name', (req, res, next) => {
+		this.expressApp.get('/admin/api/config', (req, res, next) => {
+			return res.json(this.config);
+		});
+
+		this.expressApp.post('/admin/api/add/cache/:name', (req, res, next) => {
 			if (!req.body || !req.body.apiEndPoint) return res.status(400).send(`you need to specify at least an url`);
 			if (this.register.has(req.body.name)) return res.send(`already registered endpoint "${req.params.name}"`);
 			this.register.add(req.params.name, req.body.apiEndPoint, {
-				stdTTL: req.body.cacheOptions.ttl || this.defaultTtl,
-				checkperiod: req.body.cacheOptions.checkPeriod || this.defaultCheckPeriod,
-				objectValueSize: req.body.cacheOptions.objectValueSize || this.defaultObjectValueSize,
-				arrayValueSize: req.body.cacheOptions.arrayValueSize || this.defaultArrayValueSize
+				stdTTL: req.body.cacheOptions.ttl || this.config.defaultTtl,
+				checkperiod: req.body.cacheOptions.checkPeriod || this.config.defaultCheckPeriod,
+				objectValueSize: req.body.cacheOptions.objectValueSize || this.config.defaultObjectValueSize,
+				arrayValueSize: req.body.cacheOptions.arrayValueSize || this.config.defaultArrayValueSize
 			});
-			res.json(this.register.getInfo(this.proxyUrl + this.proxyPath, req.params.name));
+			res.json(this.register.getInfo(req.params.name));
 		});
 
-		this.expressApp.get('/api/list/cache', async (req, res, next) => {
+		this.expressApp.get('/admin/api/list/cache', async (req, res, next) => {
 			try {
-				res.json(this.register.getInfo(this.proxyUrl + this.proxyPath));
+				res.json(this.register.getInfo());
 			} catch (err) {
 				next(err);
 			}
 		});
 
-		this.expressApp.get('/api/delete/cache/:name', (req, res, next) => {
+		this.expressApp.get('/admin/api/delete/cache/:name', (req, res, next) => {
 			try {
 				this.register.delete(req.params.name);
 				res.json({});
@@ -66,17 +71,17 @@ export class Server {
 			}
 		})
 
-		this.expressApp.get('/api/flush/cache/:name', (req, res, next) => {
+		this.expressApp.get('/admin/api/flush/cache/:name', (req, res, next) => {
 			try {
 				const cache = this.register.get(req.params.name)
 				cache.flush();
-				res.json(this.register.getInfo(this.proxyUrl + this.proxyPath, req.params.name));
+				res.json(this.register.getInfo(req.params.name));
 			} catch (err) {
 				next(err);
 			}
 		});
 
-		this.expressApp.get('/api/delete/cache/:name/key/:hash', (req, res, next) => {
+		this.expressApp.get('/admin/api/delete/cache/:name/key/:hash', (req, res, next) => {
 			try {
 				const cache = this.register.get(req.params.name)
 				cache.del(req.params.hash);
@@ -86,7 +91,7 @@ export class Server {
 			}
 		})
 
-		this.expressApp.get('/api/refresh/cache/:name/key/:hash', async (req, res, next) => {
+		this.expressApp.get('/admin/api/refresh/cache/:name/key/:hash', async (req, res, next) => {
 			try {
 				const cache = this.register.get(req.params.name);
 				const value = cache.getCache().get(req.params.hash);
@@ -99,10 +104,10 @@ export class Server {
 
 		this.expressApp.use('/admin/', express.static(path.resolve(__dirname, '..', 'public')));
 
-		this.expressApp.use(this.proxyPath, cache.Middleware(this.register));
+		this.expressApp.use(this.config.proxyPath, cache.Middleware(this.register));
 	}
 
 	listen(port: number, cb) {
-		return this.expressApp.listen(port, cb);
+		this.expressApp.listen(port, cb);
 	}
 }
\ No newline at end of file
diff --git a/test/cache.js b/test/cache.js
new file mode 100644
index 0000000000000000000000000000000000000000..df2f88d10712a084aacd92e6fd2ce0635c59fcb8
--- /dev/null
+++ b/test/cache.js
@@ -0,0 +1,11 @@
+const path = require('path');
+
+const Middleware = require('../dist/cache').Middleware;
+const Register = require('../dist/cache').Register;
+const Cache = require('../dist/cache').Cache;
+
+describe('Middleware', () => {
+	it('should be a function', (done) => {
+		done();
+	});
+})
\ No newline at end of file
diff --git a/test/cache.ts b/test/cache.ts
deleted file mode 100644
index fa1dd33c734f6e9f3036518a7b45e6578fa28b0d..0000000000000000000000000000000000000000
--- a/test/cache.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import {Register, Cache, Middleware} from '../src/cache';
-import * as path from 'path';
-import 'should';
-
-describe('register', () => {
-	it('should create an instance', (done) => {
-		new Register(path.resolve(__dirname, '..', '.tmp'), 'foobar');
-		done();
-	})
-});
-describe('cache', () => {
-	it('should create an instance', (done) => {
-		new Cache();
-		done();
-	});
-})
\ No newline at end of file
diff --git a/tsconfig.json b/tsconfig.json
index e9fe16c950d94d83e5e68a1fb6026ecb0902759a..1d467e6ee29a1edda39a4d753e2d390c7c010bd4 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -1,11 +1,11 @@
 {
 	"compilerOptions": {
-			"module": "commonjs",
-			"target": "es6",
-			"noImplicitAny": false,
-			"outDir": "dist"
+		"module": "commonjs",
+		"target": "es6",
+		"noImplicitAny": false,
+		"outDir": "dist"
 	},
-	"include":[ "src/*"],
+	"include": ["src/*"],
 	"exclude": [
 		"admin"
 	]
diff --git a/webpack.common.js b/webpack.common.js
index 7ff98aa1b874a60847b4205623e242e9f03a76d8..dde605931d752d785b81c1c9e7d48dfc3e0cb444 100644
--- a/webpack.common.js
+++ b/webpack.common.js
@@ -12,7 +12,7 @@ module.exports = {
 	output: {
 		filename: '[name].js',
 		path: __dirname + '/public',
-		publicPath: '/admin/'
+		publicPath: ''
 	},
 
 	resolve: {