diff --git a/api.legacy.js b/api.legacy.js
deleted file mode 100644
index 6c3c99c9b010a120f217706276c29a4d3807abc7..0000000000000000000000000000000000000000
--- a/api.legacy.js
+++ /dev/null
@@ -1,62 +0,0 @@
-const express = require('express')
-const path = require('path')
-const lib = require('./lib.legacy.js')
-
-// Setting
-const dir = 'letters'
-const app = express()
-const PORT = 3000
-
-// CORS Settings
-app.use(function (req, res, next) {
-  res.header('Access-Control-Allow-Origin', '*')
-  res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept')
-  next()
-})
-
-app.get('/api/search', function(req, res) {
-  // Search Endpoint with query parameters
-  // <element attribute="value">content</element>
-  var query = {
-    element: req.query.element,
-    content: req.query.content,
-    attribute: req.query.attribute,
-    value: req.query.value
-  }
-
-  var data = lib.forAllFiles(lib.searchLetters, dir, {query:query})
-  res.send(data)
-})
-
-app.get('/api/features/', function(req, res) {
-  // Feature Search Endpoint with query parameters
-  // <feature category="diakritika" type="akut" subtype="akutstattgravis" ref="26">
-  var query = {
-    category: req.query.category,
-    type: req.query.type,
-    subtype: req.query.subtype
-  }
-
-  var data = lib.forAllFiles(lib.searchFeatures, dir, {query:query})
-  res.send(data)
-})
-
-app.get('/api/letters/:filename?', function (req, res) {
-  // Document Endpoint with optional Document name
-  // Lists either all or one given document
-
-  if (req.params.filename){
-    // Load specified document
-    var filename = req.params.filename + '.xml'
-    res.send(lib.getXMLasJSON(path.join(dir, filename)))
-  } else {
-    // Load all documents
-    var data = lib.forAllFiles(lib.listLetters, dir)
-    res.send(data)
-  }
-})
-
-// Where the magic happens
-app.listen(PORT, function () {
-  console.log('> Listening at http://localhost:' + PORT)
-})
diff --git a/lib.legacy.js b/lib.legacy.js
deleted file mode 100644
index 827e7a2f9e0c200a4cedb4d25473357411c631ec..0000000000000000000000000000000000000000
--- a/lib.legacy.js
+++ /dev/null
@@ -1,253 +0,0 @@
-const fs = require('fs')
-const path = require('path')
-const convert = require('xml-js')
-const flat = require('flat')
-const flatten = require('flatten')
-const dir = 'letters'
-
-function findKeyRecursive(object, keytofind, ret = []) {
-  /*
-   * Finds all keys in a nested object and returns them as an array
-   */
-  var value
-  Object.keys(object).forEach(function(key) {
-    if (key === keytofind) {
-      ret.push(object[key])
-      return true
-    }
-    if (object[key] && typeof object[key] === 'object') {
-      value = findKeyRecursive(object[key], keytofind, ret)
-      return value !== undefined
-    }
-    else {
-      return true
-    }
-  })
-  return flatten(ret)
-}
-
-function searchInFeatures(features, query) {
-  /*
-   * Searches for a query in an array of features
-   * Attributes must be in _attributes
-   */
-
-  var results = []
-  var reCat = new RegExp(query.category)
-  var reType = new RegExp(query.type)
-  var reSub = new RegExp(query.subtype)
-
-  for(var idx = 0; idx < features.length; idx++){
-    var match_category = reCat.test(features[idx]._attributes.category)
-    var match_type = reType.test(features[idx]._attributes.type)
-    var match_subtype = reSub.test(features[idx]._attributes.subtype)
-
-    if (match_category && match_type && match_subtype) {
-      results.push(features[idx])
-    }
-  }
-  return results
-}
-
-function transformFilename (filename, url = false) {
-  /*
-   * Transforms a full filepath:
-   * from example_1.xml to example 1
-   * URL: from example_1.xml to example_1
-   */
-  filename = filename.slice(0, -4)
-
-  if (!url) {
-    filename = filename.replace(/_/g, ' ')
-  }
-
-  return filename
-}
-
-function searchInObject (obj, query) {
-  /*
-   * Search for query in a fiven flatobject
-   */
-  var results = []
-
-  Object.keys(obj).forEach(function (key) {
-
-    // Attributes
-    if (typeof query.attribute !== "undefined"){
-      var re_attr = new RegExp('_attributes.' + query.attribute)
-      if (!re_attr.test(key)){
-        return
-      }
-    }
-    // Values
-    if (typeof query.value !== "undefined"){
-      var re_valu = new RegExp(query.value)
-      if (!re_valu.test(obj[key])){
-        return
-      }
-    }
-    // Elements
-    if (typeof query.element !== "undefined"){
-      var re_elem = new RegExp('[^_]' + query.element, 'g')
-      if (!re_elem.test(key)){
-        return
-      }
-    }
-    // Content
-    if (typeof query.content !== "undefined"){
-      var re_cont = new RegExp(query.content)
-      if (!re_cont.test(obj[key])){
-        return
-      }
-    }
-
-    // Add hit to results as object
-    res = {}
-    res[key] = obj[key]
-    results.push(res)
-  })
-
-  return results
-}
-
-function getXMLasJSON (filepath) {
-  /*
-   * TODO: This is duplicate Code. Needs to go
-   * TODO: Maybe check if XML is valid?
-   * Reads XML file and transforms it to JSON
-   */
-  var data = {}
-  try {
-    var xml = fs.readFileSync(filepath, 'utf8')
-    data = convert.xml2js(xml, {compact: true})
-  } catch (err) {
-    console.log('Error while loading ' + filepath)
-    console.log(err)
-    return data
-  }
-  return data
-}
-
-function countReferences (features) {
-  /*
-   * Count the references in a feature
-   */
-  var count = 0
-  for (idx = 0; idx < features.length; idx++) {
-    count = count + features[idx]._attributes.ref.trim().split(" ").length
-  }
-
-  return count
-}
-
-module.exports = {
-  getXMLasJSON: function (filepath) {
-    /*
-     * Reads XML file and transforms it to JSON
-     */
-    var data = {}
-    try {
-      var xml = fs.readFileSync(filepath, 'utf8')
-      data = convert.xml2js(xml, {compact: true})
-    } catch (err) {
-      console.log('Error while loading ' + filepath)
-      console.log(err)
-      return data
-    }
-    return data
-  },
-
-  listLetters:function (file, params) {
-    /*
-     * Callback function
-     * Transforms a given parsed XML file into the list view
-     */
-    return  {
-      link: '/letters/' + file.slice(0, -4),
-      name: transformFilename(file),
-      filepath: path.join(dir, file),
-      url: '/api/letters/' + transformFilename(file, true)
-    }
-  },
-  searchFeatures: function(file, params) {
-    /*
-     * Callback function
-     * Search for features in file
-     */
-    var query = params.query
-    var result = undefined
-    var letterJS = getXMLasJSON(path.join(dir, file))
-    var features = findKeyRecursive(letterJS, 'feature')
-
-    if (typeof query.category == "undefined"){ query.category = '.*' }
-    if (typeof query.type == "undefined"){ query.type = '.*' }
-    if (typeof query.subtype == "undefined"){ query.subtype = '.*' }
-
-    var res = searchInFeatures(features, query)
-    var count = countReferences(res)
-
-    if(res.length > 0) {
-      result = {
-        collection: letterJS.TEI.teiHeader.fileDesc.titleStmt.collection._text,
-        count: count,
-        name: transformFilename(file),
-        link: '/letters/' + file.slice(0, -4),
-        url: '/api/letters/' + transformFilename(file, true),
-        results: res
-      }
-    }
-    return result
-
-  },
-  searchLetters: function(file, params){
-    /*
-     * Callback function
-     * Search for query in file
-     */
-    var query = params.query
-    var result = undefined
-    var letterJS = getXMLasJSON(path.join(dir, file))
-    var flatobject = flat(letterJS.TEI)
-    var res = searchInObject(flatobject, query)
-
-    if(res.length > 0) {
-      result = {
-        collection: letterJS.TEI.teiHeader.fileDesc.titleStmt.collection._text,
-        name: transformFilename(file),
-        link: '/letters/' + file.slice(0, -4),
-        url: '/api/letters/' + transformFilename(file, true),
-        results: res
-      }
-    }
-    return result
-  },
-
-  forAllFiles: function (callback, filepath, params={}) {
-    /*
-     * Load files from filepath and perform callback on each with given parameters
-     */
-    var ret = []
-
-    try {
-      var files = fs.readdirSync(filepath)
-    } catch (err) {
-      console.log('> Error while loading files from ' + filepath)
-      console.log(err)
-      return []
-    }
-
-    for (var i in files) {
-      // We just want the XML documents
-      if (!files[i].endsWith('.xml')) {
-        continue
-      }
-
-      // Call callback function on each file
-      var val = callback(files[i], params)
-      if (typeof val !== "undefined"){
-        ret.push(val)
-      }
-    }
-    return ret
-  }
-}