From b024c45266342a816c86f66db8cf805b7b8667a9 Mon Sep 17 00:00:00 2001
From: Eike Cochu <eike@cochu.com>
Date: Mon, 1 Feb 2016 00:06:33 +0100
Subject: [PATCH] updating to using angular

removed generic de-/serializer
removed jsonwrap annotations
removed patch method interface
removed apimediatype, replaced by application-json
removed apiversion
replaced ui project by angular stub project
added gulp and deps to build ui project
---
 ma-impl.sublime-workspace                     | 172 ++++++++++++------
 .../main/java/de/vipra/rest/APIMediaType.java |   9 -
 .../main/java/de/vipra/rest/Application.java  |   2 -
 .../src/main/java/de/vipra/rest/PATCH.java    |  17 --
 .../java/de/vipra/rest/model/APIVersion.java  |   7 -
 .../java/de/vipra/rest/model/Wrapper.java     |   5 -
 .../vipra/rest/provider/APIRequestFilter.java |  42 -----
 .../rest/provider/ObjectMapperProvider.java   |  17 --
 .../vipra/rest/resource/ArticleResource.java  |  17 +-
 .../vipra/rest/resource/ImportResource.java   |  12 +-
 .../de/vipra/rest/resource/TopicResource.java |  12 +-
 .../de/vipra/rest/resource/WordResource.java  |   8 +-
 .../rest/serializer/GenericDeserializer.java  | 110 -----------
 .../rest/serializer/GenericSerializer.java    |  98 ----------
 vipra-ui/.bowerrc                             |   4 -
 vipra-ui/.classpath                           |  11 --
 vipra-ui/.editorconfig                        |  34 ----
 vipra-ui/.ember-cli                           |   9 -
 vipra-ui/.gitignore                           |  19 +-
 vipra-ui/.jshintrc                            |  32 ----
 vipra-ui/.project                             |  36 ----
 vipra-ui/.settings/.jsdtscope                 |  12 --
 vipra-ui/.settings/org.eclipse.jdt.core.prefs |   7 -
 .../org.eclipse.wst.common.component          |   8 -
 ....eclipse.wst.common.project.facet.core.xml |   9 -
 ...rg.eclipse.wst.jsdt.ui.superType.container |   1 -
 .../org.eclipse.wst.jsdt.ui.superType.name    |   1 -
 .../org.eclipse.wst.validation.prefs          |  12 --
 vipra-ui/.travis.yml                          |  23 ---
 vipra-ui/.watchmanconfig                      |   3 -
 vipra-ui/README.md                            |  27 ---
 vipra-ui/app/adapters/application.js          |  17 --
 vipra-ui/app/app.js                           |  18 --
 vipra-ui/app/components/.gitkeep              |   0
 vipra-ui/app/components/debounced-input.js    |  19 --
 .../app/components/dynamic-high-charts.js     |  14 --
 vipra-ui/app/components/items-list.js         |  17 --
 vipra-ui/app/components/pagination-bar.js     |  65 -------
 vipra-ui/app/components/scroll-top.js         |  17 --
 vipra-ui/app/components/text-marker.js        |  18 --
 vipra-ui/app/components/topic-link.js         |  12 --
 vipra-ui/app/controllers/.gitkeep             |   0
 vipra-ui/app/controllers/articles/index.js    |   8 -
 vipra-ui/app/controllers/index.js             |  16 --
 vipra-ui/app/controllers/topics/index.js      |   6 -
 vipra-ui/app/controllers/words/index.js       |   6 -
 vipra-ui/app/helpers/.gitkeep                 |   0
 vipra-ui/app/helpers/is-empty.js              |  12 --
 vipra-ui/app/helpers/pluralize.js             |  10 -
 vipra-ui/app/helpers/topic-share.js           |   7 -
 vipra-ui/app/index.html                       |  44 -----
 vipra-ui/app/models/.gitkeep                  |   0
 vipra-ui/app/models/article.js                |  17 --
 vipra-ui/app/models/import.js                 |  12 --
 vipra-ui/app/models/search.js                 |  17 --
 vipra-ui/app/models/topic.js                  |  14 --
 vipra-ui/app/models/word.js                   |   7 -
 vipra-ui/app/router.js                        |  26 ---
 vipra-ui/app/routes/.gitkeep                  |   0
 vipra-ui/app/routes/articles/index.js         |  87 ---------
 vipra-ui/app/routes/articles/show.js          |  29 ---
 vipra-ui/app/routes/index.js                  |  13 --
 vipra-ui/app/routes/not-found.js              |   4 -
 vipra-ui/app/routes/topics/index.js           |  37 ----
 vipra-ui/app/routes/topics/show.js            |   9 -
 vipra-ui/app/routes/topics/show/edit.js       |  10 -
 vipra-ui/app/routes/words/index.js            |  38 ----
 vipra-ui/app/routes/words/show.js             |   9 -
 vipra-ui/app/styles/app.scss                  |  62 -------
 vipra-ui/app/styles/sticky-footer.scss        |  19 --
 vipra-ui/app/templates/application.hbs        |  35 ----
 vipra-ui/app/templates/articles.hbs           |   1 -
 vipra-ui/app/templates/articles/index.hbs     |  10 -
 vipra-ui/app/templates/articles/show.hbs      |  39 ----
 vipra-ui/app/templates/components/.gitkeep    |   0
 .../templates/components/debounced-input.hbs  |   1 -
 .../components/dynamic-high-charts.hbs        |   1 -
 .../app/templates/components/items-list.hbs   |   5 -
 .../templates/components/pagination-bar.hbs   |  45 -----
 .../app/templates/components/scroll-top.hbs   |   5 -
 .../app/templates/components/text-marker.hbs  |   1 -
 .../app/templates/components/topic-link.hbs   |   1 -
 vipra-ui/app/templates/index.hbs              |  55 ------
 vipra-ui/app/templates/loading.hbs            |   4 -
 vipra-ui/app/templates/not-found.hbs          |   3 -
 vipra-ui/app/templates/topics.hbs             |   1 -
 vipra-ui/app/templates/topics/index.hbs       |   8 -
 vipra-ui/app/templates/topics/show/edit.hbs   |   9 -
 vipra-ui/app/templates/topics/show/index.hbs  |  18 --
 vipra-ui/app/templates/words.hbs              |   1 -
 vipra-ui/app/templates/words/index.hbs        |  12 --
 vipra-ui/app/templates/words/show.hbs         |   1 -
 vipra-ui/bower.json                           |  34 ++--
 vipra-ui/config/environment.js                |  47 -----
 vipra-ui/css/main.less                        |   3 +
 vipra-ui/ember-cli-build.js                   |  26 ---
 vipra-ui/gulpfile.js                          |  27 +++
 vipra-ui/html/index.html                      |   1 +
 vipra-ui/index.html                           |  26 +++
 vipra-ui/js/app.js                            |  18 ++
 vipra-ui/js/controllers.js                    |   5 +
 vipra-ui/js/directives.js                     |   1 +
 vipra-ui/js/services.js                       |   1 +
 vipra-ui/package.json                         |  44 +----
 vipra-ui/public/android-chrome-144x144.png    | Bin 7703 -> 0 bytes
 vipra-ui/public/android-chrome-192x192.png    | Bin 10711 -> 0 bytes
 vipra-ui/public/android-chrome-36x36.png      | Bin 1410 -> 0 bytes
 vipra-ui/public/android-chrome-48x48.png      | Bin 1942 -> 0 bytes
 vipra-ui/public/android-chrome-72x72.png      | Bin 2999 -> 0 bytes
 vipra-ui/public/android-chrome-96x96.png      | Bin 4704 -> 0 bytes
 vipra-ui/public/apple-touch-icon-114x114.png  | Bin 1818 -> 0 bytes
 vipra-ui/public/apple-touch-icon-120x120.png  | Bin 1895 -> 0 bytes
 vipra-ui/public/apple-touch-icon-144x144.png  | Bin 2304 -> 0 bytes
 vipra-ui/public/apple-touch-icon-152x152.png  | Bin 2362 -> 0 bytes
 vipra-ui/public/apple-touch-icon-180x180.png  | Bin 2826 -> 0 bytes
 vipra-ui/public/apple-touch-icon-57x57.png    | Bin 989 -> 0 bytes
 vipra-ui/public/apple-touch-icon-60x60.png    | Bin 1025 -> 0 bytes
 vipra-ui/public/apple-touch-icon-72x72.png    | Bin 1189 -> 0 bytes
 vipra-ui/public/apple-touch-icon-76x76.png    | Bin 1227 -> 0 bytes
 .../public/apple-touch-icon-precomposed.png   | Bin 4249 -> 0 bytes
 vipra-ui/public/apple-touch-icon.png          | Bin 2826 -> 0 bytes
 vipra-ui/public/assets/images/squares.gif     | Bin 27920 -> 0 bytes
 vipra-ui/public/browserconfig.xml             |  12 --
 vipra-ui/public/crossdomain.xml               |  15 --
 vipra-ui/public/favicon-16x16.png             | Bin 673 -> 0 bytes
 vipra-ui/public/favicon-194x194.png           | Bin 7280 -> 0 bytes
 vipra-ui/public/favicon-32x32.png             | Bin 1124 -> 0 bytes
 vipra-ui/public/favicon-96x96.png             | Bin 3394 -> 0 bytes
 vipra-ui/public/favicon.ico                   | Bin 15086 -> 0 bytes
 vipra-ui/public/manifest.json                 |  41 -----
 vipra-ui/public/mstile-144x144.png            | Bin 4665 -> 0 bytes
 vipra-ui/public/mstile-150x150.png            | Bin 4592 -> 0 bytes
 vipra-ui/public/mstile-310x150.png            | Bin 4923 -> 0 bytes
 vipra-ui/public/mstile-310x310.png            | Bin 10210 -> 0 bytes
 vipra-ui/public/mstile-70x70.png              | Bin 3220 -> 0 bytes
 vipra-ui/public/robots.txt                    |   3 -
 vipra-ui/public/safari-pinned-tab.svg         |  36 ----
 vipra-ui/testem.json                          |  12 --
 vipra-ui/tests/.jshintrc                      |  52 ------
 vipra-ui/tests/helpers/destroy-app.js         |   5 -
 .../tests/helpers/module-for-acceptance.js    |  23 ---
 vipra-ui/tests/helpers/resolver.js            |  11 --
 vipra-ui/tests/helpers/start-app.js           |  18 --
 vipra-ui/tests/index.html                     |  34 ----
 vipra-ui/tests/integration/.gitkeep           |   0
 .../components/debounced-input-test.js        |  25 ---
 .../components/dynamic-high-charts-test.js    |  25 ---
 .../integration/components/item-list-test.js  |  25 ---
 .../components/pagination-bar-test.js         |  25 ---
 .../integration/components/scroll-top-test.js |  25 ---
 .../components/text-marker-test.js            |  25 ---
 .../integration/components/topic-link-test.js |  25 ---
 vipra-ui/tests/test-helper.js                 |   6 -
 vipra-ui/tests/unit/.gitkeep                  |   0
 .../tests/unit/adapters/application-test.js   |  12 --
 .../tests/unit/controllers/articles-test.js   |  12 --
 vipra-ui/tests/unit/controllers/words-test.js |  12 --
 vipra-ui/tests/unit/helpers/is-empty-test.js  |  10 -
 vipra-ui/tests/unit/helpers/pluralize-test.js |  10 -
 .../tests/unit/helpers/topic-share-test.js    |  10 -
 vipra-ui/tests/unit/models/article-test.js    |  12 --
 vipra-ui/tests/unit/models/import-test.js     |  12 --
 vipra-ui/tests/unit/models/topic-test.js      |  12 --
 vipra-ui/tests/unit/routes/article-test.js    |  11 --
 vipra-ui/tests/unit/routes/index-test.js      |  11 --
 vipra-ui/tests/unit/routes/not-found-test.js  |  11 --
 vipra-ui/tests/unit/routes/topics-test.js     |  11 --
 vipra-ui/tests/unit/routes/words-test.js      |  11 --
 vipra-ui/vendor/.gitkeep                      |   0
 vipra-ui/webapp/WEB-INF/web.xml               |   8 -
 .../main/java/de/vipra/util/an/JsonType.java  |  14 --
 .../main/java/de/vipra/util/an/JsonWrap.java  |  14 --
 .../java/de/vipra/util/model/Article.java     |   3 -
 .../java/de/vipra/util/model/ArticleFull.java |  11 --
 .../main/java/de/vipra/util/model/Import.java |  11 --
 .../main/java/de/vipra/util/model/Topic.java  |   2 -
 .../java/de/vipra/util/model/TopicFull.java   |   8 -
 .../main/java/de/vipra/util/model/Word.java   |   4 -
 178 files changed, 255 insertions(+), 2401 deletions(-)
 delete mode 100644 vipra-rest/src/main/java/de/vipra/rest/APIMediaType.java
 delete mode 100644 vipra-rest/src/main/java/de/vipra/rest/PATCH.java
 delete mode 100644 vipra-rest/src/main/java/de/vipra/rest/model/APIVersion.java
 delete mode 100644 vipra-rest/src/main/java/de/vipra/rest/provider/APIRequestFilter.java
 delete mode 100644 vipra-rest/src/main/java/de/vipra/rest/serializer/GenericDeserializer.java
 delete mode 100644 vipra-rest/src/main/java/de/vipra/rest/serializer/GenericSerializer.java
 delete mode 100644 vipra-ui/.bowerrc
 delete mode 100644 vipra-ui/.classpath
 delete mode 100644 vipra-ui/.editorconfig
 delete mode 100644 vipra-ui/.ember-cli
 delete mode 100644 vipra-ui/.jshintrc
 delete mode 100644 vipra-ui/.project
 delete mode 100644 vipra-ui/.settings/.jsdtscope
 delete mode 100644 vipra-ui/.settings/org.eclipse.jdt.core.prefs
 delete mode 100644 vipra-ui/.settings/org.eclipse.wst.common.component
 delete mode 100644 vipra-ui/.settings/org.eclipse.wst.common.project.facet.core.xml
 delete mode 100644 vipra-ui/.settings/org.eclipse.wst.jsdt.ui.superType.container
 delete mode 100644 vipra-ui/.settings/org.eclipse.wst.jsdt.ui.superType.name
 delete mode 100644 vipra-ui/.settings/org.eclipse.wst.validation.prefs
 delete mode 100644 vipra-ui/.travis.yml
 delete mode 100644 vipra-ui/.watchmanconfig
 delete mode 100644 vipra-ui/README.md
 delete mode 100644 vipra-ui/app/adapters/application.js
 delete mode 100644 vipra-ui/app/app.js
 delete mode 100644 vipra-ui/app/components/.gitkeep
 delete mode 100644 vipra-ui/app/components/debounced-input.js
 delete mode 100644 vipra-ui/app/components/dynamic-high-charts.js
 delete mode 100644 vipra-ui/app/components/items-list.js
 delete mode 100644 vipra-ui/app/components/pagination-bar.js
 delete mode 100644 vipra-ui/app/components/scroll-top.js
 delete mode 100644 vipra-ui/app/components/text-marker.js
 delete mode 100644 vipra-ui/app/components/topic-link.js
 delete mode 100644 vipra-ui/app/controllers/.gitkeep
 delete mode 100644 vipra-ui/app/controllers/articles/index.js
 delete mode 100644 vipra-ui/app/controllers/index.js
 delete mode 100644 vipra-ui/app/controllers/topics/index.js
 delete mode 100644 vipra-ui/app/controllers/words/index.js
 delete mode 100644 vipra-ui/app/helpers/.gitkeep
 delete mode 100644 vipra-ui/app/helpers/is-empty.js
 delete mode 100644 vipra-ui/app/helpers/pluralize.js
 delete mode 100644 vipra-ui/app/helpers/topic-share.js
 delete mode 100644 vipra-ui/app/index.html
 delete mode 100644 vipra-ui/app/models/.gitkeep
 delete mode 100644 vipra-ui/app/models/article.js
 delete mode 100644 vipra-ui/app/models/import.js
 delete mode 100644 vipra-ui/app/models/search.js
 delete mode 100644 vipra-ui/app/models/topic.js
 delete mode 100644 vipra-ui/app/models/word.js
 delete mode 100644 vipra-ui/app/router.js
 delete mode 100644 vipra-ui/app/routes/.gitkeep
 delete mode 100644 vipra-ui/app/routes/articles/index.js
 delete mode 100644 vipra-ui/app/routes/articles/show.js
 delete mode 100644 vipra-ui/app/routes/index.js
 delete mode 100644 vipra-ui/app/routes/not-found.js
 delete mode 100644 vipra-ui/app/routes/topics/index.js
 delete mode 100644 vipra-ui/app/routes/topics/show.js
 delete mode 100644 vipra-ui/app/routes/topics/show/edit.js
 delete mode 100644 vipra-ui/app/routes/words/index.js
 delete mode 100644 vipra-ui/app/routes/words/show.js
 delete mode 100644 vipra-ui/app/styles/app.scss
 delete mode 100644 vipra-ui/app/styles/sticky-footer.scss
 delete mode 100644 vipra-ui/app/templates/application.hbs
 delete mode 100644 vipra-ui/app/templates/articles.hbs
 delete mode 100644 vipra-ui/app/templates/articles/index.hbs
 delete mode 100644 vipra-ui/app/templates/articles/show.hbs
 delete mode 100644 vipra-ui/app/templates/components/.gitkeep
 delete mode 100644 vipra-ui/app/templates/components/debounced-input.hbs
 delete mode 100644 vipra-ui/app/templates/components/dynamic-high-charts.hbs
 delete mode 100644 vipra-ui/app/templates/components/items-list.hbs
 delete mode 100644 vipra-ui/app/templates/components/pagination-bar.hbs
 delete mode 100644 vipra-ui/app/templates/components/scroll-top.hbs
 delete mode 100644 vipra-ui/app/templates/components/text-marker.hbs
 delete mode 100644 vipra-ui/app/templates/components/topic-link.hbs
 delete mode 100644 vipra-ui/app/templates/index.hbs
 delete mode 100644 vipra-ui/app/templates/loading.hbs
 delete mode 100644 vipra-ui/app/templates/not-found.hbs
 delete mode 100644 vipra-ui/app/templates/topics.hbs
 delete mode 100644 vipra-ui/app/templates/topics/index.hbs
 delete mode 100644 vipra-ui/app/templates/topics/show/edit.hbs
 delete mode 100644 vipra-ui/app/templates/topics/show/index.hbs
 delete mode 100644 vipra-ui/app/templates/words.hbs
 delete mode 100644 vipra-ui/app/templates/words/index.hbs
 delete mode 100644 vipra-ui/app/templates/words/show.hbs
 delete mode 100644 vipra-ui/config/environment.js
 create mode 100644 vipra-ui/css/main.less
 delete mode 100644 vipra-ui/ember-cli-build.js
 create mode 100644 vipra-ui/gulpfile.js
 create mode 100644 vipra-ui/html/index.html
 create mode 100644 vipra-ui/index.html
 create mode 100644 vipra-ui/js/app.js
 create mode 100644 vipra-ui/js/controllers.js
 create mode 100644 vipra-ui/js/directives.js
 create mode 100644 vipra-ui/js/services.js
 delete mode 100644 vipra-ui/public/android-chrome-144x144.png
 delete mode 100644 vipra-ui/public/android-chrome-192x192.png
 delete mode 100644 vipra-ui/public/android-chrome-36x36.png
 delete mode 100644 vipra-ui/public/android-chrome-48x48.png
 delete mode 100644 vipra-ui/public/android-chrome-72x72.png
 delete mode 100644 vipra-ui/public/android-chrome-96x96.png
 delete mode 100644 vipra-ui/public/apple-touch-icon-114x114.png
 delete mode 100644 vipra-ui/public/apple-touch-icon-120x120.png
 delete mode 100644 vipra-ui/public/apple-touch-icon-144x144.png
 delete mode 100644 vipra-ui/public/apple-touch-icon-152x152.png
 delete mode 100644 vipra-ui/public/apple-touch-icon-180x180.png
 delete mode 100644 vipra-ui/public/apple-touch-icon-57x57.png
 delete mode 100644 vipra-ui/public/apple-touch-icon-60x60.png
 delete mode 100644 vipra-ui/public/apple-touch-icon-72x72.png
 delete mode 100644 vipra-ui/public/apple-touch-icon-76x76.png
 delete mode 100644 vipra-ui/public/apple-touch-icon-precomposed.png
 delete mode 100644 vipra-ui/public/apple-touch-icon.png
 delete mode 100644 vipra-ui/public/assets/images/squares.gif
 delete mode 100644 vipra-ui/public/browserconfig.xml
 delete mode 100644 vipra-ui/public/crossdomain.xml
 delete mode 100644 vipra-ui/public/favicon-16x16.png
 delete mode 100644 vipra-ui/public/favicon-194x194.png
 delete mode 100644 vipra-ui/public/favicon-32x32.png
 delete mode 100644 vipra-ui/public/favicon-96x96.png
 delete mode 100644 vipra-ui/public/favicon.ico
 delete mode 100644 vipra-ui/public/manifest.json
 delete mode 100644 vipra-ui/public/mstile-144x144.png
 delete mode 100644 vipra-ui/public/mstile-150x150.png
 delete mode 100644 vipra-ui/public/mstile-310x150.png
 delete mode 100644 vipra-ui/public/mstile-310x310.png
 delete mode 100644 vipra-ui/public/mstile-70x70.png
 delete mode 100644 vipra-ui/public/robots.txt
 delete mode 100644 vipra-ui/public/safari-pinned-tab.svg
 delete mode 100644 vipra-ui/testem.json
 delete mode 100644 vipra-ui/tests/.jshintrc
 delete mode 100644 vipra-ui/tests/helpers/destroy-app.js
 delete mode 100644 vipra-ui/tests/helpers/module-for-acceptance.js
 delete mode 100644 vipra-ui/tests/helpers/resolver.js
 delete mode 100644 vipra-ui/tests/helpers/start-app.js
 delete mode 100644 vipra-ui/tests/index.html
 delete mode 100644 vipra-ui/tests/integration/.gitkeep
 delete mode 100644 vipra-ui/tests/integration/components/debounced-input-test.js
 delete mode 100644 vipra-ui/tests/integration/components/dynamic-high-charts-test.js
 delete mode 100644 vipra-ui/tests/integration/components/item-list-test.js
 delete mode 100644 vipra-ui/tests/integration/components/pagination-bar-test.js
 delete mode 100644 vipra-ui/tests/integration/components/scroll-top-test.js
 delete mode 100644 vipra-ui/tests/integration/components/text-marker-test.js
 delete mode 100644 vipra-ui/tests/integration/components/topic-link-test.js
 delete mode 100644 vipra-ui/tests/test-helper.js
 delete mode 100644 vipra-ui/tests/unit/.gitkeep
 delete mode 100644 vipra-ui/tests/unit/adapters/application-test.js
 delete mode 100644 vipra-ui/tests/unit/controllers/articles-test.js
 delete mode 100644 vipra-ui/tests/unit/controllers/words-test.js
 delete mode 100644 vipra-ui/tests/unit/helpers/is-empty-test.js
 delete mode 100644 vipra-ui/tests/unit/helpers/pluralize-test.js
 delete mode 100644 vipra-ui/tests/unit/helpers/topic-share-test.js
 delete mode 100644 vipra-ui/tests/unit/models/article-test.js
 delete mode 100644 vipra-ui/tests/unit/models/import-test.js
 delete mode 100644 vipra-ui/tests/unit/models/topic-test.js
 delete mode 100644 vipra-ui/tests/unit/routes/article-test.js
 delete mode 100644 vipra-ui/tests/unit/routes/index-test.js
 delete mode 100644 vipra-ui/tests/unit/routes/not-found-test.js
 delete mode 100644 vipra-ui/tests/unit/routes/topics-test.js
 delete mode 100644 vipra-ui/tests/unit/routes/words-test.js
 delete mode 100644 vipra-ui/vendor/.gitkeep
 delete mode 100644 vipra-ui/webapp/WEB-INF/web.xml
 delete mode 100644 vipra-util/src/main/java/de/vipra/util/an/JsonType.java
 delete mode 100644 vipra-util/src/main/java/de/vipra/util/an/JsonWrap.java

diff --git a/ma-impl.sublime-workspace b/ma-impl.sublime-workspace
index e7e2fa38..7c5b9bb1 100644
--- a/ma-impl.sublime-workspace
+++ b/ma-impl.sublime-workspace
@@ -280,26 +280,42 @@
 	"buffers":
 	[
 		{
-			"file": "vipra-ui/app/templates/index.hbs",
+			"file": "vipra-ui/index.html",
 			"settings":
 			{
-				"buffer_size": 1530,
+				"buffer_size": 1013,
 				"line_ending": "Unix"
 			}
 		},
 		{
-			"file": "vipra-ui/app/styles/app.scss",
+			"file": "vipra-ui/js/app.js",
 			"settings":
 			{
-				"buffer_size": 914,
+				"buffer_size": 326,
 				"line_ending": "Unix"
 			}
 		},
 		{
-			"file": "vipra-ui/app/adapters/application.js",
+			"file": "vipra-ui/js/controllers.js",
 			"settings":
 			{
-				"buffer_size": 506,
+				"buffer_size": 102,
+				"line_ending": "Unix"
+			}
+		},
+		{
+			"file": "vipra-ui/js/directives.js",
+			"settings":
+			{
+				"buffer_size": 49,
+				"line_ending": "Unix"
+			}
+		},
+		{
+			"file": "vipra-ui/js/services.js",
+			"settings":
+			{
+				"buffer_size": 47,
 				"line_ending": "Unix"
 			}
 		}
@@ -483,25 +499,25 @@
 	[
 		"/home/eike/repos/master/ma-impl",
 		"/home/eike/repos/master/ma-impl/vipra-ui",
-		"/home/eike/repos/master/ma-impl/vipra-ui/app",
-		"/home/eike/repos/master/ma-impl/vipra-ui/app/adapters",
-		"/home/eike/repos/master/ma-impl/vipra-ui/app/components",
-		"/home/eike/repos/master/ma-impl/vipra-ui/app/controllers/articles",
-		"/home/eike/repos/master/ma-impl/vipra-ui/app/controllers/topics",
-		"/home/eike/repos/master/ma-impl/vipra-ui/app/controllers/words",
-		"/home/eike/repos/master/ma-impl/vipra-ui/app/models",
-		"/home/eike/repos/master/ma-impl/vipra-ui/app/routes",
-		"/home/eike/repos/master/ma-impl/vipra-ui/app/routes/articles",
-		"/home/eike/repos/master/ma-impl/vipra-ui/app/routes/topics",
-		"/home/eike/repos/master/ma-impl/vipra-ui/app/routes/words",
-		"/home/eike/repos/master/ma-impl/vipra-ui/app/styles",
-		"/home/eike/repos/master/ma-impl/vipra-ui/app/templates",
-		"/home/eike/repos/master/ma-impl/vipra-ui/app/templates/articles",
-		"/home/eike/repos/master/ma-impl/vipra-ui/app/templates/components",
-		"/home/eike/repos/master/ma-impl/vipra-ui/app/templates/words"
+		"/home/eike/repos/master/ma-impl/vipra-ui/bower_components/angular",
+		"/home/eike/repos/master/ma-impl/vipra-ui/bower_components/angular-resource",
+		"/home/eike/repos/master/ma-impl/vipra-ui/bower_components/angular-ui-router",
+		"/home/eike/repos/master/ma-impl/vipra-ui/bower_components/angular-ui-router/release",
+		"/home/eike/repos/master/ma-impl/vipra-ui/bower_components/bootstrap/dist/js",
+		"/home/eike/repos/master/ma-impl/vipra-ui/bower_components/jquery/dist",
+		"/home/eike/repos/master/ma-impl/vipra-ui/html",
+		"/home/eike/repos/master/ma-impl/vipra-ui/js"
 	],
 	"file_history":
 	[
+		"/home/eike/repos/master/ma-impl/vipra-ui/html/index.html",
+		"/home/eike/repos/master/ma-impl/vipra-ui/css/main.less",
+		"/home/eike/repos/master/ma-impl/vipra-ui/gulpfile.js",
+		"/home/eike/repos/master/ma-impl/vipra-ui/index.html",
+		"/home/eike/.config/sublime-text-3/Packages/User/Preferences.sublime-settings",
+		"/home/eike/repos/master/ma-impl/vipra-ui/app/adapters/application.js",
+		"/home/eike/repos/master/ma-impl/vipra-ui/app/styles/app.scss",
+		"/home/eike/repos/master/ma-impl/vipra-ui/app/templates/index.hbs",
 		"/home/eike/repos/master/ma-impl/vipra-ui/app/models/search.js",
 		"/home/eike/repos/master/ma-impl/vipra-ui/app/controllers/index.js",
 		"/home/eike/repos/master/ma-impl/vipra-ui/app/routes/index.js",
@@ -512,7 +528,6 @@
 		"/home/eike/repos/master/ma-impl/vipra-ui/app/routes/words/index.js",
 		"/home/eike/repos/master/ma-impl/vipra-ui/app/controllers/words/index.js",
 		"/home/eike/repos/master/ma-impl/vipra-ui/app/routes/articles/index.js",
-		"/home/eike/repos/master/ma-impl/vipra-ui/app/templates/index.hbs",
 		"/home/eike/repos/master/ma-impl/vipra-ui/app/models/word.js",
 		"/home/eike/Downloads/files.txt",
 		"/home/eike/repos/master/ma-impl/vipra-ui/app/components/pagination-bar.js",
@@ -525,8 +540,6 @@
 		"/home/eike/repos/master/ma-impl/vipra-ui/app/templates/words/index.hbs",
 		"/home/eike/repos/master/ma-impl/vipra-ui/app/templates/components/pagination-bar.hbs",
 		"/home/eike/repos/master/ma-impl/vipra-ui/app/controllers/words.js",
-		"/home/eike/repos/master/ma-impl/vipra-ui/app/adapters/application.js",
-		"/home/eike/repos/master/ma-impl/vipra-ui/app/styles/app.scss",
 		"/home/eike/repos/master/ma-impl/vipra-ui/app/helpers/is-empty.js",
 		"/home/eike/repos/master/ma-impl/vipra-ui/app/models/import.js",
 		"/home/eike/repos/master/ma-impl/vipra-ui/app/router.js",
@@ -543,7 +556,6 @@
 		"/home/eike/repos/master/ma-impl/vipra-ui/app/helpers/uppercase.js",
 		"/home/eike/repos/master/ma-impl/vipra-ui/app/templates/words_loading.hbs",
 		"/home/eike/repos/master/ma-impl/vipra-ui/bower.json",
-		"/home/eike/.config/sublime-text-3/Packages/User/Preferences.sublime-settings",
 		"/home/eike/repos/master/ma-impl/vipra-ui/app/templates/topics.hbs",
 		"/home/eike/repos/master/ma-impl/vipra-ui/app/templates/words.hbs",
 		"/home/eike/repos/master/ma-impl/vipra-ui/app/templates/articles.hbs",
@@ -625,11 +637,7 @@
 		"/home/eike/Repositories/fu/ss15/ma/impl/vipra-ui/app/components/debounced-input.js",
 		"/home/eike/Repositories/fu/ss15/ma/impl/vipra-ui/app/components/dynamic-high-charts.js",
 		"/home/eike/Repositories/fu/ss15/ma/impl/vipra-ui/app/templates/components/text-marker.hbs",
-		"/home/eike/Repositories/fu/ss15/ma/impl/vipra-ui/app/templates/components/article-list.hbs",
-		"/home/eike/Repositories/fu/ss15/ma/impl/vipra-ui/app/templates/articles/list.hbs",
-		"/home/eike/Repositories/fu/ss15/ma/impl/vm/bootstrap.sh",
-		"/home/eike/Repositories/fu/ss15/ma/impl/vipra-ui/app/adapters/application.js",
-		"/home/eike/Repositories/fu/ss15/ma/impl/vipra-ui/app/routes/articles/list.js"
+		"/home/eike/Repositories/fu/ss15/ma/impl/vipra-ui/app/templates/components/article-list.hbs"
 	],
 	"find":
 	{
@@ -953,29 +961,29 @@
 	"groups":
 	[
 		{
-			"selected": 1,
+			"selected": 2,
 			"sheets":
 			[
 				{
 					"buffer": 0,
-					"file": "vipra-ui/app/templates/index.hbs",
+					"file": "vipra-ui/index.html",
 					"semi_transient": false,
 					"settings":
 					{
-						"buffer_size": 1530,
+						"buffer_size": 1013,
 						"regions":
 						{
 						},
 						"selection":
 						[
 							[
-								1352,
-								1352
+								239,
+								239
 							]
 						],
 						"settings":
 						{
-							"syntax": "Packages/Handlebars/grammars/Handlebars.tmLanguage",
+							"syntax": "Packages/HTML/HTML.tmLanguage",
 							"tab_size": 2,
 							"translate_tabs_to_spaces": true
 						},
@@ -983,67 +991,123 @@
 						"translation.y": 0.0,
 						"zoom_level": 1.0
 					},
-					"stack_index": 1,
+					"stack_index": 2,
 					"type": "text"
 				},
 				{
 					"buffer": 1,
-					"file": "vipra-ui/app/styles/app.scss",
+					"file": "vipra-ui/js/app.js",
 					"semi_transient": false,
 					"settings":
 					{
-						"buffer_size": 914,
+						"buffer_size": 326,
 						"regions":
 						{
 						},
 						"selection":
 						[
 							[
-								681,
-								681
+								321,
+								321
 							]
 						],
 						"settings":
 						{
-							"syntax": "Packages/SCSS/SCSS.tmLanguage",
-							"tab_size": 2,
-							"translate_tabs_to_spaces": true
+							"open_with_edit": true,
+							"syntax": "Packages/JavaScriptNext - ES6 Syntax/JavaScriptNext.tmLanguage"
 						},
 						"translation.x": 0.0,
 						"translation.y": 0.0,
 						"zoom_level": 1.0
 					},
-					"stack_index": 0,
+					"stack_index": 1,
 					"type": "text"
 				},
 				{
 					"buffer": 2,
-					"file": "vipra-ui/app/adapters/application.js",
+					"file": "vipra-ui/js/controllers.js",
 					"semi_transient": false,
 					"settings":
 					{
-						"buffer_size": 506,
+						"buffer_size": 102,
 						"regions":
 						{
 						},
 						"selection":
 						[
 							[
-								119,
-								119
+								102,
+								102
 							]
 						],
 						"settings":
 						{
-							"syntax": "Packages/JavaScriptNext - ES6 Syntax/JavaScriptNext.tmLanguage",
-							"tab_size": 2,
-							"translate_tabs_to_spaces": true
+							"open_with_edit": true,
+							"syntax": "Packages/JavaScriptNext - ES6 Syntax/JavaScriptNext.tmLanguage"
 						},
 						"translation.x": 0.0,
 						"translation.y": 0.0,
 						"zoom_level": 1.0
 					},
-					"stack_index": 2,
+					"stack_index": 0,
+					"type": "text"
+				},
+				{
+					"buffer": 3,
+					"file": "vipra-ui/js/directives.js",
+					"semi_transient": false,
+					"settings":
+					{
+						"buffer_size": 49,
+						"regions":
+						{
+						},
+						"selection":
+						[
+							[
+								42,
+								42
+							]
+						],
+						"settings":
+						{
+							"open_with_edit": true,
+							"syntax": "Packages/JavaScriptNext - ES6 Syntax/JavaScriptNext.tmLanguage"
+						},
+						"translation.x": 0.0,
+						"translation.y": 0.0,
+						"zoom_level": 1.0
+					},
+					"stack_index": 3,
+					"type": "text"
+				},
+				{
+					"buffer": 4,
+					"file": "vipra-ui/js/services.js",
+					"semi_transient": false,
+					"settings":
+					{
+						"buffer_size": 47,
+						"regions":
+						{
+						},
+						"selection":
+						[
+							[
+								40,
+								40
+							]
+						],
+						"settings":
+						{
+							"open_with_edit": true,
+							"syntax": "Packages/JavaScriptNext - ES6 Syntax/JavaScriptNext.tmLanguage"
+						},
+						"translation.x": 0.0,
+						"translation.y": 0.0,
+						"zoom_level": 1.0
+					},
+					"stack_index": 4,
 					"type": "text"
 				}
 			]
diff --git a/vipra-rest/src/main/java/de/vipra/rest/APIMediaType.java b/vipra-rest/src/main/java/de/vipra/rest/APIMediaType.java
deleted file mode 100644
index c9e4cdb9..00000000
--- a/vipra-rest/src/main/java/de/vipra/rest/APIMediaType.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package de.vipra.rest;
-
-import javax.ws.rs.core.MediaType;
-
-public class APIMediaType extends MediaType {
-
-	public static final String APPLICATION_JSONAPI = "application/vnd.api+json";
-
-}
diff --git a/vipra-rest/src/main/java/de/vipra/rest/Application.java b/vipra-rest/src/main/java/de/vipra/rest/Application.java
index 3a5aa15b..eb1e7649 100644
--- a/vipra-rest/src/main/java/de/vipra/rest/Application.java
+++ b/vipra-rest/src/main/java/de/vipra/rest/Application.java
@@ -5,7 +5,6 @@ import org.glassfish.jersey.message.GZipEncoder;
 import org.glassfish.jersey.server.ResourceConfig;
 import org.glassfish.jersey.server.filter.EncodingFilter;
 
-import de.vipra.rest.provider.APIRequestFilter;
 import de.vipra.rest.provider.CORSResponseFilter;
 import de.vipra.rest.provider.ObjectMapperProvider;
 
@@ -16,7 +15,6 @@ public class Application extends ResourceConfig {
 		register(JacksonFeature.class);
 		register(CORSResponseFilter.class);
 		register(ObjectMapperProvider.class);
-		register(APIRequestFilter.class);
 		EncodingFilter.enableFor(this, GZipEncoder.class);
 	}
 
diff --git a/vipra-rest/src/main/java/de/vipra/rest/PATCH.java b/vipra-rest/src/main/java/de/vipra/rest/PATCH.java
deleted file mode 100644
index 3003f70f..00000000
--- a/vipra-rest/src/main/java/de/vipra/rest/PATCH.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package de.vipra.rest;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-import javax.ws.rs.HttpMethod;
-import javax.ws.rs.NameBinding;
-
-@Target(ElementType.METHOD)
-@Retention(RetentionPolicy.RUNTIME)
-@HttpMethod("PATCH")
-@Documented
-@NameBinding
-public @interface PATCH {}
\ No newline at end of file
diff --git a/vipra-rest/src/main/java/de/vipra/rest/model/APIVersion.java b/vipra-rest/src/main/java/de/vipra/rest/model/APIVersion.java
deleted file mode 100644
index 6e80449f..00000000
--- a/vipra-rest/src/main/java/de/vipra/rest/model/APIVersion.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package de.vipra.rest.model;
-
-public class APIVersion {
-
-	public final String version = "1.0";
-
-}
diff --git a/vipra-rest/src/main/java/de/vipra/rest/model/Wrapper.java b/vipra-rest/src/main/java/de/vipra/rest/model/Wrapper.java
index 0d19036b..c42bdee9 100644
--- a/vipra-rest/src/main/java/de/vipra/rest/model/Wrapper.java
+++ b/vipra-rest/src/main/java/de/vipra/rest/model/Wrapper.java
@@ -20,7 +20,6 @@ public class Wrapper<T> {
 	private List<APIError> errors;
 	private Map<String, String> links;
 	private NestedMap meta;
-	private final APIVersion jsonapi = new APIVersion();
 
 	public Wrapper() {}
 
@@ -84,10 +83,6 @@ public class Wrapper<T> {
 		meta.put(key, value);
 	}
 
-	public APIVersion getJsonapi() {
-		return jsonapi;
-	}
-
 	public String tag() {
 		return data != null ? Integer.toString(data.hashCode()) : null;
 	}
diff --git a/vipra-rest/src/main/java/de/vipra/rest/provider/APIRequestFilter.java b/vipra-rest/src/main/java/de/vipra/rest/provider/APIRequestFilter.java
deleted file mode 100644
index 2a64e72d..00000000
--- a/vipra-rest/src/main/java/de/vipra/rest/provider/APIRequestFilter.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package de.vipra.rest.provider;
-
-import java.io.IOException;
-
-import javax.ws.rs.container.ContainerRequestContext;
-import javax.ws.rs.container.ContainerRequestFilter;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.ext.Provider;
-
-import de.vipra.rest.APIMediaType;
-
-@Provider
-public class APIRequestFilter implements ContainerRequestFilter {
-
-	@Override
-	public void filter(ContainerRequestContext requestContext) throws IOException {
-		String contentType = requestContext.getHeaderString("Content-Type");
-		if (contentType != null) {
-			if (requestContext.getHeaderString("Content-Type").contains(";")) {
-				requestContext.abortWith(Response.status(Response.Status.UNSUPPORTED_MEDIA_TYPE).build());
-			} else {
-				String[] acceptHeader = requestContext.getHeaderString("Accept").split(",");
-				boolean abort = false;
-				for (int i = 0; i < acceptHeader.length; i++) {
-					String accept = acceptHeader[i].trim();
-					if (accept.startsWith(APIMediaType.APPLICATION_JSONAPI)) {
-						if (accept.contains(";")) {
-							abort = true;
-						} else {
-							abort = false;
-							break;
-						}
-					}
-				}
-				if (abort) {
-					requestContext.abortWith(Response.status(Response.Status.NOT_ACCEPTABLE).build());
-				}
-			}
-		}
-	}
-
-}
diff --git a/vipra-rest/src/main/java/de/vipra/rest/provider/ObjectMapperProvider.java b/vipra-rest/src/main/java/de/vipra/rest/provider/ObjectMapperProvider.java
index 9fcbcc76..490abad9 100644
--- a/vipra-rest/src/main/java/de/vipra/rest/provider/ObjectMapperProvider.java
+++ b/vipra-rest/src/main/java/de/vipra/rest/provider/ObjectMapperProvider.java
@@ -14,15 +14,9 @@ import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.SerializationFeature;
 import com.fasterxml.jackson.databind.module.SimpleModule;
 
-import de.vipra.rest.serializer.GenericDeserializer;
-import de.vipra.rest.serializer.GenericSerializer;
 import de.vipra.rest.serializer.ObjectIdDeserializer;
 import de.vipra.rest.serializer.ObjectIdSerializer;
 import de.vipra.util.Constants;
-import de.vipra.util.model.ArticleFull;
-import de.vipra.util.model.Import;
-import de.vipra.util.model.TopicFull;
-import de.vipra.util.model.Word;
 
 @Provider
 public class ObjectMapperProvider implements ContextResolver<ObjectMapper> {
@@ -42,17 +36,6 @@ public class ObjectMapperProvider implements ContextResolver<ObjectMapper> {
 
 	public static ObjectMapper createDefaultMapper() {
 		SimpleModule module = new SimpleModule();
-		module.addSerializer(ArticleFull.class, new GenericSerializer<ArticleFull>(ArticleFull.class));
-		module.addDeserializer(ArticleFull.class, new GenericDeserializer<ArticleFull>(ArticleFull.class));
-
-		module.addSerializer(TopicFull.class, new GenericSerializer<TopicFull>(TopicFull.class));
-		module.addDeserializer(TopicFull.class, new GenericDeserializer<TopicFull>(TopicFull.class));
-
-		module.addSerializer(Word.class, new GenericSerializer<Word>(Word.class));
-		module.addDeserializer(Word.class, new GenericDeserializer<Word>(Word.class));
-
-		module.addSerializer(Import.class, new GenericSerializer<Import>(Import.class));
-		module.addDeserializer(Import.class, new GenericDeserializer<Import>(Import.class));
 
 		module.addSerializer(ObjectId.class, new ObjectIdSerializer());
 		module.addDeserializer(ObjectId.class, new ObjectIdDeserializer());
diff --git a/vipra-rest/src/main/java/de/vipra/rest/resource/ArticleResource.java b/vipra-rest/src/main/java/de/vipra/rest/resource/ArticleResource.java
index f760797f..6b7791a5 100644
--- a/vipra-rest/src/main/java/de/vipra/rest/resource/ArticleResource.java
+++ b/vipra-rest/src/main/java/de/vipra/rest/resource/ArticleResource.java
@@ -6,7 +6,6 @@ import java.net.URI;
 import java.net.URISyntaxException;
 import java.net.URL;
 import java.util.ArrayList;
-import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -22,6 +21,7 @@ import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
 import javax.ws.rs.QueryParam;
 import javax.ws.rs.core.Context;
+import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 import javax.ws.rs.core.UriInfo;
 
@@ -35,7 +35,6 @@ import org.elasticsearch.index.query.QueryBuilders;
 import org.elasticsearch.search.SearchHit;
 import org.elasticsearch.search.SearchHits;
 
-import de.vipra.rest.APIMediaType;
 import de.vipra.rest.Messages;
 import de.vipra.rest.model.APIError;
 import de.vipra.rest.model.Wrapper;
@@ -73,7 +72,7 @@ public class ArticleResource {
 	}
 
 	@GET
-	@Produces(APIMediaType.APPLICATION_JSONAPI)
+	@Produces(MediaType.APPLICATION_JSON)
 	public Response getArticles(@QueryParam("skip") Integer skip, @QueryParam("limit") Integer limit,
 			@QueryParam("sort") @DefaultValue("date") String sortBy, @QueryParam("fields") String fields,
 			@QueryParam("query") String query) {
@@ -142,8 +141,8 @@ public class ArticleResource {
 	}
 
 	@GET
-	@Produces(APIMediaType.APPLICATION_JSONAPI)
-	@Consumes(APIMediaType.APPLICATION_JSONAPI)
+	@Produces(MediaType.APPLICATION_JSON)
+	@Consumes(MediaType.APPLICATION_JSON)
 	@Path("{id}")
 	public Response getArticle(@PathParam("id") String id, @QueryParam("fields") String fields) {
 		Wrapper<ArticleFull> res = new Wrapper<>();
@@ -171,8 +170,8 @@ public class ArticleResource {
 	}
 
 	@POST
-	@Consumes(APIMediaType.APPLICATION_JSONAPI)
-	@Produces(APIMediaType.APPLICATION_JSONAPI)
+	@Consumes(MediaType.APPLICATION_JSON)
+	@Produces(MediaType.APPLICATION_JSON)
 	public Response createArticle(ArticleFull article) {
 		Wrapper<ArticleFull> res;
 		try {
@@ -214,8 +213,8 @@ public class ArticleResource {
 	}
 
 	@PUT
-	@Consumes(APIMediaType.APPLICATION_JSONAPI)
-	@Produces(APIMediaType.APPLICATION_JSONAPI)
+	@Consumes(MediaType.APPLICATION_JSON)
+	@Produces(MediaType.APPLICATION_JSON)
 	@Path("{id}")
 	public Response replaceArticle(@PathParam("id") String id, Wrapper<ArticleFull> wrapper) {
 		ArticleFull article = wrapper.getData();
diff --git a/vipra-rest/src/main/java/de/vipra/rest/resource/ImportResource.java b/vipra-rest/src/main/java/de/vipra/rest/resource/ImportResource.java
index 0f144c86..f67a0b49 100644
--- a/vipra-rest/src/main/java/de/vipra/rest/resource/ImportResource.java
+++ b/vipra-rest/src/main/java/de/vipra/rest/resource/ImportResource.java
@@ -12,6 +12,7 @@ import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
 import javax.ws.rs.QueryParam;
 import javax.ws.rs.core.Context;
+import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 import javax.ws.rs.core.UriInfo;
 
@@ -20,7 +21,6 @@ import org.ehcache.Cache;
 import org.ehcache.CacheManager;
 import org.ehcache.config.CacheConfigurationBuilder;
 
-import de.vipra.rest.APIMediaType;
 import de.vipra.rest.Messages;
 import de.vipra.rest.model.APIError;
 import de.vipra.rest.model.Wrapper;
@@ -53,7 +53,7 @@ public class ImportResource {
 	}
 
 	@GET
-	@Produces(APIMediaType.APPLICATION_JSONAPI)
+	@Produces(MediaType.APPLICATION_JSON)
 	public Response getImports(@QueryParam("skip") Integer skip, @QueryParam("limit") Integer limit,
 			@QueryParam("sort") @DefaultValue("date") String sortBy, @QueryParam("fields") String fields) {
 		Wrapper<List<Import>> res = new Wrapper<>();
@@ -80,8 +80,8 @@ public class ImportResource {
 	}
 
 	@GET
-	@Produces(APIMediaType.APPLICATION_JSONAPI)
-	@Consumes(APIMediaType.APPLICATION_JSONAPI)
+	@Produces(MediaType.APPLICATION_JSON)
+	@Consumes(MediaType.APPLICATION_JSON)
 	@Path("latest")
 	public Response getLatestImport(@QueryParam("fields") String fields) {
 		Wrapper<Import> res = new Wrapper<>();
@@ -95,8 +95,8 @@ public class ImportResource {
 	}
 
 	@GET
-	@Produces(APIMediaType.APPLICATION_JSONAPI)
-	@Consumes(APIMediaType.APPLICATION_JSONAPI)
+	@Produces(MediaType.APPLICATION_JSON)
+	@Consumes(MediaType.APPLICATION_JSON)
 	@Path("{id}")
 	public Response getImport(@PathParam("id") String id, @QueryParam("fields") String fields) {
 		Wrapper<Import> res = new Wrapper<>();
diff --git a/vipra-rest/src/main/java/de/vipra/rest/resource/TopicResource.java b/vipra-rest/src/main/java/de/vipra/rest/resource/TopicResource.java
index 2e65bf39..7675508c 100644
--- a/vipra-rest/src/main/java/de/vipra/rest/resource/TopicResource.java
+++ b/vipra-rest/src/main/java/de/vipra/rest/resource/TopicResource.java
@@ -13,6 +13,7 @@ import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
 import javax.ws.rs.QueryParam;
 import javax.ws.rs.core.Context;
+import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 import javax.ws.rs.core.UriInfo;
 
@@ -21,7 +22,6 @@ import org.ehcache.Cache;
 import org.ehcache.CacheManager;
 import org.ehcache.config.CacheConfigurationBuilder;
 
-import de.vipra.rest.APIMediaType;
 import de.vipra.rest.Messages;
 import de.vipra.rest.model.APIError;
 import de.vipra.rest.model.Wrapper;
@@ -55,7 +55,7 @@ public class TopicResource {
 	}
 
 	@GET
-	@Produces(APIMediaType.APPLICATION_JSONAPI)
+	@Produces(MediaType.APPLICATION_JSON)
 	public Response getTopics(@QueryParam("skip") Integer skip, @QueryParam("limit") Integer limit,
 			@QueryParam("sort") @DefaultValue("name") String sortBy, @QueryParam("fields") String fields) {
 		Wrapper<List<TopicFull>> res = new Wrapper<>();
@@ -82,8 +82,8 @@ public class TopicResource {
 	}
 
 	@GET
-	@Produces(APIMediaType.APPLICATION_JSONAPI)
-	@Consumes(APIMediaType.APPLICATION_JSONAPI)
+	@Produces(MediaType.APPLICATION_JSON)
+	@Consumes(MediaType.APPLICATION_JSON)
 	@Path("{id}")
 	public Response getTopic(@PathParam("id") String id, @QueryParam("fields") String fields) {
 		Wrapper<TopicFull> res = new Wrapper<>();
@@ -111,8 +111,8 @@ public class TopicResource {
 	}
 
 	@PUT
-	@Consumes(APIMediaType.APPLICATION_JSONAPI)
-	@Produces(APIMediaType.APPLICATION_JSONAPI)
+	@Consumes(MediaType.APPLICATION_JSON)
+	@Produces(MediaType.APPLICATION_JSON)
 	@Path("{id}")
 	public Response replaceTopic(@PathParam("id") String id, Wrapper<TopicFull> wrapper) {
 		TopicFull topic = wrapper.getData();
diff --git a/vipra-rest/src/main/java/de/vipra/rest/resource/WordResource.java b/vipra-rest/src/main/java/de/vipra/rest/resource/WordResource.java
index 191cb3dc..b05dbef5 100644
--- a/vipra-rest/src/main/java/de/vipra/rest/resource/WordResource.java
+++ b/vipra-rest/src/main/java/de/vipra/rest/resource/WordResource.java
@@ -12,6 +12,7 @@ import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
 import javax.ws.rs.QueryParam;
 import javax.ws.rs.core.Context;
+import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 import javax.ws.rs.core.UriInfo;
 
@@ -19,7 +20,6 @@ import org.ehcache.Cache;
 import org.ehcache.CacheManager;
 import org.ehcache.config.CacheConfigurationBuilder;
 
-import de.vipra.rest.APIMediaType;
 import de.vipra.rest.Messages;
 import de.vipra.rest.model.APIError;
 import de.vipra.rest.model.Wrapper;
@@ -51,7 +51,7 @@ public class WordResource {
 	}
 
 	@GET
-	@Produces(APIMediaType.APPLICATION_JSONAPI)
+	@Produces(MediaType.APPLICATION_JSON)
 	public Response getWords(@QueryParam("skip") Integer skip, @QueryParam("limit") Integer limit,
 			@QueryParam("sort") @DefaultValue("word") String sortBy, @QueryParam("fields") String fields) {
 		Wrapper<List<Word>> res = new Wrapper<>();
@@ -78,8 +78,8 @@ public class WordResource {
 	}
 
 	@GET
-	@Produces(APIMediaType.APPLICATION_JSONAPI)
-	@Consumes(APIMediaType.APPLICATION_JSONAPI)
+	@Produces(MediaType.APPLICATION_JSON)
+	@Consumes(MediaType.APPLICATION_JSON)
 	@Path("{id}")
 	public Response getWord(@PathParam("id") String id, @QueryParam("fields") String fields) {
 		Wrapper<Word> res = new Wrapper<>();
diff --git a/vipra-rest/src/main/java/de/vipra/rest/serializer/GenericDeserializer.java b/vipra-rest/src/main/java/de/vipra/rest/serializer/GenericDeserializer.java
deleted file mode 100644
index d7842dd3..00000000
--- a/vipra-rest/src/main/java/de/vipra/rest/serializer/GenericDeserializer.java
+++ /dev/null
@@ -1,110 +0,0 @@
-package de.vipra.rest.serializer;
-
-import java.io.IOException;
-import java.lang.reflect.Field;
-import java.lang.reflect.Modifier;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.core.JsonParseException;
-import com.fasterxml.jackson.core.JsonParser;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.core.JsonToken;
-import com.fasterxml.jackson.databind.DeserializationContext;
-import com.fasterxml.jackson.databind.JsonDeserializer;
-
-import de.vipra.util.StringUtils;
-import de.vipra.util.an.JsonWrap;
-import de.vipra.util.model.Model;
-
-public class GenericDeserializer<T extends Model<?>> extends JsonDeserializer<T> {
-
-	private final Class<T> clazz;
-	private final Set<String> nestingPrefixes = new HashSet<>();
-	private final Map<String, Field> allFields = new HashMap<>();
-
-	public GenericDeserializer(Class<T> clazz) {
-		this.clazz = clazz;
-
-		Field[] fields = clazz.getDeclaredFields();
-		for (Field field : fields) {
-			int modifiers = field.getModifiers();
-			if (Modifier.isPrivate(modifiers) && !Modifier.isStatic(modifiers)) {
-				field.setAccessible(true);
-
-				JsonIgnore ji = field.getDeclaredAnnotation(JsonIgnore.class);
-				if (ji != null && ji.value())
-					continue;
-
-				String name = field.getName();
-
-				JsonProperty jp = field.getDeclaredAnnotation(JsonProperty.class);
-				if (jp != null)
-					name = jp.value();
-
-				JsonWrap jw = field.getDeclaredAnnotation(JsonWrap.class);
-				if (jw != null)
-					name = jw.value() + "." + name;
-
-				name = StringUtils.camelToDashCase(name);
-				allFields.put(name, field);
-
-				String[] parts = name.split("\\.");
-				if (parts.length > 1) {
-					String currentPrefix = parts[0];
-					nestingPrefixes.add(currentPrefix);
-					for (int i = 1; i < parts.length - 1; i++) {
-						currentPrefix += "." + parts[i];
-						nestingPrefixes.add(currentPrefix);
-					}
-				}
-			}
-		}
-	}
-
-	@Override
-	public T deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JsonProcessingException {
-		T value = null;
-
-		try {
-			value = clazz.newInstance();
-		} catch (InstantiationException | IllegalAccessException e) {
-			throw new IOException("could not instantiate object. Default ctor is missing.");
-		}
-
-		while (p.nextToken() != JsonToken.END_OBJECT) {
-			String name = p.getCurrentName();
-			Field field = allFields.get(name);
-			p.nextToken();
-			if (field != null) {
-				try {
-					field.set(value, p.readValueAs(field.getType()));
-				} catch (IllegalArgumentException | IllegalAccessException e) {}
-			} else if (nestingPrefixes.contains(name)) {
-				getNested(p, value, name + ".");
-			}
-		}
-
-		return value;
-	}
-
-	public void getNested(JsonParser p, T value, String prefix) throws JsonParseException, IOException {
-		while (p.nextToken() != JsonToken.END_OBJECT) {
-			String name = prefix + p.getCurrentName();
-			Field field = allFields.get(name);
-			p.nextToken();
-			if (field != null) {
-				try {
-					field.set(value, p.readValueAs(field.getType()));
-				} catch (IllegalArgumentException | IllegalAccessException e) {}
-			} else if (nestingPrefixes.contains(name)) {
-				getNested(p, value, name + ".");
-			}
-		}
-	}
-
-}
diff --git a/vipra-rest/src/main/java/de/vipra/rest/serializer/GenericSerializer.java b/vipra-rest/src/main/java/de/vipra/rest/serializer/GenericSerializer.java
deleted file mode 100644
index 801c3d89..00000000
--- a/vipra-rest/src/main/java/de/vipra/rest/serializer/GenericSerializer.java
+++ /dev/null
@@ -1,98 +0,0 @@
-package de.vipra.rest.serializer;
-
-import java.io.IOException;
-import java.lang.reflect.Field;
-import java.lang.reflect.Modifier;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.core.JsonGenerator;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.JsonSerializer;
-import com.fasterxml.jackson.databind.SerializerProvider;
-
-import de.vipra.util.NestedMap;
-import de.vipra.util.StringUtils;
-import de.vipra.util.an.JsonType;
-import de.vipra.util.an.JsonWrap;
-import de.vipra.util.model.Model;
-
-public class GenericSerializer<T extends Model<?>> extends JsonSerializer<T> {
-
-	private final String typeName;
-	private final List<Entry<String, Field>> allFields;
-
-	public GenericSerializer(Class<T> clazz) {
-		JsonType aField = clazz.getDeclaredAnnotation(JsonType.class);
-		if (aField != null)
-			this.typeName = aField.value().toLowerCase();
-		else
-			this.typeName = clazz.getSimpleName().toLowerCase();
-
-		Map<String, Field> foundFields = new HashMap<>();
-
-		Field[] fields = clazz.getDeclaredFields();
-		for (Field field : fields) {
-			int modifiers = field.getModifiers();
-			if (Modifier.isPrivate(modifiers) && !Modifier.isStatic(modifiers)) {
-				field.setAccessible(true);
-
-				JsonIgnore ji = field.getDeclaredAnnotation(JsonIgnore.class);
-				if (ji != null && ji.value())
-					continue;
-
-				String name = field.getName();
-
-				JsonProperty jp = field.getDeclaredAnnotation(JsonProperty.class);
-				if (jp != null)
-					name = jp.value();
-
-				JsonWrap jw = field.getDeclaredAnnotation(JsonWrap.class);
-				if (jw != null)
-					name = jw.value() + "." + name;
-
-				name = StringUtils.camelToDashCase(name);
-				foundFields.put(name, field);
-			}
-		}
-
-		this.allFields = new ArrayList<>(foundFields.entrySet());
-
-		Collections.sort(this.allFields, new Comparator<Entry<String, Field>>() {
-			@Override
-			public int compare(Entry<String, Field> o1, Entry<String, Field> o2) {
-				return o1.getKey().compareTo(o2.getKey());
-			}
-		});
-	}
-
-	@Override
-	public void serialize(T value, JsonGenerator gen, SerializerProvider serializers)
-			throws IOException, JsonProcessingException {
-
-		NestedMap map = new NestedMap();
-		map.put("type", typeName);
-
-		for (Entry<String, Field> entry : allFields) {
-			Object v = null;
-			try {
-				v = entry.getValue().get(value);
-			} catch (IllegalArgumentException | IllegalAccessException e) {
-				e.printStackTrace();
-			}
-
-			if (v != null)
-				map.put(entry.getKey(), v);
-		}
-
-		serializers.defaultSerializeValue(map, gen);
-	}
-
-}
diff --git a/vipra-ui/.bowerrc b/vipra-ui/.bowerrc
deleted file mode 100644
index 959e1696..00000000
--- a/vipra-ui/.bowerrc
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-  "directory": "bower_components",
-  "analytics": false
-}
diff --git a/vipra-ui/.classpath b/vipra-ui/.classpath
deleted file mode 100644
index d6da2a85..00000000
--- a/vipra-ui/.classpath
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
-		<attributes>
-			<attribute name="owner.project.facets" value="java"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/>
-	<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/>
-	<classpathentry kind="output" path="build/classes"/>
-</classpath>
diff --git a/vipra-ui/.editorconfig b/vipra-ui/.editorconfig
deleted file mode 100644
index 47c54384..00000000
--- a/vipra-ui/.editorconfig
+++ /dev/null
@@ -1,34 +0,0 @@
-# EditorConfig helps developers define and maintain consistent
-# coding styles between different editors and IDEs
-# editorconfig.org
-
-root = true
-
-
-[*]
-end_of_line = lf
-charset = utf-8
-trim_trailing_whitespace = true
-insert_final_newline = true
-indent_style = space
-indent_size = 2
-
-[*.js]
-indent_style = space
-indent_size = 2
-
-[*.hbs]
-insert_final_newline = false
-indent_style = space
-indent_size = 2
-
-[*.css]
-indent_style = space
-indent_size = 2
-
-[*.html]
-indent_style = space
-indent_size = 2
-
-[*.{diff,md}]
-trim_trailing_whitespace = false
diff --git a/vipra-ui/.ember-cli b/vipra-ui/.ember-cli
deleted file mode 100644
index ee64cfed..00000000
--- a/vipra-ui/.ember-cli
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-  /**
-    Ember CLI sends analytics information by default. The data is completely
-    anonymous, but there are times when you might want to disable this behavior.
-
-    Setting `disableAnalytics` to true will prevent any data from being sent.
-  */
-  "disableAnalytics": false
-}
diff --git a/vipra-ui/.gitignore b/vipra-ui/.gitignore
index 86fceae7..68b9e277 100644
--- a/vipra-ui/.gitignore
+++ b/vipra-ui/.gitignore
@@ -1,17 +1,2 @@
-# See http://help.github.com/ignore-files/ for more about ignoring files.
-
-# compiled output
-/dist
-/tmp
-
-# dependencies
-/node_modules
-/bower_components
-
-# misc
-/.sass-cache
-/connect.lock
-/coverage/*
-/libpeerconnection.log
-npm-debug.log
-testem.log
+node_modules/
+bower_components/
diff --git a/vipra-ui/.jshintrc b/vipra-ui/.jshintrc
deleted file mode 100644
index 08096eff..00000000
--- a/vipra-ui/.jshintrc
+++ /dev/null
@@ -1,32 +0,0 @@
-{
-  "predef": [
-    "document",
-    "window",
-    "-Promise"
-  ],
-  "browser": true,
-  "boss": true,
-  "curly": true,
-  "debug": false,
-  "devel": true,
-  "eqeqeq": true,
-  "evil": true,
-  "forin": false,
-  "immed": false,
-  "laxbreak": false,
-  "newcap": true,
-  "noarg": true,
-  "noempty": false,
-  "nonew": false,
-  "nomen": false,
-  "onevar": false,
-  "plusplus": false,
-  "regexp": false,
-  "undef": true,
-  "sub": true,
-  "strict": false,
-  "white": false,
-  "eqnull": true,
-  "esnext": true,
-  "unused": true
-}
diff --git a/vipra-ui/.project b/vipra-ui/.project
deleted file mode 100644
index eee34264..00000000
--- a/vipra-ui/.project
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>vipra-ui</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.wst.jsdt.core.javascriptValidator</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.wst.common.project.facet.core.builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.wst.validation.validationbuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
-		<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
-		<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
-		<nature>org.eclipse.wst.jsdt.core.jsNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
diff --git a/vipra-ui/.settings/.jsdtscope b/vipra-ui/.settings/.jsdtscope
deleted file mode 100644
index 92e666d7..00000000
--- a/vipra-ui/.settings/.jsdtscope
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry excluding="**/bower_components/*|**/node_modules/*|**/*.min.js" kind="src" path="WebContent"/>
-	<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.WebProject">
-		<attributes>
-			<attribute name="hide" value="true"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.baseBrowserLibrary"/>
-	<classpathentry kind="output" path=""/>
-</classpath>
diff --git a/vipra-ui/.settings/org.eclipse.jdt.core.prefs b/vipra-ui/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 0c68a61d..00000000
--- a/vipra-ui/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,7 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.compliance=1.8
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.8
diff --git a/vipra-ui/.settings/org.eclipse.wst.common.component b/vipra-ui/.settings/org.eclipse.wst.common.component
deleted file mode 100644
index 1f5413a3..00000000
--- a/vipra-ui/.settings/org.eclipse.wst.common.component
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.5.0">
-    <wb-module deploy-name="vipra-ui">
-        <wb-resource deploy-path="/" source-path="/dist"/>
-        <wb-resource deploy-path="/" source-path="/webapp" tag="defaultRootSource"/>
-        <property name="context-root" value="vipra-ui"/>
-        <property name="java-output-path" value="/vipra-ui/build/classes"/>
-    </wb-module>
-</project-modules>
diff --git a/vipra-ui/.settings/org.eclipse.wst.common.project.facet.core.xml b/vipra-ui/.settings/org.eclipse.wst.common.project.facet.core.xml
deleted file mode 100644
index 5523f321..00000000
--- a/vipra-ui/.settings/org.eclipse.wst.common.project.facet.core.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<faceted-project>
-  <fixed facet="jst.web"/>
-  <fixed facet="wst.jsdt.web"/>
-  <fixed facet="java"/>
-  <installed facet="wst.jsdt.web" version="1.0"/>
-  <installed facet="java" version="1.8"/>
-  <installed facet="jst.web" version="3.1"/>
-</faceted-project>
diff --git a/vipra-ui/.settings/org.eclipse.wst.jsdt.ui.superType.container b/vipra-ui/.settings/org.eclipse.wst.jsdt.ui.superType.container
deleted file mode 100644
index 3bd5d0a4..00000000
--- a/vipra-ui/.settings/org.eclipse.wst.jsdt.ui.superType.container
+++ /dev/null
@@ -1 +0,0 @@
-org.eclipse.wst.jsdt.launching.baseBrowserLibrary
\ No newline at end of file
diff --git a/vipra-ui/.settings/org.eclipse.wst.jsdt.ui.superType.name b/vipra-ui/.settings/org.eclipse.wst.jsdt.ui.superType.name
deleted file mode 100644
index 05bd71b6..00000000
--- a/vipra-ui/.settings/org.eclipse.wst.jsdt.ui.superType.name
+++ /dev/null
@@ -1 +0,0 @@
-Window
\ No newline at end of file
diff --git a/vipra-ui/.settings/org.eclipse.wst.validation.prefs b/vipra-ui/.settings/org.eclipse.wst.validation.prefs
deleted file mode 100644
index 508e5864..00000000
--- a/vipra-ui/.settings/org.eclipse.wst.validation.prefs
+++ /dev/null
@@ -1,12 +0,0 @@
-DELEGATES_PREFERENCE=delegateValidatorList
-USER_BUILD_PREFERENCE=enabledBuildValidatorListorg.eclipse.wst.wsi.ui.internal.WSIMessageValidator;
-USER_MANUAL_PREFERENCE=enabledManualValidatorListorg.eclipse.wst.wsi.ui.internal.WSIMessageValidator;
-USER_PREFERENCE=overrideGlobalPreferencestruedisableAllValidationfalseversion1.2.700.v201508251749
-eclipse.preferences.version=1
-override=true
-suspend=false
-vals/org.eclipse.wst.html.core.HTMLValidator/global=FF01
-vals/org.eclipse.wst.xml.core.xml/global=FF03
-vals/org.eclipse.wst.xsd.core.xsd/global=FF02162org.eclipse.wst.xsd.core.internal.validation.eclipse.Validator
-vals/org.eclipse.wst.xsl.core.xsl/global=FF02
-vf.version=3
diff --git a/vipra-ui/.travis.yml b/vipra-ui/.travis.yml
deleted file mode 100644
index 66dd1076..00000000
--- a/vipra-ui/.travis.yml
+++ /dev/null
@@ -1,23 +0,0 @@
----
-language: node_js
-node_js:
-  - "0.12"
-
-sudo: false
-
-cache:
-  directories:
-    - node_modules
-
-before_install:
-  - export PATH=/usr/local/phantomjs-2.0.0/bin:$PATH
-  - "npm config set spin false"
-  - "npm install -g npm@^2"
-
-install:
-  - npm install -g bower
-  - npm install
-  - bower install
-
-script:
-  - npm test
diff --git a/vipra-ui/.watchmanconfig b/vipra-ui/.watchmanconfig
deleted file mode 100644
index e7834e3e..00000000
--- a/vipra-ui/.watchmanconfig
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-  "ignore_dirs": ["tmp", "dist"]
-}
diff --git a/vipra-ui/README.md b/vipra-ui/README.md
deleted file mode 100644
index 0a2e3896..00000000
--- a/vipra-ui/README.md
+++ /dev/null
@@ -1,27 +0,0 @@
-# Vipra-UI
-
-This is the user interface of Vipra. It provides the front end application, served from a static webserver, and connects to the vipra-rest REST backend application.
-
-## Development
-
-To compile/debug, install dependencies. Vipra-UI was built using Ember.js with ember-cli, which requires nodejs >= 4.x, npm >= 2.x, and bower
-
-In the project root, run:
-
-* `npm install`
-* `bower install`
-
-to install dependencies. Notice that bower dependencies are pinned to specific versions to work around a bug in Ember.
-
-Serve a development server with:
-
-* `ember s`
-
-### Common problems
-
-If ember throws errors about highcharts, remove highcharts from package.json and reinstall:
-
-* npm uninstall --save-dev ember-highcharts
-* ember install ember-highcharts
-
-it seems that ember install does more than just installing dependencies.
\ No newline at end of file
diff --git a/vipra-ui/app/adapters/application.js b/vipra-ui/app/adapters/application.js
deleted file mode 100644
index 0d442b61..00000000
--- a/vipra-ui/app/adapters/application.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import DS from 'ember-data';
-
-export default DS.JSONAPIAdapter.extend({
-  host: `http://${window.location.hostname}:8080`,
-  namespace: 'vipra-rest',
-  updateRecord(store, type, snapshot) {
-    var data = {};
-    var serializer = store.serializerFor(type.modelName);
-
-    serializer.serializeIntoHash(data, type, snapshot, { includeId: true });
-
-    var id = snapshot.id;
-    var url = this.buildURL(type.modelName, id, snapshot, 'updateRecord');
-
-    return this.ajax(url, 'PUT', { data: data });
-  }
-});
diff --git a/vipra-ui/app/app.js b/vipra-ui/app/app.js
deleted file mode 100644
index 8b234d6d..00000000
--- a/vipra-ui/app/app.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import Ember from 'ember';
-import Resolver from 'ember/resolver';
-import loadInitializers from 'ember/load-initializers';
-import config from './config/environment';
-
-let App;
-
-Ember.MODEL_FACTORY_INJECTIONS = true;
-
-App = Ember.Application.extend({
-  modulePrefix: config.modulePrefix,
-  podModulePrefix: config.podModulePrefix,
-  Resolver
-});
-
-loadInitializers(App, config.modulePrefix);
-
-export default App;
diff --git a/vipra-ui/app/components/.gitkeep b/vipra-ui/app/components/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/vipra-ui/app/components/debounced-input.js b/vipra-ui/app/components/debounced-input.js
deleted file mode 100644
index ba23db7e..00000000
--- a/vipra-ui/app/components/debounced-input.js
+++ /dev/null
@@ -1,19 +0,0 @@
-import Ember from 'ember';
-
-export default Ember.TextField.extend({
-  debounce: 500,
-  fireAtStart: false,
-
-  _elementValueDidChange() {
-    let val = this.$().val();
-    if(val) {
-      Ember.run.debounce(this, this._setValue, this.debounce, this.fireAtStart);
-    } else {
-      this._setValue();
-    }
-  },
-
-  _setValue() {
-    this.set('value', this.$().val());
-  }
-});
diff --git a/vipra-ui/app/components/dynamic-high-charts.js b/vipra-ui/app/components/dynamic-high-charts.js
deleted file mode 100644
index 746faf9d..00000000
--- a/vipra-ui/app/components/dynamic-high-charts.js
+++ /dev/null
@@ -1,14 +0,0 @@
-import EmberHighChartsComponent from 'ember-highcharts/components/high-charts';
-
-export default EmberHighChartsComponent.extend({
-
-  redrawChart: function() {
-    // add redraw logic here. ex:
-    var chart = this.get('chart');
-    var seriesName = this.get('content')[0].name;
-    chart.series[0].update({ name: seriesName, data: this.get('content')[0].data }, false);
-    chart.setTitle(null, { text: seriesName }, false);
-    chart.redraw();
-  }.observes('content.@each.isLoaded')
-
-});
diff --git a/vipra-ui/app/components/items-list.js b/vipra-ui/app/components/items-list.js
deleted file mode 100644
index 48125bb8..00000000
--- a/vipra-ui/app/components/items-list.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import Ember from 'ember';
-
-export default Ember.Component.extend({
-
-  route: '',
-
-  filteredItems: Ember.computed('items', 'filter', function() {
-    var keyword = this.get('filter');
-    var filtered = this.get('items');
-    if (keyword) {
-      keyword = keyword.toLowerCase().trim();
-      filtered = this.get('items').filter((item) => item.get('_name').toLowerCase().includes(keyword));
-    }
-    return filtered;
-  })
-
-});
\ No newline at end of file
diff --git a/vipra-ui/app/components/pagination-bar.js b/vipra-ui/app/components/pagination-bar.js
deleted file mode 100644
index 42d7c324..00000000
--- a/vipra-ui/app/components/pagination-bar.js
+++ /dev/null
@@ -1,65 +0,0 @@
-import Ember from 'ember';
-
-export default Ember.Component.extend({
-
-  elements: 2,
-
-  currentPage: Ember.computed('page', function() {
-    return parseInt(this.get('page') || 1);
-  }),
-
-  prev: Ember.computed('page', function() {
-    return this.get('currentPage') > 1;
-  }),
-
-  prevPrev: Ember.computed('page', function() {
-    return this.get('currentPage') > this.elements + 1;
-  }),
-
-  prevPage: Ember.computed('page', function() {
-    return this.get('currentPage') - 1;
-  }),
-
-  next: Ember.computed('page', function() {
-    return this.get('currentPage') < Math.ceil(this.total/this.limit*1.0);
-  }),
-
-  nextNext: Ember.computed('page', function() {
-    return this.get('currentPage') < Math.ceil(this.total/this.limit*1.0) - this.elements;
-  }),
-
-  nextPage: Ember.computed('page', function() {
-    return this.get('currentPage') + 1;
-  }),
-
-  lastPage: Ember.computed('page', function() {
-    return Math.ceil(this.total/this.limit*1.0);
-  }),
-
-  pages: Ember.computed('total', 'page', 'limit', 'elements', function() {
-    let pages = [],
-        page  = this.get('currentPage'),
-        max   = Math.ceil(this.total/this.limit*1.0),
-        start = Math.max(page - this.elements, 1),
-        end   = Math.min(Math.max(page + this.elements, start + this.elements * 2), max);
-    for(let i = start; i <= end; i++) {
-      pages.push({page:i, active:i===page});
-    }
-    return pages;
-  }),
-
-  enabled: Ember.computed('total', 'limit', function() {
-    return this.total > this.limit;
-  }),
-
-  actions: {
-    prompt() {
-      let lastPage = this.get('lastPage'),
-          page = parseInt(window.prompt(`Enter a page number (between 1 and ${lastPage})`) || 0);
-      if(!isNaN(page) && page > 0 && page < lastPage) {
-        this.set('page', page);
-      }
-    }
-  }
-
-});
diff --git a/vipra-ui/app/components/scroll-top.js b/vipra-ui/app/components/scroll-top.js
deleted file mode 100644
index 5701f5aa..00000000
--- a/vipra-ui/app/components/scroll-top.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import Ember from 'ember';
-
-export default Ember.Component.extend({
-  tagName: 'a',
-  attributeBindings: ['href'],
-  href: '#',
-  classNames: ['scroll-top'],
-
-  click(e) {
-    e.preventDefault();
-    window.scrollTo(0, 0);
-  },
-
-  _text: Ember.computed(function() {
-    return this.get('text') || 'Top';
-  })
-});
diff --git a/vipra-ui/app/components/text-marker.js b/vipra-ui/app/components/text-marker.js
deleted file mode 100644
index 0e0518bb..00000000
--- a/vipra-ui/app/components/text-marker.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import Ember from 'ember';
-
-export default Ember.Component.extend({
-
-  setup: function() {
-    this.updateTextMarker();
-  }.on('init'),
-
-  updateTextMarker: function() {
-    var text = this.get('text');
-    var mark = this.get('mark');
-    if(mark) {
-      text = text.replace(new RegExp(mark, 'ig'), '<b>$&</b>');
-    }
-    this.set('marked', text);
-  }.observes('text', 'mark')
-
-});
diff --git a/vipra-ui/app/components/topic-link.js b/vipra-ui/app/components/topic-link.js
deleted file mode 100644
index b1655419..00000000
--- a/vipra-ui/app/components/topic-link.js
+++ /dev/null
@@ -1,12 +0,0 @@
-import Ember from 'ember';
-
-export default Ember.Component.extend({
-
-  tagName: 'span',
-
-  text: Ember.computed('topic', function() {
-    var topic = this.get('topic');
-    return topic.name ? topic.name : topic.id;
-  })
-
-});
diff --git a/vipra-ui/app/controllers/.gitkeep b/vipra-ui/app/controllers/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/vipra-ui/app/controllers/articles/index.js b/vipra-ui/app/controllers/articles/index.js
deleted file mode 100644
index f73630c1..00000000
--- a/vipra-ui/app/controllers/articles/index.js
+++ /dev/null
@@ -1,8 +0,0 @@
-import Ember from 'ember';
-
-export default Ember.Controller.extend({
-
-  queryParams: 'page',
-  page: 1
-  
-});
diff --git a/vipra-ui/app/controllers/index.js b/vipra-ui/app/controllers/index.js
deleted file mode 100644
index faf5a820..00000000
--- a/vipra-ui/app/controllers/index.js
+++ /dev/null
@@ -1,16 +0,0 @@
-export default Ember.Controller.extend({
-
-  queryParams: 'q',
-  q: '',
-
-  search: Ember.computed('q', function() {
-    let query = this.get('q');
-    if(query) {
-      return this.store.query('article', {
-        query: query,
-        limit: 10
-      });
-    }
-  })
-
-});
\ No newline at end of file
diff --git a/vipra-ui/app/controllers/topics/index.js b/vipra-ui/app/controllers/topics/index.js
deleted file mode 100644
index d215b2d1..00000000
--- a/vipra-ui/app/controllers/topics/index.js
+++ /dev/null
@@ -1,6 +0,0 @@
-import Ember from 'ember';
-
-export default Ember.Controller.extend({
-  queryParams: 'page',
-  page: 1
-});
diff --git a/vipra-ui/app/controllers/words/index.js b/vipra-ui/app/controllers/words/index.js
deleted file mode 100644
index d215b2d1..00000000
--- a/vipra-ui/app/controllers/words/index.js
+++ /dev/null
@@ -1,6 +0,0 @@
-import Ember from 'ember';
-
-export default Ember.Controller.extend({
-  queryParams: 'page',
-  page: 1
-});
diff --git a/vipra-ui/app/helpers/.gitkeep b/vipra-ui/app/helpers/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/vipra-ui/app/helpers/is-empty.js b/vipra-ui/app/helpers/is-empty.js
deleted file mode 100644
index 19ca8d44..00000000
--- a/vipra-ui/app/helpers/is-empty.js
+++ /dev/null
@@ -1,12 +0,0 @@
-import Ember from 'ember';
-
-export function isEmpty(params/*, hash*/) {
-  let ary = params[0],
-      text = params[1];
-  if(!ary || typeof ary.length === "undefined" || !ary.length) {
-    return text;
-  }
-  return null;
-}
-
-export default Ember.Helper.helper(isEmpty);
diff --git a/vipra-ui/app/helpers/pluralize.js b/vipra-ui/app/helpers/pluralize.js
deleted file mode 100644
index 56141b21..00000000
--- a/vipra-ui/app/helpers/pluralize.js
+++ /dev/null
@@ -1,10 +0,0 @@
-import Ember from 'ember';
-
-export function pluralize(params) {
-  let number = params[0],
-      singular = params[1],
-      plural = params[2] || singular + 's';
- return number === 1 ? singular : plural;
-}
-
-export default Ember.Helper.helper(pluralize);
diff --git a/vipra-ui/app/helpers/topic-share.js b/vipra-ui/app/helpers/topic-share.js
deleted file mode 100644
index 65c0e9dd..00000000
--- a/vipra-ui/app/helpers/topic-share.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import Ember from 'ember';
-
-export function topicShare(args) {
-  return Math.round(args[0] / args[1] * 100);
-}
-
-export default Ember.Helper.helper(topicShare);
diff --git a/vipra-ui/app/index.html b/vipra-ui/app/index.html
deleted file mode 100644
index bc38d0b0..00000000
--- a/vipra-ui/app/index.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE html>
-<html>
-  <head>
-    <meta charset="utf-8">
-    <meta http-equiv="X-UA-Compatible" content="IE=edge">
-    <meta name="viewport" content="width=device-width, initial-scale=1">
-    <title>Vipra</title>
-
-    <link rel="apple-touch-icon" sizes="57x57" href="/apple-touch-icon-57x57.png">
-    <link rel="apple-touch-icon" sizes="60x60" href="/apple-touch-icon-60x60.png">
-    <link rel="apple-touch-icon" sizes="72x72" href="/apple-touch-icon-72x72.png">
-    <link rel="apple-touch-icon" sizes="76x76" href="/apple-touch-icon-76x76.png">
-    <link rel="apple-touch-icon" sizes="114x114" href="/apple-touch-icon-114x114.png">
-    <link rel="apple-touch-icon" sizes="120x120" href="/apple-touch-icon-120x120.png">
-    <link rel="apple-touch-icon" sizes="144x144" href="/apple-touch-icon-144x144.png">
-    <link rel="apple-touch-icon" sizes="152x152" href="/apple-touch-icon-152x152.png">
-    <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon-180x180.png">
-    <link rel="icon" type="image/png" href="/favicon-32x32.png" sizes="32x32">
-    <link rel="icon" type="image/png" href="/favicon-194x194.png" sizes="194x194">
-    <link rel="icon" type="image/png" href="/favicon-96x96.png" sizes="96x96">
-    <link rel="icon" type="image/png" href="/android-chrome-192x192.png" sizes="192x192">
-    <link rel="icon" type="image/png" href="/favicon-16x16.png" sizes="16x16">
-    <link rel="manifest" href="/manifest.json">
-    <link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5">
-    <meta name="msapplication-TileColor" content="#da532c">
-    <meta name="msapplication-TileImage" content="/mstile-144x144.png">
-    <meta name="theme-color" content="#ffffff">
-
-    {{content-for 'head'}}
-
-    <link rel="stylesheet" href="assets/vendor.css">
-    <link rel="stylesheet" href="assets/vipra-ui.css">
-
-    {{content-for 'head-footer'}}
-  </head>
-  <body>
-    {{content-for 'body'}}
-
-    <script src="assets/vendor.js"></script>
-    <script src="assets/vipra-ui.js"></script>
-
-    {{content-for 'body-footer'}}
-  </body>
-</html>
diff --git a/vipra-ui/app/models/.gitkeep b/vipra-ui/app/models/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/vipra-ui/app/models/article.js b/vipra-ui/app/models/article.js
deleted file mode 100644
index fc38e095..00000000
--- a/vipra-ui/app/models/article.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import DS from 'ember-data';
-
-export default DS.Model.extend({
-  title: DS.attr(),
-  text: DS.attr(),
-  url: DS.attr(),
-  date: DS.attr('date'),
-  stats: DS.attr(),
-  topics: DS.attr(),
-  created: DS.attr('date'),
-  modified: DS.attr('date'),
-
-  _name: function() {
-    var title = this.get('title');
-    return title ? title : this.get('id');
-  }.property('title')
-});
diff --git a/vipra-ui/app/models/import.js b/vipra-ui/app/models/import.js
deleted file mode 100644
index f7cbb7b5..00000000
--- a/vipra-ui/app/models/import.js
+++ /dev/null
@@ -1,12 +0,0 @@
-import DS from 'ember-data';
-
-export default DS.Model.extend({
-  date: DS.attr('date'),
-  duration: DS.attr(),
-  articles: DS.attr(),
-  articlesCount: DS.attr(),
-  topics: DS.attr(),
-  topicsCount: DS.attr(),
-  words: DS.attr(),
-  wordsCount: DS.attr()
-});
diff --git a/vipra-ui/app/models/search.js b/vipra-ui/app/models/search.js
deleted file mode 100644
index fc38e095..00000000
--- a/vipra-ui/app/models/search.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import DS from 'ember-data';
-
-export default DS.Model.extend({
-  title: DS.attr(),
-  text: DS.attr(),
-  url: DS.attr(),
-  date: DS.attr('date'),
-  stats: DS.attr(),
-  topics: DS.attr(),
-  created: DS.attr('date'),
-  modified: DS.attr('date'),
-
-  _name: function() {
-    var title = this.get('title');
-    return title ? title : this.get('id');
-  }.property('title')
-});
diff --git a/vipra-ui/app/models/topic.js b/vipra-ui/app/models/topic.js
deleted file mode 100644
index f1aa4bc5..00000000
--- a/vipra-ui/app/models/topic.js
+++ /dev/null
@@ -1,14 +0,0 @@
-import DS from 'ember-data';
-
-export default DS.Model.extend({
-  name: DS.attr(),
-  index: DS.attr(),
-  words: DS.attr(),
-  created: DS.attr('date'),
-  modified: DS.attr('date'),
-
-  _name: function() {
-    var name = this.get('name');
-    return name ? name : this.get('id');
-  }.property('name')
-});
diff --git a/vipra-ui/app/models/word.js b/vipra-ui/app/models/word.js
deleted file mode 100644
index 4d729630..00000000
--- a/vipra-ui/app/models/word.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import DS from 'ember-data';
-
-export default DS.Model.extend({
-  _name: function() {
-    return this.get('id');
-  }.property('id')
-});
\ No newline at end of file
diff --git a/vipra-ui/app/router.js b/vipra-ui/app/router.js
deleted file mode 100644
index c4a21fcf..00000000
--- a/vipra-ui/app/router.js
+++ /dev/null
@@ -1,26 +0,0 @@
-import Ember from 'ember';
-import config from './config/environment';
-
-const Router = Ember.Router.extend({
-  location: config.locationType
-});
-
-Router.map(function() {
-  this.route('articles', function() {
-    this.route('show', { path: '/:article_id' });
-  });
-
-  this.route('topics', function() {
-  	this.route('show', { path: '/:topic_id' }, function() {
-      this.route('edit');
-    });
-  });
-
-  this.route('words', function() {
-    this.route('show', { path: '/:word_id' });
-  });
-  
-  this.route('not-found', { path: '/*:' });
-});
-
-export default Router;
diff --git a/vipra-ui/app/routes/.gitkeep b/vipra-ui/app/routes/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/vipra-ui/app/routes/articles/index.js b/vipra-ui/app/routes/articles/index.js
deleted file mode 100644
index b5920fb2..00000000
--- a/vipra-ui/app/routes/articles/index.js
+++ /dev/null
@@ -1,87 +0,0 @@
-import Ember from 'ember';
-
-let limit = 100,
-    chartData = [],
-    chartOptions = {
-      chart: {
-        zoomType: 'x'
-      },
-      title: {
-        text: 'Articles per month'
-      },
-      legend: {
-        enabled: false
-      },
-      xAxis: {
-        type: 'datetime',
-        title: {
-          text: 'Dates'
-        }
-      },
-      yAxis: {
-        title: {
-          text: 'Articles'
-        }
-      },
-      tooltip: {
-        headerFormat: '',
-        pointFormat: '{point.x:%b %Y}: {point.y} article(s)'
-      }
-    };
-
-export default Ember.Route.extend({
-  queryParams: {
-    page: {
-      refreshModel: true
-    }
-  },
-
-  model(params) {
-    window.scrollTo(0, 0);
-    
-    let query = {
-      skip: 0,
-      limit: limit
-    };
-
-    if(Ember.isPresent(params.page)) {
-      query.skip = (params.page - 1) * query.limit;
-    }
-
-    return Ember.RSVP.hash({
-      limit: limit,
-      articles: this.store.query('article', query),
-      chartOptions: chartOptions,
-      chartData: chartData
-    });
-  },
-
-  afterModel(model) {
-    var count = {};
-    model.articles.forEach(article => {
-      var date = article.get('date');
-      var month = date.getMonth()+1;
-      var dstr = date.getFullYear() + '-' + (month < 10 ? '0' + month : month);
-      if(count.hasOwnProperty(dstr)) {
-        count[dstr][1] += 1;
-      } else {
-        count[dstr] = [Date.UTC(date.getFullYear(), month), 1];
-      }
-    });
-    var data = [];
-    for(var key in count) {
-      data.push(count[key]);
-    }
-    model.chartData = [{
-      name: 'Articles',
-      data: data
-    }];
-  },
-
-  resetController(controller, isExiting, transition) {
-    if(isExiting) {
-      controller.set('page', 1);
-    }
-  }
-  
-});
diff --git a/vipra-ui/app/routes/articles/show.js b/vipra-ui/app/routes/articles/show.js
deleted file mode 100644
index ce7f5d05..00000000
--- a/vipra-ui/app/routes/articles/show.js
+++ /dev/null
@@ -1,29 +0,0 @@
-import Ember from 'ember';
-
-export default Ember.Route.extend({
-  renderTemplate() {
-    this.render();
-  },
-
-  model(params) {
-    return Ember.RSVP.hash({
-      article: this.store.find('article', params.article_id),
-      statsData: []
-    });
-  },
-
-  afterModel(model) {
-    var words = [],
-        stats = model.article.get('stats');
-    if(stats && stats.uniqueWords) {
-      for(var word in stats.uniqueWords) {
-        var o = stats.uniqueWords[word];
-        words.push({word: word, count: o.termFrequency, norm: o.normalizedTermFrequency});
-      }
-      words.sort(function(a,b) {
-        return b.count - a.count;
-      });
-      model.statsData = words.slice(0,20);
-    }
-  }
-});
\ No newline at end of file
diff --git a/vipra-ui/app/routes/index.js b/vipra-ui/app/routes/index.js
deleted file mode 100644
index bfef9997..00000000
--- a/vipra-ui/app/routes/index.js
+++ /dev/null
@@ -1,13 +0,0 @@
-import Ember from 'ember';
-
-export default Ember.Route.extend({
-
-  model() {
-    return {
-      latestarticles: this.store.query('article', {limit: 5, sort: '-created'}),
-      latesttopics: this.store.query('topic', {limit: 5, sort: '-created'}),
-      latestwords: this.store.query('word', {limit: 5, sort: '-created'}),
-    };
-  }
-
-});
\ No newline at end of file
diff --git a/vipra-ui/app/routes/not-found.js b/vipra-ui/app/routes/not-found.js
deleted file mode 100644
index 26d9f312..00000000
--- a/vipra-ui/app/routes/not-found.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import Ember from 'ember';
-
-export default Ember.Route.extend({
-});
diff --git a/vipra-ui/app/routes/topics/index.js b/vipra-ui/app/routes/topics/index.js
deleted file mode 100644
index 1540346b..00000000
--- a/vipra-ui/app/routes/topics/index.js
+++ /dev/null
@@ -1,37 +0,0 @@
-import Ember from 'ember';
-
-let limit = 100;
-
-export default Ember.Route.extend({
-
-  queryParams: {
-    page: {
-      refreshModel: true
-    }
-  },
-
-  model(params) {
-    window.scrollTo(0, 0);
-    
-    let query = {
-      skip: 0,
-      limit: limit
-    };
-
-    if(Ember.isPresent(params.page)) {
-      query.skip = (params.page - 1) * query.limit;
-    }
-
-    return Ember.RSVP.hash({
-      limit: limit,
-      topics: this.store.query('topic', query)
-    });
-  },
-
-  resetController(controller, isExiting, transition) {
-    if(isExiting) {
-      controller.set('page', 1);
-    }
-  }
-
-});
\ No newline at end of file
diff --git a/vipra-ui/app/routes/topics/show.js b/vipra-ui/app/routes/topics/show.js
deleted file mode 100644
index 2f0623aa..00000000
--- a/vipra-ui/app/routes/topics/show.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import Ember from 'ember';
-
-export default Ember.Route.extend({
-  model(params) {
-    return Ember.RSVP.hash({
-      topic: this.store.find('topic', params.topic_id)
-    });
-  }
-});
\ No newline at end of file
diff --git a/vipra-ui/app/routes/topics/show/edit.js b/vipra-ui/app/routes/topics/show/edit.js
deleted file mode 100644
index 75fd778b..00000000
--- a/vipra-ui/app/routes/topics/show/edit.js
+++ /dev/null
@@ -1,10 +0,0 @@
-import Ember from 'ember';
-
-export default Ember.Route.extend({
-  actions: {
-    save(model) {
-      model.save();
-      return true;
-    }
-  }
-});
\ No newline at end of file
diff --git a/vipra-ui/app/routes/words/index.js b/vipra-ui/app/routes/words/index.js
deleted file mode 100644
index c714a5d1..00000000
--- a/vipra-ui/app/routes/words/index.js
+++ /dev/null
@@ -1,38 +0,0 @@
-import Ember from 'ember';
-
-let limit = 200;
-
-export default Ember.Route.extend({
-
-  queryParams: {
-    page: {
-      refreshModel: true
-    }
-  },
-
-  model(params) {
-    window.scrollTo(0, 0);
-    
-    let query = {
-      sort: 'word',
-      skip: 0,
-      limit: limit
-    };
-
-    if(Ember.isPresent(params.page)) {
-      query.skip = (params.page - 1) * query.limit;
-    }
-
-    return Ember.RSVP.hash({
-      limit: limit,
-      words: this.store.query('word', query)
-    });
-  },
-
-  resetController(controller, isExiting, transition) {
-    if(isExiting) {
-      controller.set('page', 1);
-    }
-  }
-
-});
\ No newline at end of file
diff --git a/vipra-ui/app/routes/words/show.js b/vipra-ui/app/routes/words/show.js
deleted file mode 100644
index e545d25b..00000000
--- a/vipra-ui/app/routes/words/show.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import Ember from 'ember';
-
-export default Ember.Route.extend({
-  model(params) {
-    return Ember.RSVP.hash({
-      word: this.store.find('word', params.word_id)
-    });
-  }
-});
\ No newline at end of file
diff --git a/vipra-ui/app/styles/app.scss b/vipra-ui/app/styles/app.scss
deleted file mode 100644
index 418dbba8..00000000
--- a/vipra-ui/app/styles/app.scss
+++ /dev/null
@@ -1,62 +0,0 @@
-@mixin noselect {
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-  cursor: default;
-}
-
-body {
-  padding-bottom: 20px;
-}
-
-.word {
-  cursor: pointer;
-  padding-right: 5px;
-}
-
-.center {
-  position: absolute;
-  top: 50%;
-  left: 50%;
-  transform: translate(-50%, -50%);
-}
-
-.loading {
-  background: url(/assets/images/squares.gif) no-repeat center center;
-  width: 120px;
-  height: 120px;
-}
-
-.heading {
-  @include noselect;
-  font-size: 82px;
-  margin: 30px 0;
-}
-
-.ellipsize {
-  white-space: nowrap;
-  overflow: hidden;
-  text-overflow: ellipsis;
-}
-
-.search-result {
-  padding: 5px;
-  margin-bottom: 5px;
-}
-
-.navbar-default {
-  .collapse:not(.in) {
-    .navbar-nav > .active {
-      &> a,
-      &> a:hover,
-      &> a:focus {
-        border-bottom: 3px solid;
-        padding-bottom: 12px;
-      }
-    }
-  }
-}
-
-@import 'sticky-footer'
\ No newline at end of file
diff --git a/vipra-ui/app/styles/sticky-footer.scss b/vipra-ui/app/styles/sticky-footer.scss
deleted file mode 100644
index 6d26ce5f..00000000
--- a/vipra-ui/app/styles/sticky-footer.scss
+++ /dev/null
@@ -1,19 +0,0 @@
-html {
-  position: relative;
-  min-height: 100%;
-}
-
-body {
-  /* Margin bottom by footer height */
-  margin-bottom: 60px;
-}
-
-.footer {
-  position: absolute;
-  bottom: 0;
-  width: 100%;
-  /* Set the fixed height of the footer here */
-  height: 50px;
-  border-top-width: 1px;
-  border-top-style: solid;
-}
\ No newline at end of file
diff --git a/vipra-ui/app/templates/application.hbs b/vipra-ui/app/templates/application.hbs
deleted file mode 100644
index 6e2bf2f7..00000000
--- a/vipra-ui/app/templates/application.hbs
+++ /dev/null
@@ -1,35 +0,0 @@
-<nav class="navbar navbar-default navbar-static-top">
-  <div class="container-fluid">
-    <!-- Brand and toggle get grouped for better mobile display -->
-    <div class="navbar-header">
-      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#vipra-navbar-collapse-1" aria-expanded="false">
-        <span class="sr-only">Toggle navigation</span>
-        <span class="icon-bar"></span>
-        <span class="icon-bar"></span>
-        <span class="icon-bar"></span>
-      </button>
-      {{link-to 'vipra' 'index' class='navbar-brand'}}
-    </div>
-
-    <!-- Collect the nav links, forms, and other content for toggling -->
-    <div class="collapse navbar-collapse" id="vipra-navbar-collapse-1">
-      <ul class="nav navbar-nav">
-        {{#link-to 'articles' tagName='li'}}{{link-to 'Articles' 'articles' (query-params page=1)}}{{/link-to}}
-        {{#link-to 'topics' tagName='li'}}{{link-to 'Topics' 'topics' (query-params page=1)}}{{/link-to}}
-        {{#link-to 'words' tagName='li'}}{{link-to 'Words' 'words' (query-params page=1)}}{{/link-to}}
-        {{outlet 'menu-left'}}
-        <div id="testi"></div>
-      </ul>
-    </div><!-- /.navbar-collapse -->
-  </div><!-- /.container-fluid -->
-</nav>
-
-<div class="container">
-  {{outlet}}
-</div>
-
-<footer class="footer navbar-default">
-  <div class="container-fluid">
-
-  </div>
-</footer>
\ No newline at end of file
diff --git a/vipra-ui/app/templates/articles.hbs b/vipra-ui/app/templates/articles.hbs
deleted file mode 100644
index e2147cab..00000000
--- a/vipra-ui/app/templates/articles.hbs
+++ /dev/null
@@ -1 +0,0 @@
-{{outlet}}
\ No newline at end of file
diff --git a/vipra-ui/app/templates/articles/index.hbs b/vipra-ui/app/templates/articles/index.hbs
deleted file mode 100644
index 8009aa8f..00000000
--- a/vipra-ui/app/templates/articles/index.hbs
+++ /dev/null
@@ -1,10 +0,0 @@
-<h1>Articles</h1>
-
-{{dynamic-high-charts content=model.chartData chartOptions=model.chartOptions}}
-
-{{model.articles.meta.total}} {{pluralize model.articles.meta.total 'article'}} in total, {{model.articles.length}} shown.
-
-<br><br>
-{{items-list items=model.articles filter=filter route='articles.show'}}
-
-{{pagination-bar total=model.articles.meta.total page=page limit=model.limit}}
\ No newline at end of file
diff --git a/vipra-ui/app/templates/articles/show.hbs b/vipra-ui/app/templates/articles/show.hbs
deleted file mode 100644
index b4d7a82f..00000000
--- a/vipra-ui/app/templates/articles/show.hbs
+++ /dev/null
@@ -1,39 +0,0 @@
-<h2>&laquo;{{model.article.title}}&raquo;</h2>
-
-<table class="table table-bordered table-condensed">
-  <tbody>
-    <tr>
-      <td>Date</td>
-      <td>{{model.article.date}}</td>
-    </tr>
-    <tr>
-      <td>Created</td>
-      <td>{{model.article.created}}</td>
-    </tr>
-    <tr>
-      <td>Last modified</td>
-      <td>{{model.article.modified}}</td>
-    </tr>
-    <tr>
-      <td>URL</td>
-      <td><a href="{{model.article.url}}">{{model.article.url}}</a></td>
-    </tr>
-    <tr>
-      <td>Topics</td>
-      <td>
-        {{#each model.article.topics as |topicRef|}}
-          [{{#topic-link topic=topicRef.topic}} ({{topic-share topicRef.count model.article.stats.wordCount}}%){{/topic-link}}]
-        {{/each}}
-      </td>
-    </tr>
-    <tr>
-      <td>Word count</td>
-      <td>{{model.article.stats.wordCount}}</td>
-    </tr>
-  </tbody>
-</table>
-
-{{model.article.text}}
-
-<br><br>
-{{scroll-top}}
\ No newline at end of file
diff --git a/vipra-ui/app/templates/components/.gitkeep b/vipra-ui/app/templates/components/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/vipra-ui/app/templates/components/debounced-input.hbs b/vipra-ui/app/templates/components/debounced-input.hbs
deleted file mode 100644
index 889d9eea..00000000
--- a/vipra-ui/app/templates/components/debounced-input.hbs
+++ /dev/null
@@ -1 +0,0 @@
-{{yield}}
diff --git a/vipra-ui/app/templates/components/dynamic-high-charts.hbs b/vipra-ui/app/templates/components/dynamic-high-charts.hbs
deleted file mode 100644
index 889d9eea..00000000
--- a/vipra-ui/app/templates/components/dynamic-high-charts.hbs
+++ /dev/null
@@ -1 +0,0 @@
-{{yield}}
diff --git a/vipra-ui/app/templates/components/items-list.hbs b/vipra-ui/app/templates/components/items-list.hbs
deleted file mode 100644
index 259c5fd7..00000000
--- a/vipra-ui/app/templates/components/items-list.hbs
+++ /dev/null
@@ -1,5 +0,0 @@
-<ul class="list-unstyled">
-  {{#each filteredItems as |item|}}
-    <li>{{#link-to route item.id}}{{text-marker text=item._name mark=filter}}{{/link-to}}</li>
-  {{/each}}
-</ul>
\ No newline at end of file
diff --git a/vipra-ui/app/templates/components/pagination-bar.hbs b/vipra-ui/app/templates/components/pagination-bar.hbs
deleted file mode 100644
index cf9bcc82..00000000
--- a/vipra-ui/app/templates/components/pagination-bar.hbs
+++ /dev/null
@@ -1,45 +0,0 @@
-{{#if enabled}}
-  <nav>
-    <ul class="pagination">
-      <li class="{{unless prev "disabled"}}">
-        {{#if prev}}
-          {{#link-to (query-params page=prevPage)}}&laquo;{{/link-to}}
-        {{else}}
-          <span>&laquo;</span>
-        {{/if}}
-      </li>
-
-      {{#if prevPrev}}
-        <li>
-          {{link-to 1 (query-params page=1)}}
-        </li>
-        <li {{action 'prompt'}}>
-          <span>..</span>
-        </li>
-      {{/if}}
-
-      {{#each pages as |p|}}
-        <li class="{{if p.active "active"}}">
-          {{link-to p.page (query-params page=p.page)}}
-        </li>
-      {{/each}}
-
-      {{#if nextNext}}
-        <li {{action 'prompt'}}>
-          <span>..</span>
-        </li>
-        <li>
-          {{link-to lastPage (query-params page=lastPage)}}
-        </li>
-      {{/if}}
-
-      <li class="{{unless next "disabled"}}">
-        {{#if next}}
-          {{#link-to (query-params page=nextPage)}}&raquo;{{/link-to}}
-        {{else}}
-          <span>&raquo;</span>
-        {{/if}}
-      </li>
-    </ul>
-  </nav>
-{{/if}}
\ No newline at end of file
diff --git a/vipra-ui/app/templates/components/scroll-top.hbs b/vipra-ui/app/templates/components/scroll-top.hbs
deleted file mode 100644
index 04bed982..00000000
--- a/vipra-ui/app/templates/components/scroll-top.hbs
+++ /dev/null
@@ -1,5 +0,0 @@
-{{#if hasBlock}}
-  {{yield}}
-{{else}}
-  {{_text}}
-{{/if}}
\ No newline at end of file
diff --git a/vipra-ui/app/templates/components/text-marker.hbs b/vipra-ui/app/templates/components/text-marker.hbs
deleted file mode 100644
index 5fb15880..00000000
--- a/vipra-ui/app/templates/components/text-marker.hbs
+++ /dev/null
@@ -1 +0,0 @@
-{{{marked}}}
\ No newline at end of file
diff --git a/vipra-ui/app/templates/components/topic-link.hbs b/vipra-ui/app/templates/components/topic-link.hbs
deleted file mode 100644
index 1ba3c2c7..00000000
--- a/vipra-ui/app/templates/components/topic-link.hbs
+++ /dev/null
@@ -1 +0,0 @@
-{{#link-to 'topics.show' topic.id}}{{text}}{{yield}}{{/link-to}}
\ No newline at end of file
diff --git a/vipra-ui/app/templates/index.hbs b/vipra-ui/app/templates/index.hbs
deleted file mode 100644
index 5332d139..00000000
--- a/vipra-ui/app/templates/index.hbs
+++ /dev/null
@@ -1,55 +0,0 @@
-<div class="container">
-  <div class="row">
-    <div class="col-md-12">
-      <div class="text-center">
-        <h1 class="heading">'v&#618;pr&#601;</h1>
-      </div>
-
-      <br>
-      {{debounced-input value=q class="form-control input-lg" placeholder="Search..."}}
-    </div>
-  </div>
-
-  <br><br>
-  <div class="row">
-    <div class="col-md-6 text-center">
-      <h4>Latest articles</h4>
-      <ul class="list-unstyled">
-        {{#each model.latestarticles as |article|}}
-          <li class="ellipsize">{{#link-to 'articles.show' article.id title=article.title}}{{article.title}}{{/link-to}}</li>
-        {{/each}}
-      </ul>
-    </div>
-    <div class="col-md-3 text-center">
-      <h4>Latest topics</h4>
-      <ul class="list-unstyled">
-        {{#each model.latesttopics as |topic|}}
-          <li class="ellipsize">{{#link-to 'topics.show' topic.id}}{{topic.name}}{{/link-to}}</li>
-        {{/each}}
-      </ul>
-    </div>
-    <div class="col-md-3 text-center">
-      <h4>Latest words</h4>
-      <ul class="list-unstyled">
-        {{#each model.latestwords as |word|}}
-          <li class="ellipsize">{{#link-to 'words.show' word.id}}{{word.id}}{{/link-to}}</li>
-        {{/each}}
-      </ul>
-    </div>
-  </div>
-
-  {{#if search}}
-    <hr>
-    <h4>Search results</h4>
-    <ol>
-      {{#each search as |article|}}
-        <li class="search-result">
-          {{link-to article.title 'articles.show' article.id}}<br>
-          &#9492; <small>{{article.text}}</small>
-        </li>
-      {{/each}}
-    </ol>
-
-  {{/if}}
-
-</div>
\ No newline at end of file
diff --git a/vipra-ui/app/templates/loading.hbs b/vipra-ui/app/templates/loading.hbs
deleted file mode 100644
index 119bd472..00000000
--- a/vipra-ui/app/templates/loading.hbs
+++ /dev/null
@@ -1,4 +0,0 @@
-<div class="center">
-  <div class="loading">
-  </div>
-</div>
\ No newline at end of file
diff --git a/vipra-ui/app/templates/not-found.hbs b/vipra-ui/app/templates/not-found.hbs
deleted file mode 100644
index 4ca64b93..00000000
--- a/vipra-ui/app/templates/not-found.hbs
+++ /dev/null
@@ -1,3 +0,0 @@
-<h1>404 - Not found</h1>
-
-<p>The requested resource was not found on this server</p>
\ No newline at end of file
diff --git a/vipra-ui/app/templates/topics.hbs b/vipra-ui/app/templates/topics.hbs
deleted file mode 100644
index e2147cab..00000000
--- a/vipra-ui/app/templates/topics.hbs
+++ /dev/null
@@ -1 +0,0 @@
-{{outlet}}
\ No newline at end of file
diff --git a/vipra-ui/app/templates/topics/index.hbs b/vipra-ui/app/templates/topics/index.hbs
deleted file mode 100644
index 67ca6107..00000000
--- a/vipra-ui/app/templates/topics/index.hbs
+++ /dev/null
@@ -1,8 +0,0 @@
-<h1>Topics</h1>
-
-{{debounced-input class='form-control' placeholder='Filter' size='50' value=filter debounce='150'}}
-
-<br>
-{{items-list items=model.topics filter=filter route='topics.show'}}
-
-{{pagination-bar total=model.topics.meta.total page=page limit=model.limit}}
\ No newline at end of file
diff --git a/vipra-ui/app/templates/topics/show/edit.hbs b/vipra-ui/app/templates/topics/show/edit.hbs
deleted file mode 100644
index 86d63480..00000000
--- a/vipra-ui/app/templates/topics/show/edit.hbs
+++ /dev/null
@@ -1,9 +0,0 @@
-{{#link-to 'topics.show' model.topic.id}}Back{{/link-to}}
-
-<h2>{{model.topic._name}}</h2>
-
-{{input value=model.topic.name placeholder='Name'}}
-
-<div>
-  <button {{action 'save' model.topic}}>Save</button>
-</div>
\ No newline at end of file
diff --git a/vipra-ui/app/templates/topics/show/index.hbs b/vipra-ui/app/templates/topics/show/index.hbs
deleted file mode 100644
index 4b793c05..00000000
--- a/vipra-ui/app/templates/topics/show/index.hbs
+++ /dev/null
@@ -1,18 +0,0 @@
-<h2>{{model.topic._name}}</h2>
-
-<table class="table table-striped table-bordered table-condensed">
-  <thead>
-    <tr>
-      <th>Word</th>
-      <th>Likeliness</th>
-    </tr>
-  </thead>
-  <tbody>
-    {{#each model.topic.words as |word|}}
-      <tr>
-        <td>{{#link-to 'words.show' word.word}}{{word.word}}{{/link-to}}</td>
-        <td>{{word.likeliness}}</td>
-      </tr>
-    {{/each}}
-  </tbody>
-</table>
\ No newline at end of file
diff --git a/vipra-ui/app/templates/words.hbs b/vipra-ui/app/templates/words.hbs
deleted file mode 100644
index e2147cab..00000000
--- a/vipra-ui/app/templates/words.hbs
+++ /dev/null
@@ -1 +0,0 @@
-{{outlet}}
\ No newline at end of file
diff --git a/vipra-ui/app/templates/words/index.hbs b/vipra-ui/app/templates/words/index.hbs
deleted file mode 100644
index 75321f40..00000000
--- a/vipra-ui/app/templates/words/index.hbs
+++ /dev/null
@@ -1,12 +0,0 @@
-<h1>Words</h1>
-
-<br>
-<p>
-  {{model.words.meta.total}} {{pluralize model.words.meta.total 'Word'}} in the database
-</p>
-
-{{#each model.words as |word|}}
-  {{#link-to 'words.show' word.id}}{{word.id}}{{/link-to}}
-{{/each}}
-
-{{pagination-bar total=model.words.meta.total page=page limit=model.limit}}
\ No newline at end of file
diff --git a/vipra-ui/app/templates/words/show.hbs b/vipra-ui/app/templates/words/show.hbs
deleted file mode 100644
index 2778b0d5..00000000
--- a/vipra-ui/app/templates/words/show.hbs
+++ /dev/null
@@ -1 +0,0 @@
-<h2>{{model.word.id}}</h2>
\ No newline at end of file
diff --git a/vipra-ui/bower.json b/vipra-ui/bower.json
index 15069153..6104b60a 100644
--- a/vipra-ui/bower.json
+++ b/vipra-ui/bower.json
@@ -1,18 +1,26 @@
 {
   "name": "vipra-ui",
+  "authors": [
+    "Eike Cochu <eike@cochu.com>"
+  ],
+  "description": "vipra ui",
+  "main": "",
+  "moduleType": [],
+  "license": "MIT",
+  "homepage": "",
+  "private": true,
+  "ignore": [
+    "**/.*",
+    "node_modules",
+    "bower_components",
+    "test",
+    "tests"
+  ],
   "dependencies": {
-    "ember": "2.3.0",
-    "ember-cli-shims": "0.0.6",
-    "ember-cli-test-loader": "0.2.1",
-    "ember-data": "2.2.1",
-    "ember-load-initializers": "0.1.7",
-    "ember-qunit": "0.4.16",
-    "ember-qunit-notifications": "0.1.0",
-    "ember-resolver": "0.1.20",
-    "jquery": "1.11.3",
-    "loader.js": "ember-cli/loader.js#3.5.0",
-    "qunit": "1.20.0",
-    "highcharts": "4.2.1",
-    "bootstrap": "~3.3.6"
+    "bootstrap": "~3.3.6",
+    "jquery": "^2.2.0",
+    "angular": "^1.4.9",
+    "angular-resource": "^1.4.9",
+    "angular-ui-router": "^0.2.17"
   }
 }
diff --git a/vipra-ui/config/environment.js b/vipra-ui/config/environment.js
deleted file mode 100644
index 01ab460b..00000000
--- a/vipra-ui/config/environment.js
+++ /dev/null
@@ -1,47 +0,0 @@
-/* jshint node: true */
-
-module.exports = function(environment) {
-  var ENV = {
-    modulePrefix: 'vipra-ui',
-    environment: environment,
-    baseURL: '/',
-    locationType: 'auto',
-    EmberENV: {
-      FEATURES: {
-        // Here you can enable experimental features on an ember canary build
-        // e.g. 'with-controller': true
-      }
-    },
-
-    APP: {
-      // Here you can pass flags/options to your application instance
-      // when it is created
-    }
-  };
-
-  if (environment === 'development') {
-    // ENV.APP.LOG_RESOLVER = true;
-    // ENV.APP.LOG_ACTIVE_GENERATION = true;
-    // ENV.APP.LOG_TRANSITIONS = true;
-    // ENV.APP.LOG_TRANSITIONS_INTERNAL = true;
-    // ENV.APP.LOG_VIEW_LOOKUPS = true;
-  }
-
-  if (environment === 'test') {
-    // Testem prefers this...
-    ENV.baseURL = '/';
-    ENV.locationType = 'none';
-
-    // keep test console output quieter
-    ENV.APP.LOG_ACTIVE_GENERATION = false;
-    ENV.APP.LOG_VIEW_LOOKUPS = false;
-
-    ENV.APP.rootElement = '#ember-testing';
-  }
-
-  if (environment === 'production') {
-
-  }
-
-  return ENV;
-};
diff --git a/vipra-ui/css/main.less b/vipra-ui/css/main.less
new file mode 100644
index 00000000..27e5a003
--- /dev/null
+++ b/vipra-ui/css/main.less
@@ -0,0 +1,3 @@
+html, body {
+  background: red;
+}
\ No newline at end of file
diff --git a/vipra-ui/ember-cli-build.js b/vipra-ui/ember-cli-build.js
deleted file mode 100644
index dccfb16e..00000000
--- a/vipra-ui/ember-cli-build.js
+++ /dev/null
@@ -1,26 +0,0 @@
-/*jshint node:true*/
-/* global require, module */
-var EmberApp = require('ember-cli/lib/broccoli/ember-app');
-
-module.exports = function(defaults) {
-  var app = new EmberApp(defaults, {
-    sourcemaps: {
-      enabled: EmberApp.env() !== 'production',
-      extensions: ['js']
-    },
-    sassOptions: {
-      extension: 'scss'
-    }
-  });
-
-  var bootstrapPath = 'bower_components/bootstrap/dist';
-  app.import(bootstrapPath + '/js/bootstrap.js');
-  app.import(bootstrapPath + '/css/bootstrap.css');
-  app.import(bootstrapPath + '/fonts/glyphicons-halflings-regular.eot', { destDir: 'fonts' });
-  app.import(bootstrapPath + '/fonts/glyphicons-halflings-regular.svg', { destDir: 'fonts' });
-  app.import(bootstrapPath + '/fonts/glyphicons-halflings-regular.ttf', { destDir: 'fonts' });
-  app.import(bootstrapPath + '/fonts/glyphicons-halflings-regular.woff', { destDir: 'fonts' });
-  app.import(bootstrapPath + '/fonts/glyphicons-halflings-regular.woff2', { destDir: 'fonts' });
-
-  return app.toTree();
-};
diff --git a/vipra-ui/gulpfile.js b/vipra-ui/gulpfile.js
new file mode 100644
index 00000000..79093a23
--- /dev/null
+++ b/vipra-ui/gulpfile.js
@@ -0,0 +1,27 @@
+var gulp = require('gulp'),
+    less = require('gulp-less'),
+    cssnano = require('gulp-cssnano'),
+    webserver = require('gulp-webserver'),
+    sourcemaps = require('gulp-sourcemaps');
+
+gulp.task('less', function() {
+  gulp.src('css/**/*.less')
+      .pipe(sourcemaps.init())
+      .pipe(less())
+      .pipe(cssnano())
+      .pipe(gulp.dest('css/main.css'));
+});
+
+gulp.task('watch', function() {
+  gulp.watch('css/**/*.less', ['less']);
+});
+
+gulp.task('server', function() {
+  gulp.src('.')
+      .pipe(webserver({
+        livereload: true,
+        open: true,
+        port: 4200,
+        fallback: 'index.html'
+      }));
+});
\ No newline at end of file
diff --git a/vipra-ui/html/index.html b/vipra-ui/html/index.html
new file mode 100644
index 00000000..357dd489
--- /dev/null
+++ b/vipra-ui/html/index.html
@@ -0,0 +1 @@
+Home
\ No newline at end of file
diff --git a/vipra-ui/index.html b/vipra-ui/index.html
new file mode 100644
index 00000000..ecf5817a
--- /dev/null
+++ b/vipra-ui/index.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<html lang="en" ng-app="vipra">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width, initial-scale=1">
+    <title>Vipra</title>
+
+    <!-- stylesheets -->
+    <link href="bower_components/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet">
+
+    <!-- javascript -->
+    <script src="bower_components/jquery/dist/jquery.min.js"></script>
+    <script src="bower_components/bootstrap/dist/js/bootstrap.min.js"></script>
+    <script src="bower_components/angular/angular.min.js"></script>
+    <script src="bower_components/angular-resource/angular-resource.min.js"></script>
+    <script src="bower_components/angular-ui-router/release/angular-ui-router.min.js"></script>
+    <script src="js/app.js"></script>
+    <script src="js/controllers.js"></script>
+    <script src="js/directives.js"></script>
+    <script src="js/services.js"></script>
+  </head>
+  <body>
+    <div ui-view></div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/vipra-ui/js/app.js b/vipra-ui/js/app.js
new file mode 100644
index 00000000..60d74aac
--- /dev/null
+++ b/vipra-ui/js/app.js
@@ -0,0 +1,18 @@
+var app = angular.module('vipra', [
+  'ngResource',
+  'ui.router',
+  'vipra.controllers',
+  'vipra.directives',
+  'vipra.services'
+]);
+
+app.config(function($stateProvider, $urlRouterProvider) {
+
+  $urlRouterProvider.otherwise('/');
+
+  $stateProvider.state('index', {
+    url: '/',
+    templateUrl: 'html/index.html'
+  });
+
+});
\ No newline at end of file
diff --git a/vipra-ui/js/controllers.js b/vipra-ui/js/controllers.js
new file mode 100644
index 00000000..63b99a10
--- /dev/null
+++ b/vipra-ui/js/controllers.js
@@ -0,0 +1,5 @@
+var app = angular.module('vipra.controllers', []);
+
+app.controller('MainCtrl', function($scope) {
+
+});
\ No newline at end of file
diff --git a/vipra-ui/js/directives.js b/vipra-ui/js/directives.js
new file mode 100644
index 00000000..07291e39
--- /dev/null
+++ b/vipra-ui/js/directives.js
@@ -0,0 +1 @@
+var app = angular.module('vipra.directives', []);
\ No newline at end of file
diff --git a/vipra-ui/js/services.js b/vipra-ui/js/services.js
new file mode 100644
index 00000000..998e2cef
--- /dev/null
+++ b/vipra-ui/js/services.js
@@ -0,0 +1 @@
+var app = angular.module('vipra.services', []);
\ No newline at end of file
diff --git a/vipra-ui/package.json b/vipra-ui/package.json
index d1b51b9f..1b966c29 100644
--- a/vipra-ui/package.json
+++ b/vipra-ui/package.json
@@ -1,42 +1,14 @@
 {
   "name": "vipra-ui",
-  "version": "0.0.0",
-  "description": "Small description for vipra-ui goes here",
+  "version": "1.0.0",
+  "description": "vipra ui",
+  "author": "Eike Cochu",
   "private": true,
-  "directories": {
-    "doc": "doc",
-    "test": "tests"
-  },
-  "scripts": {
-    "build": "ember build",
-    "start": "ember server",
-    "test": "ember test"
-  },
-  "repository": "",
-  "engines": {
-    "node": ">= 0.10.0"
-  },
-  "author": "",
-  "license": "MIT",
   "devDependencies": {
-    "broccoli-asset-rev": "^2.2.0",
-    "ember-cli": "1.13.13",
-    "ember-cli-app-version": "^1.0.0",
-    "ember-cli-babel": "^5.1.5",
-    "ember-cli-dependency-checker": "^1.1.0",
-    "ember-cli-htmlbars": "^1.0.1",
-    "ember-cli-htmlbars-inline-precompile": "^0.3.1",
-    "ember-cli-ic-ajax": "0.2.4",
-    "ember-cli-inject-live-reload": "^1.3.1",
-    "ember-cli-qunit": "^1.0.4",
-    "ember-cli-release": "0.2.8",
-    "ember-cli-sass": "5.2.1",
-    "ember-cli-sri": "^1.2.0",
-    "ember-cli-uglify": "^1.2.0",
-    "ember-data": "1.13.15",
-    "ember-disable-proxy-controllers": "^1.0.1",
-    "ember-export-application-global": "^1.0.4",
-    "ember-highcharts": "0.3.0",
-    "ember-wormhole": "0.3.4"
+    "gulp": "^3.9.0",
+    "gulp-cssnano": "^2.1.0",
+    "gulp-less": "^3.0.5",
+    "gulp-sourcemaps": "^1.6.0",
+    "gulp-webserver": "^0.9.1"
   }
 }
diff --git a/vipra-ui/public/android-chrome-144x144.png b/vipra-ui/public/android-chrome-144x144.png
deleted file mode 100644
index a75a06d5e6943aee4c175213f6cf98b03fa3f85c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 7703
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
Q3=9kmp00i_>zopr08&e>YXATM

diff --git a/vipra-ui/public/android-chrome-192x192.png b/vipra-ui/public/android-chrome-192x192.png
deleted file mode 100644
index 38a70604dcb27a9ee3fbf79d71360c5d1bb30def..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 10711
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

diff --git a/vipra-ui/public/android-chrome-36x36.png b/vipra-ui/public/android-chrome-36x36.png
deleted file mode 100644
index fa55583e69edd38b9b9dc4b344610ce40f076014..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1410
zcmeAS@N?(olHy`uVBq!ia0y~yU{C>J4i*Lm25-&)VFm^UmUKs7M+SzC{oH>NSs54@
z6p}rHd>I(3)EF2VS{N99F)%PRykKA`HDF+PmB7GYHG_dcykO3*KpO@I2Bsu$cNd2L
z?fqx=GcYi)mw5WRvft+s6gM{9XUZAJz`&yJ>EamTas2JI=nR=q3HA^FXIgHae$#u_
z?K~eTO<vB8zRJEXni5Vcq_#FG1b%e9IGvR>K1X2X*GpYNxtbXoYhO3t5RZP@%(yyY
z#iONRSKd0mH51QVs<v^r=jPda&(@y%n7G-q%y_oR`?}9&)9?RD-}l*&`A__7(a85L
z9FCdH3~_fB)i?*VG{o>fV}GN#uY3Ce*5)%4x*tjY{~o=0szhXW;ES)Z&kSz!ntM)C
z3EVl|{G&k0!#yP_uU&6Oc}{%gbISPdn$m{r7w11+-&9!dWs*B<{rNJ@>NUSTyY_AU
znKE~u&%`XAC8zagw0A1?Z<+TsHQ@jgyTe1RoLRRP?>V#g((1eO59tIZiMs8%mEI$;
z`dM#ZV0hKB+Qt8$1w7LG7OlX3cd40=hWQt}YxDmtE?hPJI0HjdvA(eBuedn<{w;Hz
z_3F;QX}`9>KsUDNwZQ^~?vmTvKe_L5tWRCG?TgQ%WVv7GnV%W#-SBipwqo6UyEi}g
z*zU3v`xR}L(A<2G?Xyq%t~YkC&tGuS?+*2JQJBep_^ssE^Zu;8;<od1tzVyYY~<ta
z_@vRydbR$vG1vB=EE$HAl}*G`tWU17XDeRVpR#REGn=T@84c}yw=|kr&&n%%mgz51
za+xc(FzWPSm52UKH?5C)7cu@SDi`ZM_(ip4$=$7CN{!VI)VQu5ILS1(g|qsrM}wzS
zh=;%`6()v@EhqQxda*gWubL+!fls~A_laDDcX@eJP2{8}zBj9G@N)lS(rLG0IBEJp
z?bG`xfz`SfPTQ>c!muIXP$whH()RYF5)mJNXla}}m{_^LIgdw`xw~3sM#_Z>p<Ul+
zAH7)Ub0qPy<)n@5Y4i2IE?Kmh>BXDiZwz|{{w<tRAu6IM@Gr}Ie=ozuv)3Q>H@LN2
zJu}t)Y^{oH&$Tntg(imfSlnAF_x$d^#SV4)MPKIL3SPTYv{rZ-)64WVe>qOPFP(RU
zX^RH4R+_GpLQnZB^&fmcoBNDQlXq4YZ~r^vmhtgmuXE?RHS-sJeU|XB;jfV46Xo3H
zM|n&(Jo*ycZeqQs{g(e^rsZ>(RgV6;=^W-X*HNx+%Lla?UzX4EfA=T!ghO=PswGX9
z2Y2sjxAN<ZygRSvo{dINJAd}<Pqp95#G1I<4786um7iVr{jQVTty2dTQ~AGs6iW8B
zN#Ca($GgAsxT%4k==`9=Di=SbJ+-;Gz_B&Z&SJ@tp4`iQAKw|N$=$kd)5av>62PJG
zAYntop_bU6q6@p{EZKYh-L%s)j$NO9d_prHTac7*fx+|lQJh7a*<W6N8^0zc>ez&4
zHnFD;DJ%a5K5vX{($G1fRbH&V?AOz&0tc4rpFO@_*7=^C$oiIVrv2+v@|L?Wyii>*
zBSd<Q<G$EGOFt%5&bqxi=z7ctWd?HwW>yiiQ#$LF8HMgFP}s2G@EwideVe*<*L}LZ
zDef<OREV1TG@AxL1_lPz64!{5l*E!$tK_28#FA77BLhQIT|*;XL-P<LV=GfbD-%m?
z14AnV14HGfcTqIt=BH$)RpQp*P#2rXz`zh*6%tVrlvu7%P?VpRnUkteQdy9ykXcZY
z%)n4F=kX^Vj>0evjZ^-o&v-r!VqjM0)=TCVRu=Z2EW#|T;L>1nIE7hxbBMy}8&^&o
mIdeqj2>a;<j|E<O46nomOFlW7PGw+VVDNPHb6Mw<&;$Su!fby4

diff --git a/vipra-ui/public/android-chrome-48x48.png b/vipra-ui/public/android-chrome-48x48.png
deleted file mode 100644
index 053cc4ed735d16d23ca7f7bfc06b8b419c5da221..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1942
zcmeAS@N?(olHy`uVBq!ia0y~yU@!n-4i*LmhQHi~JPZsBEa{HEjtmSN`?>!lvNA9*
zC?tCX`7$t6sWC7#v@kIIVqjosc)`F>YQVtoDuIE)Y6b&?c)^@qfi?^b3`|Mh?k)`f
z+xyS#XJBApFY)wsWxvlOC~j=H&y+Kcfq~81)5S3);_%xUxjE6{k`42V&ux`eUpM)g
zb++BCY1<YDYaX8a<HnLKo*%+2In0?JIe#SGoMf5VINpjYuyt@<^PN1wre(p}V?PX+
zxZXN8AuKRdYVEdZp|U}fw-(Pj;`=%A_{Za0-(R=<Q{Z!X?Z)7+kKNz@ZTj=7@?7=1
z+W7g|Kk7|53zbiL9=y6*Y+2pXGwdQNtc#LjrAps(+U0(m!5GCDeWtVcRm6|26HBh_
z-<Q(dw8UlZ{iik}H5Yq?s?JZJ=doH`xjlcbg2&7MP7_2<oSr>R?u)$XZ2=ae)oE)h
zBbj7B|88=;+j^*@eC_gG{da;~;-lSz9fK4uGq=kBj#qAy{uTZv;&=2%pA&A(m$G$p
zPTr5(cYAlQL0_rLzsVPOW{WPe{C7$B^nT8F&a2KWd(Ix08@r&TIb1m5qSKjovwz2Y
zY)s&e`kVUsyPMwn&=tp;TB2S={HpvAn(`v&zkXXB@7YO98{Y2JZd?;3s&!+EbL%-z
z!@!%X*w3uZYqz=hY|gzI3YwhD_dl#{4|wrr+WfD3PAau_)fbw4e)=>2nf$rPzxfXz
zKMq<d6}?66)b1}0_ulG!o#**t*P=!R%?*0*R?3*zW^H@ldCxrJP~G<5pT6H!KVz4=
zdgh0l^SW6y=Nhn7>{!ccoP9sh>MY;yiswm(=CB>e3TRNssgKP++%5ao-gDZkC+(;F
zXT80+*!H;9^VC))HfGIc&#Ea4|EIisaVoiL_FsX1;RJ@1=C7;0Z~ryqnEP5jedeo>
z_@4r?w*9p~JifE;JYtmkr>gAKgXGDt<@x6_*XLxZYiUYxF`VA#-M?V*`Xfd+P8?#~
zy!H2T=kybkRQ);A-(H?%^kYi$%oo}jwmJ1}0dF~D>$_DF|4-Jil&_y_^y^XXzrPn3
zJO5YdKl}A~)4|0e^?SE0sowk7ru*^^riuOR){ef%FI${AWqauTA8FT|JyZ7GyW%Nn
z;%Bo~ukoJm47cbhA}6wTzhtzO)?Ki%ssAMR-OC{#uFsy`aIjx2h0RA_%=cX*$E^&;
ziN}wJC@l+53t^rA_2X8lnw>mqU0G%PEh|o%N(p~Etlw(1;|1I6^;ZREL>+r2kadB5
zS~Ig1U&hln|CFWJeJ@`q6uA0p`Pc0ywuq&QeMwl!TA&$p=%~rU?x2u-#*Go@a}+wJ
zhDd$6c1NL!Vf#-uRaPVOCEJ@!Z!Vb}%+`DTlUn0D?fadqnsbd-E_;1ktKRGTLwCQc
z^6hM*502gskX%yy-bvhO=fe5RTJ@gCEjhJi{)+r`XUBZ28m6XN@9$To_n-Xb?ERg+
z+~G;Z{U>fLRr~JBvm83N{r=7Nt2^439H>g4U)(TZ*2|hkqd4CM*L=f+58rJ5m)_cL
z82j(sCwr^uuZ{ox`q91HtNlyd9pC-Zbu(@9vT7ZJ7F<%+Zf`OS?6Y6KuEP4vhTYpg
zlzn$Pq+;=R-<uW{lZhI(Yu_JniNEzLI$KUU_H;1shxy{)mfg?)AAEaf(0co<w!OQj
zuX-1<d-8)-Dw;w<rk5@MCVX9Rv%6D9`cJ8j@55I|gnB=0Oy4dac6!C57iStzNpQK(
z+cJ+|K7an(^+^ncOH)%X+<kAqz}}I?{MYq^>5rbD4D@9!op)8>KYMAbP}u5_%@PWW
zzV9xtEdKUns^&(Xw9S&H)@K;FLe#!JUns6*tP>n-9pEDThpTR5?ytb-?aNGyv`nIZ
zRv3KPm&<!4=5*(~kMFjh-01Z6R^9el4?pV~-~UvX5T$&)eSV+54*wJTsGE=bU+@Vt
zK0J|{ZB@1Iv5$MylgNcV+uvO*6#XA!@J;TI^1H`dTL0VqS^bSWWMjvyu=2^m-<1<A
zCpzuW$jLc%V+Swa{<9yP_rIB;(B7@$GDCoi^Tn-B4)OU54t})NoDl5%Q@vS#ZMVID
zAJ@TGr`uy{Sq&vj*mz&_I%S6n>(!Y5Xj)-%Y`M?czt{PC(}cIFO>p_UULpF}cKN)H
z`wAtwC$4fSE#tSZ^3n~;XxqPW1@{z<q|o+)3)&ZFx5v+Q<#aXqJuzYVe&g)a+r|99
z`|s$~{FTeNGw;eDvG--q-G8(gOuWv<e~+hTFOx!;i1-}7yZ#~17Cml0U*dCz=g(EU
zfGwM5p53zWgXTnK|F6xD*S}0ra^Y0wELf5AK%`u`>FRz?l}Z1<JU@HjKmViqFL#%S
zpW0Hz&cMK+TH+c}l9E`GYL#4+npl#`U}Ruus%vPZYiJ%~WNc+>Xk}ulZD43+U|^{H
z^e&2q-29Zxv`X9>9O_~d85kJCt3o15f)dLW3X1a6GILTDN-7Id6*3D-k{K8(<~;ty
z!%-Nfp>fLp^cl~mK@7~w+<M8}!pg$llSP<?6<iuj4yQ0HZw^s7edEfBBWI4t9AQ7*
e;IY6<kKvWLV96&Z)2R#$3=E#GelF{r5}E)pR*r7~

diff --git a/vipra-ui/public/android-chrome-72x72.png b/vipra-ui/public/android-chrome-72x72.png
deleted file mode 100644
index 98c240493437e4f97f0c6e08d10ab1c174d792f2..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2999
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
GgeCy>0=1q1

diff --git a/vipra-ui/public/android-chrome-96x96.png b/vipra-ui/public/android-chrome-96x96.png
deleted file mode 100644
index 2d2202ca6ba65fba1402708be385110c13ca4606..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 4704
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
TC)2463=9mOu6{1-oD!M<ks_o;

diff --git a/vipra-ui/public/apple-touch-icon-114x114.png b/vipra-ui/public/apple-touch-icon-114x114.png
deleted file mode 100644
index bc2a612c2e7e6a66e1f82d42722943a90e00e25f..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1818
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

diff --git a/vipra-ui/public/apple-touch-icon-120x120.png b/vipra-ui/public/apple-touch-icon-120x120.png
deleted file mode 100644
index fdaabce77f0024103256d92f819694892752aa5a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1895
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
O)u5iPelF{r5}E*ZxLhCr

diff --git a/vipra-ui/public/apple-touch-icon-144x144.png b/vipra-ui/public/apple-touch-icon-144x144.png
deleted file mode 100644
index 1d46bf72898e7a1d57e584e33166b4ab93ad1913..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2304
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
bUV03##05(}IhjrcHEldy{an^LB{Ts5Lm~x|

diff --git a/vipra-ui/public/apple-touch-icon-152x152.png b/vipra-ui/public/apple-touch-icon-152x152.png
deleted file mode 100644
index cf4fe5c4d8e00ade403c398bf6354c66dcb6f419..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2362
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
ZkKvWLV96&Z)2X0Fk*BMl%Q~loCIEz`Eo}e*

diff --git a/vipra-ui/public/apple-touch-icon-180x180.png b/vipra-ui/public/apple-touch-icon-180x180.png
deleted file mode 100644
index 9349bc3006cbeae993227c4247526a2f5331bca3..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2826
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
OBiGZ_&t;ucLK6TTxKRiI

diff --git a/vipra-ui/public/apple-touch-icon-57x57.png b/vipra-ui/public/apple-touch-icon-57x57.png
deleted file mode 100644
index 404609005a57d079d934aeafb60e9f41c777303d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 989
zcmeAS@N?(olHy`uVBq!ia0y~yV6X&X4h9AWhLy#4A{iJMSkfJR9T^xl_H+M9WMyDr
zP)PO&@?~JCQe$9fXklRZ#lXPO@PdJ%)PRBERRRNp)eHs(@q#(K0&N%=7?_g0-CY>|
zxA&jf&%nUIUgGKN%6^|mP~6zyq><$b1_q`kPZ!4!kK=Ezz0Vd(lwm0Nzx@5(mv<jN
zyR~N8(Nu%LsH3M87C$toN)&szdeWskD;!p&-jM!nDCQfcuT+&-$vc_%+M2V679CXB
zTC)A;;?FO)Meeq#zH(1w%lp~SEBD?1{o%lOZvN#?^-`;Jf8O^<%=)n*&e^E#;Dgy-
z(wlyitmtm&Rj9seoV5DWUr8~JzZ<!)=d<2nw`QnX_cUtq9?p(^7k^&eTDx_^jvdS%
z)w@K0CYfjK?Vg=pc+IiN^lpsWcgOQTs)CQCCMr+;e%WA3w%X^i7jss4%|7~JCG$F`
zwaImpc4(PR{H|f7P#Y}u+PM1Nu{s`=_Y8kc;?jOS^a$IPk`n%5vyJ_3;XC&?d@@|x
z=i!}ke)B8+pRZJ3_&!=v!FNV-rT3k`zq}Sr-qAVP(s<5vvG;|J7k4@rFsY00O5|C%
z{%>OHNnW-&J;tvzoHX;IBDolvCkOHhyJzIpM@4cmHcqzjJ-%e-9$js3bBE^1#a0~)
zjy+_w_0y9~Tw)lr^&o@aH2<d3oeN`b@Ex}3JhY(Kbc*APs?MqM76oF`PwZzN&`U@?
z$d=PA7g}?`#?eBv;wr-(pW0o&9Jtph`EkX0RY&npv(j?=l2Fxd5Y&{jLF5{fxaP@A
z@k~|*A2^h+CrXAMx_iLtXO#V_o9<ykJ%KF~O*MG$YT917wK!buXZZQ!wqm>i&7Lh2
z?Gr1fT)koOvQs@XOj&ozQ$M-HB|Jt`{C`N4y}5cZD{c16Hz{rxJ+Hohcq{Ftsr=ko
z=esx_E)hyf4qg|N$9?Ka?yOAqQ%eME-a5=wxmjTypjP_iaM=Q%T?Z^Ce%QFyX{HY^
z!%?9v^-E1P=BJ;!=~%Q-EdS5<e@nJKxj*SXqk-H;oz0DMYZ(|AR7+eVN>UO_QmvAU
zQWHy38H@}JO?3^8bPdfzjEt>J4XsQpv<(cc3=F1+yvsz<kei>9nO2Eg!!ypXs|*Yb
z;Z-3KB|(Yh3I#>^X_+~x3MG{VsS23|CCLm76>}bc;^8O^)6h8OfBKB)(;x<BWp2G>
zZee9%@5v&}!U`@8CWlj)l{bedoW618#E~;cWR9?(Ztz&(rN{6}T(IPmlj&4YzV&qV
Kb6Mw<&;$UXIG-K>

diff --git a/vipra-ui/public/apple-touch-icon-60x60.png b/vipra-ui/public/apple-touch-icon-60x60.png
deleted file mode 100644
index 69090a0b6c4948749effbb3fe956c3caf72b6154..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1025
zcmeAS@N?(olHy`uVBq!ia0y~yV6XvU4h9AW2Kni2>lhdqSkfJR9T^xl_H+M9WMyDr
zP)PO&@?~JCQe$9fXklRZ#lXPO@PdJ%)PRBERRRNp)eHs(@q#(K0zn2bC3(BMF#K=t
zKeL~Kfq}im)7O>#K98WdvB60r%M%O?Ov^l7978;gzrA+WU)WKCt>EAC<=i1RlrHtw
zEJ-pHFck6L;$SKuIx9g*MIc!4w#yW`3kq>AmL4W-LPCb8+6_fi6k=>7ZY}XJ+^ECl
zbn~r+X~6ckMsM4=+3%h9d45uV?#;P#@A4FNoU%A}{6|4W^}_3MHBG0**1XdUl)g8!
zM56SD_PuXWR~n|@u5ifDd$Hqrj-CJR$ggphv41u)8EorkKfFc1^_kq1R|-6Bmk+<^
znt0Vj|7e~2A3f%xUx!{M<Qx7tzW;ICl8Zu5c-(>>i*gsSFRIu6?Oyec{abhtQ=*mX
zw7U<g$}*4NPqj+k{q(lHyy=2CpH^|!E3Fy7S1u~j*zozkly_drKCjl;6Mr3MO9p2f
z*nODW>YMWTfo051m6W%S&h{R8p~y2i$7bd6;#)SR`s%L5Y&&lJ;QX{tKq<=RWZ(*+
zFtc|JmAw;|F1q=|qsSp4X(i{?lKMTmv4NcL6}mgir3*8=*Zn!x=JlejuQQc>)e7$Q
z?jeV6U)X&84(H@sJ&Q&2Tm+^06^>Uk#A!Fr?X~~>!j{4Rh3G^rvDJw`S7trslX!k}
z#uw$!OS3j89N0LQsk(B??~r5WvJZ}PO8?G!S$K0&%{8yunHhHzljrjuVl6o5viEnB
z-wWx)q%3Z?8q)_+kJ9(Odl+cpI>REXUHM5iZ-AXh7jM4rm0}GkWuHCinad~5`#jCv
z_<sH0n}0T%R7{oo9eTN?GdWC7uc48-$amW5u+N^qZW-<p{+@Hp@!MI=D`&q%|JWNI
zS{8YIk;@E=bJs4tRy}7|Y-S#l|9&>dsTPC6Nq@tOB7&;Tgg5L;ox-&KhG~@QJC}WC
ztB){MZHZKUw!<(ttkZvS^tF_!JG`e~|9fxp{C%O1u4Y?Z_?z*4dG_OXpI^l~rkAi?
z+UEZ4^G6AJ#XsVg*uQSP%&Revfq_A_#5JNMC9x#cD!C{%u_Tqj$iUE4*U(7U&^*M*
z*viz<%EUt3z|hLTV0y^AOcV{d`6-!cmAExL;|#mXz`zh*6%tVrlvu7%P?VpRnUkte
zQdy9ykXcZY%)n4F=kX^Vj>0evjZ^-o&v-r!VqjM0)=TCVRu=Z2EW#|T;L>1nIE7hx
sbBMy}8&^&oIdeqj2>a;<j|E<O46nomOFlW7P6g#{Pgg&ebxsLQ06+_|ApigX

diff --git a/vipra-ui/public/apple-touch-icon-72x72.png b/vipra-ui/public/apple-touch-icon-72x72.png
deleted file mode 100644
index 7e41b0928a7ca05b405ed7bce68b8e2099de6e03..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1189
zcmeAS@N?(olHy`uVBq!ia0y~yVDJE84h9AWhJv;?vl$o|SkfJR9T^xl_H+M9WMyDr
zP)PO&@?~JCQe$9fXklRZ#lXPO@PdJ%)PRBERRRNp)eHs(@q#(K0&N%=7?_g0-CY>|
zxA&jf&%nUIUgGKN%6^|mP~6zyq><$b1_ov?PZ!6Kh{JEMzx5Vzlwtqyd;Y%N-(Q3-
zpZ6qqL781kx`(8MhUzyLySWn=YCPrUb`?}K){cK7EIF}LKPOl@z=xMt{@kP;IlNn~
z^UG)3Zi%^T{d^lo(`@toJO7@oyD@Y2%(+)R>sP)|3SjASsORFG&z?88&v@gp7iT7|
z`<c6Tf<f$igT(DGCTqq0zreCH|M*FU<V{C!>8y#_8aG$ua9hhlou7t5vHd$=?!5W&
zUexlLf9&q<6IFYXy`8ab^WD{l&aqCE-<QMM6MFwpQ;n{e!p7$Cm@j-*p8np~4mBKc
z4|I5Ur17=(Qk@yAbgMcxGyn9qj;*r)a%l7HA8}_7-SFeBJjZaZmErTpdn*^G-M+B?
z%J(3Jx+bx#<OKPt+R^;NYgu!h-<y5=(${m@RA2UqAG6d^2X`OV<a@O@9ktgemjtLY
zA6FOJTl(zRSLVp~p$qQ#Gw04_pY_BmKV<E#SrXe6GW*zmCAfbP>5Si0WSdoakMpmv
z)Qb78^K5qcpJjf<`>Nr!$%WVjvsnJCw!80jlyBzY^3Y*_qWRoYSNLl5p5CTjrcdIH
zFO>@ww;A40a69b4m@D2il|9{ZuewKfrM1K?buG4Co+4uAO<QJcJm|vcY2FZ~8S>C)
z!(|8E25%nLQbtRY3kw);)^ND5VadDX;N7{QudN}>|In8nwp(heH(9yduliE3=7Phe
z2EmWUj+_5jKIn5{T|05_>8HHY-d<78>*AC0WYD?mIBD`phq(@{y(*{kueO-4I+?m@
zZn~bgi9q3vM?4CyzELW(=j8@0YD_u4_1wgJs$bs7t0&s98{8MqSkU0S?D6Ufg;S=h
zccgFa-1AQ7?C;80jdq<CB}M@sO_Tqe>$x>2&rjWb(ha})E{uQ6RQ72UXl+Uh-}cq+
zeSN@W@xu%`dg>k`7vh#TxlXz)aX?}kr;FLr(A>{gWuMJ?@S{<ivu!T3wDjcr55r<D
zb~(!iebn8XQzj}Jqm%n$_T7;Gv-use{1$Z7&9}euZ^_~kK3%Vl%WpIm-YhxWCsZ_1
zxXsO-^Qhw0wHE`OboBDFOQu{fOsT*6LSrHK1@jMwyk@ewa~2*?JfY`x`H_a=M)ePj
z%<ezV?c>xeXmy`)W7EtJbN_z{HeqsIP|x<4rBrpzlZ`b62@DJjswJ)wB`Jv|saDBF
zsfi`23`Pcqrn-hkx`yT<M#fgAhE^sP+6IPJ1_skZ-esa_$jwj5OsmAL;TdPxRR#uz
z@T!oAlAy$Lg@U5|w9K4Tg_6pGRE5lfl4J&kiaC!z@o*G|X=t4CKYhmYX%GXmGPhnb
zx3IFX_hb=fVFi~4lfx;@%9}$JPT#n4;>ejJGDp}?H+U@Y(qnifE?Dx($#g2H{PA@4
Kb6Mw<&;$UEhwwE3

diff --git a/vipra-ui/public/apple-touch-icon-76x76.png b/vipra-ui/public/apple-touch-icon-76x76.png
deleted file mode 100644
index 29d14b903247e28ff96f6ea34bf3a38d50f5482e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1227
zcmeAS@N?(olHy`uVBq!ia0y~yVDJH94h9AWhDU$+zB4c|u%tWsIx;Y9?C1WI$jZRL
zppfhl<jcTNrN+R}(89p*i-Ccm;RORjsR0ASs{{rHs~HRo;stYd1==t$Ffb)~ySp&_
zZ|^^|pMimay~NYkmHj@Cpt!NYNh8Y>3=GT#o-U3d5r^O2I2{}mD8W$hZ~1$>v+l2)
z47a9DX$ejGapL(hgG+O_e%L4=ackMz34(=ZmcCe#GwakEHFjsg^i3CfH6+AaZd*>c
zcD4E=gP*bKoU?n2_Z@yOckXrF0-^OAS8zozYA4i-cmI@W-sLs#nRaP2U%ZaI&Yp}_
zi4WEom@Zpdur8uzYq!6#iTCpSAA0^a>N)jWM69pcK6}~vv^BH1+*Hi___yK%dvZk>
zR&W2^8ZX*(e_cA`3bXucH>!kRxh*zUS;=E59hiH$YT69($R5ptm39eE!k3<$<+`2E
z{NPM_@N|n#mGer+AImuWt`m!>5&3#r#+U!<^3H#0hmTe2SoJ+i)bZ<EyP&dW(yQ>K
zvk|ARn%Up^C2M2GIAyI+@<Tla->f}#K4DY%E1T3O^}Wep*mY>hjM?mEYN@@&Z?ikS
z3)Q**C@G57^AyOh?|h<?ZZ#oOAdAu9=m~@UQX1C#D#LFUD%?Kg=Xh4!C}$qqR{2=g
z<fF45J)WUy#Iv?rZcn@2G+W;j+Xbo^*g6arN*`#-kNY6E)J%*)S5WK{qs2wj#5LSn
zTML;&gc1*0AJ}oxw8+1H(UoIo8QfcHSF?)gfABcHIC!a<woX8b?e4knB0qhe79{*>
z-b2ILg2v(|X`(I?^L$^6&X`(ac2uw-PI0m7mr3i4KZ@RBw3gf`yM_5pip0Iy!IB#_
zxvtDkk+3u6S;!N1!l5p!<DF7MtfYas)p;=&r#IEi2ktf`Sv2_F^1C$I%%<ma_rVQ8
z6%2c?Pj@xqi8f*FG1Zdpi@LDbjpM%G4Xur(3sjCuP2_af(U_UJw_?tUDQh21=Ugwg
z*OI+lzqOn_V84m9lHjyWY8R*fXfU~OM$U7Q`(~+_-*GC3&gll;$#I|mn5XYRrI<*8
zL_n6q*1Qgv8}idCvV5OczOtL0eRA`YO<z|Q)`c1Al>b>}6uq%i`hdB}QiraG5?XUD
z?INa~%?=HZI+JnXZoKRK=UYmq7CwxqyA={1osoHD+w(T-tzWml+B)}e@$Dlwx2<XQ
z4zl2R$I9QjWJOF!i&$V_>|)iUEXH&DRgXUN{<LYy3`UJ;xoINWZM)W2Mg;Y+y-k#x
zCK7!3ta)Wb&>P8yf4Ld&EBmI2d|nuD{&bg>mHX>Mi)z<;zJ2=W<D50!w@;dfxQf1f
zzSuJI|DXNrtZN$nuD{{GF7A|_%Ly3~1_lPz64!{5l*E!$tK_28#FA77BLhQIT|*;X
zL-P<LV=GfbD-#QC14AnVgXtmfGEp?-=BH$)RpQq0j5F*i0|P^NRY*ihP-3}4K~a8M
zW=^U?No7H*LS{ipG6O@!oX4MdI10lwG*0=SKI8c`h=Ey|TQ8YgSXtP6vIw)Vf=h$R
x;S^@&%^?b>Z(KQX<jfJ7BkZReJQjHAF}xBNEcxVQIu%q(dAj<!taD0e0szB?{g(g$

diff --git a/vipra-ui/public/apple-touch-icon-precomposed.png b/vipra-ui/public/apple-touch-icon-precomposed.png
deleted file mode 100644
index 4d110e9874af7700780f80bfeec4a287fa6d49b1..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 4249
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
AJOBUy

diff --git a/vipra-ui/public/apple-touch-icon.png b/vipra-ui/public/apple-touch-icon.png
deleted file mode 100644
index 9349bc3006cbeae993227c4247526a2f5331bca3..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2826
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
OBiGZ_&t;ucLK6TTxKRiI

diff --git a/vipra-ui/public/assets/images/squares.gif b/vipra-ui/public/assets/images/squares.gif
deleted file mode 100644
index 15739a5e3e23301ea73683e760f57fcc58b0b275..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 27920
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

diff --git a/vipra-ui/public/browserconfig.xml b/vipra-ui/public/browserconfig.xml
deleted file mode 100644
index 65380f38..00000000
--- a/vipra-ui/public/browserconfig.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<browserconfig>
-  <msapplication>
-    <tile>
-      <square70x70logo src="/mstile-70x70.png"/>
-      <square150x150logo src="/mstile-150x150.png"/>
-      <square310x310logo src="/mstile-310x310.png"/>
-      <wide310x150logo src="/mstile-310x150.png"/>
-      <TileColor>#da532c</TileColor>
-    </tile>
-  </msapplication>
-</browserconfig>
diff --git a/vipra-ui/public/crossdomain.xml b/vipra-ui/public/crossdomain.xml
deleted file mode 100644
index 0c16a7a0..00000000
--- a/vipra-ui/public/crossdomain.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
-<cross-domain-policy>
-  <!-- Read this: www.adobe.com/devnet/articles/crossdomain_policy_file_spec.html -->
-
-  <!-- Most restrictive policy: -->
-  <site-control permitted-cross-domain-policies="none"/>
-
-  <!-- Least restrictive policy: -->
-  <!--
-  <site-control permitted-cross-domain-policies="all"/>
-  <allow-access-from domain="*" to-ports="*" secure="false"/>
-  <allow-http-request-headers-from domain="*" headers="*" secure="false"/>
-  -->
-</cross-domain-policy>
diff --git a/vipra-ui/public/favicon-16x16.png b/vipra-ui/public/favicon-16x16.png
deleted file mode 100644
index 2142db750ebddec14220299d9b135ef67c086a8a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 673
zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4i*LmhONKMUokK+u%tWsIx;Y9?C1WI$jZRL
zppfhl<jcTNrN+R}(89p*i-Ccm;RORjsR0ASs{{rHs~HRo;stYd1==t$Ffb)~ySp&_
zZ|^^|pMimav%n*=n1O*?7=#%aX3ddcU|?V`@$_|Nzt1BmZfv;ElrxTjfzi;@#W6(V
zeCl~y?`TGewui4(*s~2-vSNEKxf(PFOz`>3-LzSXon3R$=4}CmB_G)%xc+|NcDz$s
z5Wph-)Z&JtO@~DU3ww9l0%rq0%WDh1SJ|IG{F_av>q2JCe3`u5AI}!4Wn7RyvvZr$
zv><~eSEty&tWxmbU0J;^>zZ;|#^LJ4WljJ8YVJMuC41BRGqy%`7XIpg#peJ0;&yM+
z>J?QhV*^6JYEHfLBP?vq>Be>rnM0j1FJ?}WP1Uc6`mub?gH>hXru*)${Ufr%!bnHh
zWSTKs?y|`_fu7UXG}mnPjboRb%$0V?<@_(zZA-2v1@|;fDp!kb>5SWucOZVbT1w!?
z+?%Qk`_ptHj5CgG@#qeVSuLQb@$Oe#G_O$X>i_p0G@e^%NSf(>@)ExF>2|OFqF+zE
z<rv#eL<on;KkQ>*U{Eb_jVMV;EJ?LWE=o--No6oHFf`RQG}1LR4>2;fGBva^vD7v&
zv@$R-RDOCFMMG|WN@iLmZVe7~v55=}4B=HF5hX#1<q8Ew`DvLssR|{P1*r;|1trN0
z3>9-8f8yaN4Aam!<$wB&=hGktW@T=@WNu+)VeiQz%)$yT4JL<En3Xq&D4f1=<;0OQ
kM`Vt$pKkD2;HAg#N?fqylauLG1_lNOPgg&ebxsLQ09h0C!T<mO

diff --git a/vipra-ui/public/favicon-194x194.png b/vipra-ui/public/favicon-194x194.png
deleted file mode 100644
index 21aebd21587c3e1e8ead181661abfd5c63b7520f..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 7280
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
My85}Sb4q9e04ZZxYybcN

diff --git a/vipra-ui/public/favicon-32x32.png b/vipra-ui/public/favicon-32x32.png
deleted file mode 100644
index 5f02b4eddf4ea6a56bfcd19c8b61a406f99d9129..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1124
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4i*LmhMUEk>KPaqSkfJR9T^xl_H+M9WCckk
zdj$D1FjT2AFf_C<F#KX*U}$*3z))(y!0;-8fx&791A}<MoLzx73=9lRN#5=*4FB8v
z&+KPlVBjq9h%9Dc;1&j9Muu5)Bp4VN*h@TpUD@yR2#OmU?la|#V_;zV;_2cT;&FWL
zmH3RSsWQhuUjJ;Jo_Fe>BWtC?X70IhKFR3`WlJxdY3kagx%<U2*GVsQI?hB!XzOcf
ziC<CJeM0)R+JvAs;f>nNe^YNy664ZlRX5E(x3tve`JY_{zP9Ps&i3W}=fD50v^#(J
z`%gCGj8>cCEmeoKx=kJ|3huk{d`C>&|CHDna_7CABJwsLzq9hiB+e_VgeAZBzFT6i
z^6?B?<SLuzyxeoHuRcG)&?IWn*{E{s$GX)qz01u{1U*e%@BRB!JDcdE*VdY6<34TK
zqbI*ZYPxg^tLN_6Ph~F(TUA=3c#ruUx$g7qRzmxhvlpMcuH1Av^J8b#?b6e#iYD#4
zRyL2zos}gfp0s|}WxDBP`8oHcoRhR>>ud<`Zz_q%-(Gp|`nvc3yJj@WRqJjzIVWJ+
zg3$GI-2X~wZi`-TY$?=LSb6TZ?1XPAA=@rK<J-%osdqVV_u-`$hLarkzWY@1QgoF~
zgELoSX`dK>ytaP0hK0(;RaX|=t3Ad$@k(Z)g4eR+$r42u7X>x%eB~qI+?=(4<q|_-
zDR16GA?ZCY%g(Lwn!ZL~x_rIcBhL8qhs;))hRsU2v!Tj&OGrxe0?+2lOWDF}``cX>
zE^?gUa*M@1&#2?!g24WabyF0(H=K#8zY%`zl;7{0HL_V+X)7)!?)%#}wJd2X-&&#9
zdnPQ|WISj7lAI4~Hrq|}p88<@t1pvnqt^1(zdrxO{nX>@Exq@SnEj6Ze=c%W?$wt|
zp4V#TZ#5N@I@gmnY2wORK3<!*=L(km3@OZ7;PdGAoGte_CzZU|B>McztIwyOcw}En
zTidgFSB;{%=_RkiEkDi(ZCq;3bJc3AQvI)M>z*9pbuN{%$=<&7-p7eY<+fdN`YJU2
z&#M*9Y)`r-x3<ju_~h<~{6$fDeO8|fZZ6db|8Us1e^%JzsWU&ETtBDyVCzgNrB92l
zYdzYmk#c^;rzwlKw+rt)uF1T;TUhei6UVDze*6CDK5Tj8W*uvoveC_Y@AGK|K{FZa
zBNKNPT9^KQey!ji^Hpw15vx#>Tm}XP)e_f;l9a@fRIB8o)Wnih1|tJQQ(Z$NT|@H_
zBV#L5Ln{+YZ39Cq0|P_lr*}~_<mRVjrd8tB;7}Kv$iTo5UKJ8i5|mi3P*9YgmYI{P
zP*Pcts*qVwlFYzRG3W6o9*)8=4UJR&r_Xpk4Pszc=GIH*7FHJao-D#Ftl-jMayW%q
vd2@)u=^Iy09657D<_P=g29E_^dJM0`1xr3TnNDS3U|{fc^>bP0l+XkKZnEs|

diff --git a/vipra-ui/public/favicon-96x96.png b/vipra-ui/public/favicon-96x96.png
deleted file mode 100644
index db921e4ed2dcd5d09ed8c3feda59dbecdb4f6493..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3394
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

diff --git a/vipra-ui/public/favicon.ico b/vipra-ui/public/favicon.ico
deleted file mode 100644
index 5732db6037b1f85a34fb650544f2c844313a2855..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 15086
zcmZQzU}Rus5D);-3Je)63=C!r3=9ei5dI1Q28MYo3=9SaP`)YygPSM=g9ZZwg8)b!
z14Ntw1Xw@>DmFGY?lv|yzG!T0e8||?*b-HiFwfZ7_=2&qv5~Q{akR0q@it>)V`IX)
z5GtVdMjII!F&Y~iM;aR&?;yntkei|QMi?6#W0+xVY|L$JY%B}K+z6WyERcOrdtqjP
z=<UYF#_dqEL16>JAh9xIV`E8#ZU_s>j4)$kV*_Jj<4eZI#;c8ujeU%bjn$yo*Vx#2
zxv{bFE@NY3J%~;O2{i*`$7N$<<0@lgV-AEYgk@}O%xP?FTnlxt3`7(`LfyO)qz)m9
z$^yw58yhb*Ha2cUmVt)VR%2shKV)%iY-3|%kYCOt%NZLR%Ru8(-PqVz3}g?oJTlwZ
z*chbd4w@KDzpAmZF(@3hk>!!uIP`<!8k7dTp<$U|Y;4SgtPjQp`O(<e_#BK6qm7M?
zOO1_<ml+!y^BNl)M;RL%gUrxEjth{#pyAgF(+8tLX~WpqcqcTDK<)wM4Uk_XKx&|R
z>u|*%RE-`~9^?)$V`F0#r1S$41LYB2kXl?A8W*j`#>VH3jg9X@F^CNkgQpw${|pTI
z{}~v{|1&V`{?EX0ho6Dr&1VLN&wm*hKL250`2G(S|Ng_k@cS<V!=KL#4FA|6<%|LY
z1A_x{IRh$q&>UuLY|L(KY@BUuZ2Z93*!aJ(vGEgQW8-2_c%Uhz2^VVjM`L5-7skfM
z2aJu4pBWn)e={~Vt^v7?CYB-@YHVzL&)C@brLnQGE66@*xdn=kAJDYIj-;IGOlX*c
z$}o5t2+bpKHy9Zi(aa6T#>S6~jg6m!{Eh56dbz>a*tiH9-{*{tjScDT22l9{jpv`B
za%X_t0Lp{)#>U2Exxv`jn9bPOSQuKDg6dQdn+-WE39+GRpJ+Eg%VAJ50o8|_jg5^#
zb>l;5IRavX#6WT;AomfnA0$tN8$f0DSz}}4uh9DJH8lVHH8wW>04=*f<rk<t0f~Xi
zv$w{^#tT7hAtNIrMvy)DFg`aJ85yxa>v52|ApF$W*m$n7u`#G!VrXn^tO&&*Hb@L4
z2T}u43(9Ay#DoPlHy9fmGaDNlgW5P>jE#-I8yg$X2enl|;<)?+l7p%NsRii)g<FNO
zu`w$yJuq>o8$k6TC{3OQwMmSPjXxP18-v0&ACzxkY6;OGwZ_KA1yH>pH>48M1CmE_
z1E@au2laQpk&zKINS+i7(gSq^$UmUCFd|03v9U2fG_8T+a307n#OTAO2Ba4nZy>Wk
zaY8VUf-;z~u`wu}gX%?nZ03?825kd_%z9;PY-~+Pud%UlB{YwL(lXXI8zD20<&BJt
zn2e2$LE#7rgDzw_bT%lR8XFsLgxVj8E>A8W+MfZXr&IXMfR?GC{sJh?6O~@@nFo^t
zl|{zJ#_x@djo-n<u+h-+9MmoYl_5$XHO9uqJjTYxK_D8$CkGoF8!H(b8$UKSHvWfC
zKeVlS-`Lm~*?v%80Mt%X!>1RY90~S=>M@k?ht@lwcDyS-JMhVo5dN%4=`RXqCbSOd
zH#9UPSf9Z3Ak)zP3n=}aL>9-!M#_JnJOeKGpk?|AV`F1yY<lpCLCZmqS)lyaiBBy^
z&e+%(RDZvLw#yAbVjyg6Y@A|jY<%3<*w_h_r$J)GU{cE;BO@bF9DvG7kb4)v`X$E3
z#-O?w<c5>R#>Nw&?RQXro(GpZKzfahjX`FB%mRf0!SWYm7Bszp+BTrNqYzZDg2X}X
z31eepU1)j$rAbgbJ`f~_jzM~ijg3KiL1uu=LTT%wt4HTU!y8n0g32P0Ih-&xP<Md(
z#h|>2;eV*VL3%)XL1rYw^b$)$%i?llV`EVJ1JpMHwW&bkDd04T%^awoL25v1L3%)X
zL1qwaf8a0=lopbWjg3L!2Z}>bzXg;wK;r?Rwjroo17Q#wBnFZLsR5}4=>h2_%Wjx^
zpkWR26Da+F>Sd7GptdG*`xC?liGk!mYCviYKzd>3P)dW^k;cZxR>sE0oyNw-pgi!-
z*w`3kCkTVsATf{}NDa<(e*FLc|IPpZ|F``A|G&-u|Nrgk|NozF|NsB_`TzevKmY&#
z=jV<8e|})F|MQ_v{$Jt${{QU%pa1Xw|M`Fa|BwIY|Nr@a{{J8U?f?IQW9$Ea{)4dP
z|3Cld{{QiR-v6Kf`|UseKi~iP|MUOP|9|}7|Nlpw{Qo};_W%Dg{0EJPf(n%c<Z%iW
z?4bi~e}l%i_CnJks0;<Q_a}ks6zsYNhbXk%%``SP29>3tbb*XP{x||E*9V7dF<k*2
zR|K^gLGA|S<2}&vxa**H1hkC?>L*a#M#Z$9auH)=<K0j<g37;KBO@bDP<{lZ8)IYR
zwNN>b-v*^0pnWfp`#@<QrHnT=HkL3pHeNHB{a|ct{0Hj371-JfgWV6%aWYW&-vEvK
zVoQ;O*$>9X#uJe8DQNyfd?@(=I<5k0UxDHPR9=GSQihrz^o@;;LE~3L*$<$xtx-Q<
z%RCGW44|?N)HgRaHWoKFHkN~85Ss@iheI35!k}?#YNaLU{Gu6jd~C6?vGGx3V`ES`
z2O4_-_5VS2Jg9vFk^_z7nS=C@>}WI%P(Pf3)(fQO=~KqW#&*zoKv3Nd8czY`D`GH6
zEl3ZjKOl<cERwj;{w%S6kTf<nUWHT+gT|&o{Xt|mgTetc-U*tM0`*xy7{msNf#i_Y
z{)YC!Ln)afBGC_^AxY5K5wbf#?gELeFg7;MF*Y`KG&VK{&CMzp8ykZ#hz$}0$$`{>
z)PnTD%mB3~rx_a?OOX`#NQ#N^19Wa0G)D{SBf;#xZES2@4VA;P5(CK+1_lP`xC3a8
z9Ha-N7iJE~KcF_TCaMnNdHDPQbss1X!t4X3hdH46XX0%@RSD8-Y-|iN12i`PGZ!?b
zLrp(`;v3Xo2Cbif*#YVUfzkrTIto-566Qh2)N|4LRiM00t+WJcw}SE@D6fIs4|019
zHOq34S;of3v1on(<p;9oebLeq$lV|eisu|qzlU(hlBNP=rm?XxC>}s|fb0V0=}^*4
zK~-&RZ0rCUBZt-xATvQ}mEtsmY72sAWMsqv%?}{EKp0dHl3hPQ>!x2&_k+p`&~OLB
zLK?7)jg2*ojg3Kef!q&Dvq|Jw1FGMl>t#UZfN%{t=8&TYy7mKPCkTVeYhF^#F*Y^^
zwP!%%U?4L<^$po&8X0zLLg!aNc7w_bTQbZ5&9Q>?gYZhw*cYj0kgFbKm$9)isDA~r
z8&t2=kzy9KEC7x9g7kxME-Ct{q1M>gI1ifdK=yAZ#Y|}X{V-HNsGcQxo`n?qu&D*j
z?LgPXfZTr%n;KkV(7wktsQW=<b|~xhK=A{rb8zXWhPbh@v9__XG01L^`#+OnCUo8t
z)b9Z41<lnfBI`FcHuf|&Htq$@1tN=6lMNkj0ND+4!(UR&hPofLt_-9XWCptXL2KJU
zbMW9fT~f>@RxO3@2dxpsnSP9ojnkp)ZA^)E52@;mjg56ENI#(UojCKav9Yl|bUc;h
zc`#!AftG*o5~~lS4m7U}U9$vAKOme35{F@9V`CBM`tA*&HVaIgnlxJZxs6n_jg5_w
z>#tRyd0b>OpnWdTe55C`I5pTHyP*ASP}qU$uUb;g#nOJzLN)_Bt^-<Q51NOUN0y_M
z4edLF=CwfXC%63o$^)P|X^<Hpj8TU}*II+j-(+lTOf^3k8ykbxje+b0VNkyhWxj&g
z@G&+vPBb<)2DM>9=G-whHb!Z~f$A`0W8)-aV`I=b3TVC)R4<U-X9BqkWQVb_F~}~E
zoglkGQ<ESmlCiO|u_$yb4P+JwgXV$Z^Y$PEp?(0(X@b_dd^R>V2E_$vT*}ng*jSmA
zIu1I|53&Pf7YKvK3q(Nnkc*9tjYFVwtswJ2eLK+lJB)Q;&^iw^CIZ^C0`doF4jfef
z_kh|PgzSfg1E|aZ*#WW(WJWL{eT3wp^W;;YZ6T1kptKSXvJYJ^$eqx#6*R7x2JMHq
zqpL&bgZ45Q8ym-?^;M@B85!Z6cSkn^A0N7R0kk&-<bDta`2iGGC}|0w8Mx%2X$E8#
ztgi$zA7mHCUK(6x5F-xlmxB7!AoD>O6wjdb8KC|u$?K?~aRusUfy@Az1u_$aL3Yrj
zpAGc`C~QD=3dk-H2JPVht(yjoaS~ix0$oP~QVY@p(hD*Jgh6J4%%+LkVQ~aaOQ8G!
z8lM5#3&J3~L2LX#^MatX-~w%bf!5N1FsLmC5(CMB)PU52^nmn&Fvu*BnN&?PFgK&q
zps{XaW8+|G*$OJ7L2iIykh?(X0krN0)b9sj5E~>0l7p!O(ICB`^a3)AqIv_}jl}Sw
zWesQ_6R3^^)x+rS1Gy0$gVcc3g7kpO9E!?!V%$kc4Ya>(1Kmdf+UEtTKS687L1U*N
z3}S=CKyskI4@fOZZGs2?L4bkbKs|(Ru!qoc@(@~{A4<1F>BA73{~?5K{{W#6{{R`l
z!0_-7$N&b05C1?0Ffjb6=RaWopMl|zeH#P&e+Gts@&_0g|1&WB=YL>-pq_!@fBV7z
zKkOM8{vU4s|3{vI;r~Pa|Nr?J82*2d|Np<8f#LrT`~UxsGcf!InR^&S*Z=?j7$pAx
z|NoCz=#T&Z|Np_j@E?Qz4i(2me}>5a_zgApCzSpJq5ss?gYEreFaICpj(_$C!R`Y2
k6XeeSP<Q`_`r|*;U;m;0{Qm>u@Bjb6;qd?ee{i?}0Jt7B{r~^~

diff --git a/vipra-ui/public/manifest.json b/vipra-ui/public/manifest.json
deleted file mode 100644
index fd248ba8..00000000
--- a/vipra-ui/public/manifest.json
+++ /dev/null
@@ -1,41 +0,0 @@
-{
-	"name": "Vipra",
-	"icons": [
-		{
-			"src": "\/android-chrome-36x36.png",
-			"sizes": "36x36",
-			"type": "image\/png",
-			"density": 0.75
-		},
-		{
-			"src": "\/android-chrome-48x48.png",
-			"sizes": "48x48",
-			"type": "image\/png",
-			"density": 1
-		},
-		{
-			"src": "\/android-chrome-72x72.png",
-			"sizes": "72x72",
-			"type": "image\/png",
-			"density": 1.5
-		},
-		{
-			"src": "\/android-chrome-96x96.png",
-			"sizes": "96x96",
-			"type": "image\/png",
-			"density": 2
-		},
-		{
-			"src": "\/android-chrome-144x144.png",
-			"sizes": "144x144",
-			"type": "image\/png",
-			"density": 3
-		},
-		{
-			"src": "\/android-chrome-192x192.png",
-			"sizes": "192x192",
-			"type": "image\/png",
-			"density": 4
-		}
-	]
-}
diff --git a/vipra-ui/public/mstile-144x144.png b/vipra-ui/public/mstile-144x144.png
deleted file mode 100644
index f8bbf5181ec917852ccc7d485261c378ccbc7585..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 4665
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

diff --git a/vipra-ui/public/mstile-150x150.png b/vipra-ui/public/mstile-150x150.png
deleted file mode 100644
index 695de5e588f6771411672a7ab77d11ff9f7b19c0..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 4592
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

diff --git a/vipra-ui/public/mstile-310x150.png b/vipra-ui/public/mstile-310x150.png
deleted file mode 100644
index 31d0d95b73f37cb775eaa1fbe11152400f961d5f..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 4923
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
O0>;zT&t;ucLK6UsLk{%-

diff --git a/vipra-ui/public/mstile-310x310.png b/vipra-ui/public/mstile-310x310.png
deleted file mode 100644
index 632930e827817f36965e2402748adef9b9311d96..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 10210
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

diff --git a/vipra-ui/public/mstile-70x70.png b/vipra-ui/public/mstile-70x70.png
deleted file mode 100644
index e6ece63cb1b9caa78fc2cebb370e07d9f2e5db04..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3220
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

diff --git a/vipra-ui/public/robots.txt b/vipra-ui/public/robots.txt
deleted file mode 100644
index f5916452..00000000
--- a/vipra-ui/public/robots.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-# http://www.robotstxt.org
-User-agent: *
-Disallow:
diff --git a/vipra-ui/public/safari-pinned-tab.svg b/vipra-ui/public/safari-pinned-tab.svg
deleted file mode 100644
index 93d972a5..00000000
--- a/vipra-ui/public/safari-pinned-tab.svg
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
- "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
-<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
- width="512.000000pt" height="512.000000pt" viewBox="0 0 512.000000 512.000000"
- preserveAspectRatio="xMidYMid meet">
-<metadata>
-Created by potrace 1.11, written by Peter Selinger 2001-2013
-</metadata>
-<g transform="translate(0.000000,512.000000) scale(0.100000,-0.100000)"
-fill="#000000" stroke="none">
-<path d="M3010 5110 c-129 -17 -159 -22 -240 -40 -112 -26 -104 -24 -196 -55
--184 -63 -388 -173 -539 -289 -82 -64 -103 -83 -202 -183 -298 -302 -477 -668
--537 -1098 -14 -100 -15 -399 -1 -495 28 -199 96 -426 177 -586 l31 -61 -691
--692 c-559 -559 -700 -705 -731 -759 -167 -282 -60 -647 233 -791 188 -93 409
--76 576 42 14 10 337 329 718 709 l692 691 98 -46 c170 -80 379 -140 569 -165
-73 -9 367 -9 453 0 266 28 570 135 800 281 169 107 372 290 487 437 213 274
-356 613 399 945 9 72 11 387 3 458 -39 336 -165 653 -374 938 -63 87 -237 269
--320 336 -155 126 -414 270 -586 327 -107 35 -259 72 -359 86 -97 14 -377 20
--460 10z m455 -333 c391 -73 703 -251 961 -552 127 -147 236 -347 298 -544 58
--185 75 -314 71 -526 -4 -161 -6 -176 -36 -305 -43 -185 -95 -316 -188 -472
--233 -392 -621 -661 -1085 -754 -101 -20 -394 -26 -506 -11 -237 33 -509 142
--709 285 -122 86 -288 252 -373 372 -121 171 -223 403 -262 596 -8 43 -18 93
--21 109 -21 104 -8 467 20 554 3 11 8 31 10 43 3 13 15 59 29 103 147 483 534
-879 1016 1039 58 19 116 37 130 40 14 2 50 10 80 16 30 6 80 13 110 17 30 3
-57 7 58 9 10 8 329 -7 397 -19z m-1730 -2814 c70 -85 212 -223 279 -271 20
--14 36 -28 36 -32 0 -10 -1285 -1295 -1325 -1326 -45 -34 -120 -54 -183 -49
--100 7 -191 72 -235 165 -31 65 -29 168 4 235 19 38 177 203 680 707 360 361
-659 657 664 657 6 0 42 -39 80 -86z"/>
-<path d="M2995 4299 c-351 -67 -642 -288 -800 -607 -39 -80 -80 -197 -89 -256
--4 -21 -8 -42 -11 -46 -3 -4 -8 -55 -11 -113 -6 -104 -6 -106 19 -131 45 -45
-119 -27 131 32 3 15 8 59 11 99 17 273 178 553 408 712 78 53 219 119 293 136
-10 2 37 9 59 14 45 10 130 20 188 21 72 0 110 74 67 130 -17 23 -26 25 -97 26
--43 0 -118 -7 -168 -17z"/>
-</g>
-</svg>
diff --git a/vipra-ui/testem.json b/vipra-ui/testem.json
deleted file mode 100644
index 0f35392c..00000000
--- a/vipra-ui/testem.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "framework": "qunit",
-  "test_page": "tests/index.html?hidepassed",
-  "disable_watching": true,
-  "launch_in_ci": [
-    "PhantomJS"
-  ],
-  "launch_in_dev": [
-    "PhantomJS",
-    "Chrome"
-  ]
-}
diff --git a/vipra-ui/tests/.jshintrc b/vipra-ui/tests/.jshintrc
deleted file mode 100644
index 6ec0b7c1..00000000
--- a/vipra-ui/tests/.jshintrc
+++ /dev/null
@@ -1,52 +0,0 @@
-{
-  "predef": [
-    "document",
-    "window",
-    "location",
-    "setTimeout",
-    "$",
-    "-Promise",
-    "define",
-    "console",
-    "visit",
-    "exists",
-    "fillIn",
-    "click",
-    "keyEvent",
-    "triggerEvent",
-    "find",
-    "findWithAssert",
-    "wait",
-    "DS",
-    "andThen",
-    "currentURL",
-    "currentPath",
-    "currentRouteName"
-  ],
-  "node": false,
-  "browser": false,
-  "boss": true,
-  "curly": true,
-  "debug": false,
-  "devel": false,
-  "eqeqeq": true,
-  "evil": true,
-  "forin": false,
-  "immed": false,
-  "laxbreak": false,
-  "newcap": true,
-  "noarg": true,
-  "noempty": false,
-  "nonew": false,
-  "nomen": false,
-  "onevar": false,
-  "plusplus": false,
-  "regexp": false,
-  "undef": true,
-  "sub": true,
-  "strict": false,
-  "white": false,
-  "eqnull": true,
-  "esnext": true,
-  "unused": true
-}
diff --git a/vipra-ui/tests/helpers/destroy-app.js b/vipra-ui/tests/helpers/destroy-app.js
deleted file mode 100644
index c3d4d1ab..00000000
--- a/vipra-ui/tests/helpers/destroy-app.js
+++ /dev/null
@@ -1,5 +0,0 @@
-import Ember from 'ember';
-
-export default function destroyApp(application) {
-  Ember.run(application, 'destroy');
-}
diff --git a/vipra-ui/tests/helpers/module-for-acceptance.js b/vipra-ui/tests/helpers/module-for-acceptance.js
deleted file mode 100644
index ed23003d..00000000
--- a/vipra-ui/tests/helpers/module-for-acceptance.js
+++ /dev/null
@@ -1,23 +0,0 @@
-import { module } from 'qunit';
-import startApp from '../helpers/start-app';
-import destroyApp from '../helpers/destroy-app';
-
-export default function(name, options = {}) {
-  module(name, {
-    beforeEach() {
-      this.application = startApp();
-
-      if (options.beforeEach) {
-        options.beforeEach.apply(this, arguments);
-      }
-    },
-
-    afterEach() {
-      destroyApp(this.application);
-
-      if (options.afterEach) {
-        options.afterEach.apply(this, arguments);
-      }
-    }
-  });
-}
diff --git a/vipra-ui/tests/helpers/resolver.js b/vipra-ui/tests/helpers/resolver.js
deleted file mode 100644
index ebfb4e4d..00000000
--- a/vipra-ui/tests/helpers/resolver.js
+++ /dev/null
@@ -1,11 +0,0 @@
-import Resolver from 'ember/resolver';
-import config from '../../config/environment';
-
-const resolver = Resolver.create();
-
-resolver.namespace = {
-  modulePrefix: config.modulePrefix,
-  podModulePrefix: config.podModulePrefix
-};
-
-export default resolver;
diff --git a/vipra-ui/tests/helpers/start-app.js b/vipra-ui/tests/helpers/start-app.js
deleted file mode 100644
index e098f1d5..00000000
--- a/vipra-ui/tests/helpers/start-app.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import Ember from 'ember';
-import Application from '../../app';
-import config from '../../config/environment';
-
-export default function startApp(attrs) {
-  let application;
-
-  let attributes = Ember.merge({}, config.APP);
-  attributes = Ember.merge(attributes, attrs); // use defaults, but you can override;
-
-  Ember.run(() => {
-    application = Application.create(attributes);
-    application.setupForTesting();
-    application.injectTestHelpers();
-  });
-
-  return application;
-}
diff --git a/vipra-ui/tests/index.html b/vipra-ui/tests/index.html
deleted file mode 100644
index ffe2debf..00000000
--- a/vipra-ui/tests/index.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE html>
-<html>
-  <head>
-    <meta charset="utf-8">
-    <meta http-equiv="X-UA-Compatible" content="IE=edge">
-    <title>VipraUi Tests</title>
-    <meta name="description" content="">
-    <meta name="viewport" content="width=device-width, initial-scale=1">
-
-    {{content-for 'head'}}
-    {{content-for 'test-head'}}
-
-    <link rel="stylesheet" href="assets/vendor.css">
-    <link rel="stylesheet" href="assets/vipra-ui.css">
-    <link rel="stylesheet" href="assets/test-support.css">
-
-    {{content-for 'head-footer'}}
-    {{content-for 'test-head-footer'}}
-  </head>
-  <body>
-    {{content-for 'body'}}
-    {{content-for 'test-body'}}
-
-    <script src="assets/vendor.js"></script>
-    <script src="assets/test-support.js"></script>
-    <script src="assets/vipra-ui.js"></script>
-    <script src="testem.js" integrity=""></script>
-    <script src="assets/tests.js"></script>
-    <script src="assets/test-loader.js"></script>
-
-    {{content-for 'body-footer'}}
-    {{content-for 'test-body-footer'}}
-  </body>
-</html>
diff --git a/vipra-ui/tests/integration/.gitkeep b/vipra-ui/tests/integration/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/vipra-ui/tests/integration/components/debounced-input-test.js b/vipra-ui/tests/integration/components/debounced-input-test.js
deleted file mode 100644
index 323028be..00000000
--- a/vipra-ui/tests/integration/components/debounced-input-test.js
+++ /dev/null
@@ -1,25 +0,0 @@
-import { moduleForComponent, test } from 'ember-qunit';
-import hbs from 'htmlbars-inline-precompile';
-
-moduleForComponent('debounced-input', 'Integration | Component | debounced input', {
-  integration: true
-});
-
-test('it renders', function(assert) {
-  
-  // Set any properties with this.set('myProperty', 'value');
-  // Handle any actions with this.on('myAction', function(val) { ... });" + EOL + EOL +
-
-  this.render(hbs`{{debounced-input}}`);
-
-  assert.equal(this.$().text().trim(), '');
-
-  // Template block usage:" + EOL +
-  this.render(hbs`
-    {{#debounced-input}}
-      template block text
-    {{/debounced-input}}
-  `);
-
-  assert.equal(this.$().text().trim(), 'template block text');
-});
diff --git a/vipra-ui/tests/integration/components/dynamic-high-charts-test.js b/vipra-ui/tests/integration/components/dynamic-high-charts-test.js
deleted file mode 100644
index 07810b85..00000000
--- a/vipra-ui/tests/integration/components/dynamic-high-charts-test.js
+++ /dev/null
@@ -1,25 +0,0 @@
-import { moduleForComponent, test } from 'ember-qunit';
-import hbs from 'htmlbars-inline-precompile';
-
-moduleForComponent('dynamic-high-charts', 'Integration | Component | dynamic high charts', {
-  integration: true
-});
-
-test('it renders', function(assert) {
-  
-  // Set any properties with this.set('myProperty', 'value');
-  // Handle any actions with this.on('myAction', function(val) { ... });" + EOL + EOL +
-
-  this.render(hbs`{{dynamic-high-charts}}`);
-
-  assert.equal(this.$().text().trim(), '');
-
-  // Template block usage:" + EOL +
-  this.render(hbs`
-    {{#dynamic-high-charts}}
-      template block text
-    {{/dynamic-high-charts}}
-  `);
-
-  assert.equal(this.$().text().trim(), 'template block text');
-});
diff --git a/vipra-ui/tests/integration/components/item-list-test.js b/vipra-ui/tests/integration/components/item-list-test.js
deleted file mode 100644
index bcc52965..00000000
--- a/vipra-ui/tests/integration/components/item-list-test.js
+++ /dev/null
@@ -1,25 +0,0 @@
-import { moduleForComponent, test } from 'ember-qunit';
-import hbs from 'htmlbars-inline-precompile';
-
-moduleForComponent('article-list', 'Integration | Component | article list', {
-  integration: true
-});
-
-test('it renders', function(assert) {
-  
-  // Set any properties with this.set('myProperty', 'value');
-  // Handle any actions with this.on('myAction', function(val) { ... });" + EOL + EOL +
-
-  this.render(hbs`{{article-list}}`);
-
-  assert.equal(this.$().text().trim(), '');
-
-  // Template block usage:" + EOL +
-  this.render(hbs`
-    {{#article-list}}
-      template block text
-    {{/article-list}}
-  `);
-
-  assert.equal(this.$().text().trim(), 'template block text');
-});
diff --git a/vipra-ui/tests/integration/components/pagination-bar-test.js b/vipra-ui/tests/integration/components/pagination-bar-test.js
deleted file mode 100644
index d61ba100..00000000
--- a/vipra-ui/tests/integration/components/pagination-bar-test.js
+++ /dev/null
@@ -1,25 +0,0 @@
-import { moduleForComponent, test } from 'ember-qunit';
-import hbs from 'htmlbars-inline-precompile';
-
-moduleForComponent('pagination-bar', 'Integration | Component | pagination bar', {
-  integration: true
-});
-
-test('it renders', function(assert) {
-  
-  // Set any properties with this.set('myProperty', 'value');
-  // Handle any actions with this.on('myAction', function(val) { ... });" + EOL + EOL +
-
-  this.render(hbs`{{pagination-bar}}`);
-
-  assert.equal(this.$().text().trim(), '');
-
-  // Template block usage:" + EOL +
-  this.render(hbs`
-    {{#pagination-bar}}
-      template block text
-    {{/pagination-bar}}
-  `);
-
-  assert.equal(this.$().text().trim(), 'template block text');
-});
diff --git a/vipra-ui/tests/integration/components/scroll-top-test.js b/vipra-ui/tests/integration/components/scroll-top-test.js
deleted file mode 100644
index 26cf1dc6..00000000
--- a/vipra-ui/tests/integration/components/scroll-top-test.js
+++ /dev/null
@@ -1,25 +0,0 @@
-import { moduleForComponent, test } from 'ember-qunit';
-import hbs from 'htmlbars-inline-precompile';
-
-moduleForComponent('scroll-top', 'Integration | Component | scroll top', {
-  integration: true
-});
-
-test('it renders', function(assert) {
-  
-  // Set any properties with this.set('myProperty', 'value');
-  // Handle any actions with this.on('myAction', function(val) { ... });" + EOL + EOL +
-
-  this.render(hbs`{{scroll-top}}`);
-
-  assert.equal(this.$().text().trim(), '');
-
-  // Template block usage:" + EOL +
-  this.render(hbs`
-    {{#scroll-top}}
-      template block text
-    {{/scroll-top}}
-  `);
-
-  assert.equal(this.$().text().trim(), 'template block text');
-});
diff --git a/vipra-ui/tests/integration/components/text-marker-test.js b/vipra-ui/tests/integration/components/text-marker-test.js
deleted file mode 100644
index 1af17c61..00000000
--- a/vipra-ui/tests/integration/components/text-marker-test.js
+++ /dev/null
@@ -1,25 +0,0 @@
-import { moduleForComponent, test } from 'ember-qunit';
-import hbs from 'htmlbars-inline-precompile';
-
-moduleForComponent('text-marker', 'Integration | Component | text marker', {
-  integration: true
-});
-
-test('it renders', function(assert) {
-  
-  // Set any properties with this.set('myProperty', 'value');
-  // Handle any actions with this.on('myAction', function(val) { ... });" + EOL + EOL +
-
-  this.render(hbs`{{text-marker}}`);
-
-  assert.equal(this.$().text().trim(), '');
-
-  // Template block usage:" + EOL +
-  this.render(hbs`
-    {{#text-marker}}
-      template block text
-    {{/text-marker}}
-  `);
-
-  assert.equal(this.$().text().trim(), 'template block text');
-});
diff --git a/vipra-ui/tests/integration/components/topic-link-test.js b/vipra-ui/tests/integration/components/topic-link-test.js
deleted file mode 100644
index d3ea4cf9..00000000
--- a/vipra-ui/tests/integration/components/topic-link-test.js
+++ /dev/null
@@ -1,25 +0,0 @@
-import { moduleForComponent, test } from 'ember-qunit';
-import hbs from 'htmlbars-inline-precompile';
-
-moduleForComponent('topic-link', 'Integration | Component | topic link', {
-  integration: true
-});
-
-test('it renders', function(assert) {
-  
-  // Set any properties with this.set('myProperty', 'value');
-  // Handle any actions with this.on('myAction', function(val) { ... });" + EOL + EOL +
-
-  this.render(hbs`{{topic-link}}`);
-
-  assert.equal(this.$().text().trim(), '');
-
-  // Template block usage:" + EOL +
-  this.render(hbs`
-    {{#topic-link}}
-      template block text
-    {{/topic-link}}
-  `);
-
-  assert.equal(this.$().text().trim(), 'template block text');
-});
diff --git a/vipra-ui/tests/test-helper.js b/vipra-ui/tests/test-helper.js
deleted file mode 100644
index e6cfb70f..00000000
--- a/vipra-ui/tests/test-helper.js
+++ /dev/null
@@ -1,6 +0,0 @@
-import resolver from './helpers/resolver';
-import {
-  setResolver
-} from 'ember-qunit';
-
-setResolver(resolver);
diff --git a/vipra-ui/tests/unit/.gitkeep b/vipra-ui/tests/unit/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/vipra-ui/tests/unit/adapters/application-test.js b/vipra-ui/tests/unit/adapters/application-test.js
deleted file mode 100644
index f0a2101e..00000000
--- a/vipra-ui/tests/unit/adapters/application-test.js
+++ /dev/null
@@ -1,12 +0,0 @@
-import { moduleFor, test } from 'ember-qunit';
-
-moduleFor('adapter:application', 'Unit | Adapter | application', {
-  // Specify the other units that are required for this test.
-  // needs: ['serializer:foo']
-});
-
-// Replace this with your real tests.
-test('it exists', function(assert) {
-  let adapter = this.subject();
-  assert.ok(adapter);
-});
diff --git a/vipra-ui/tests/unit/controllers/articles-test.js b/vipra-ui/tests/unit/controllers/articles-test.js
deleted file mode 100644
index 2f09e3a9..00000000
--- a/vipra-ui/tests/unit/controllers/articles-test.js
+++ /dev/null
@@ -1,12 +0,0 @@
-import { moduleFor, test } from 'ember-qunit';
-
-moduleFor('controller:articles', 'Unit | Controller | articles', {
-  // Specify the other units that are required for this test.
-  // needs: ['controller:foo']
-});
-
-// Replace this with your real tests.
-test('it exists', function(assert) {
-  let controller = this.subject();
-  assert.ok(controller);
-});
diff --git a/vipra-ui/tests/unit/controllers/words-test.js b/vipra-ui/tests/unit/controllers/words-test.js
deleted file mode 100644
index f4014164..00000000
--- a/vipra-ui/tests/unit/controllers/words-test.js
+++ /dev/null
@@ -1,12 +0,0 @@
-import { moduleFor, test } from 'ember-qunit';
-
-moduleFor('controller:words', 'Unit | Controller | words', {
-  // Specify the other units that are required for this test.
-  // needs: ['controller:foo']
-});
-
-// Replace this with your real tests.
-test('it exists', function(assert) {
-  let controller = this.subject();
-  assert.ok(controller);
-});
diff --git a/vipra-ui/tests/unit/helpers/is-empty-test.js b/vipra-ui/tests/unit/helpers/is-empty-test.js
deleted file mode 100644
index cc3fb38e..00000000
--- a/vipra-ui/tests/unit/helpers/is-empty-test.js
+++ /dev/null
@@ -1,10 +0,0 @@
-import { isEmpty } from '../../../helpers/is-empty';
-import { module, test } from 'qunit';
-
-module('Unit | Helper | is empty');
-
-// Replace this with your real tests.
-test('it works', function(assert) {
-  let result = isEmpty(42);
-  assert.ok(result);
-});
diff --git a/vipra-ui/tests/unit/helpers/pluralize-test.js b/vipra-ui/tests/unit/helpers/pluralize-test.js
deleted file mode 100644
index 12ce3b9d..00000000
--- a/vipra-ui/tests/unit/helpers/pluralize-test.js
+++ /dev/null
@@ -1,10 +0,0 @@
-import { pluralize } from '../../../helpers/pluralize';
-import { module, test } from 'qunit';
-
-module('Unit | Helper | pluralize');
-
-// Replace this with your real tests.
-test('it works', function(assert) {
-  let result = pluralize(42);
-  assert.ok(result);
-});
diff --git a/vipra-ui/tests/unit/helpers/topic-share-test.js b/vipra-ui/tests/unit/helpers/topic-share-test.js
deleted file mode 100644
index a7e8b95a..00000000
--- a/vipra-ui/tests/unit/helpers/topic-share-test.js
+++ /dev/null
@@ -1,10 +0,0 @@
-import { topicShare } from '../../../helpers/topic-share';
-import { module, test } from 'qunit';
-
-module('Unit | Helper | topic share');
-
-// Replace this with your real tests.
-test('it works', function(assert) {
-  let result = topicShare(42);
-  assert.ok(result);
-});
diff --git a/vipra-ui/tests/unit/models/article-test.js b/vipra-ui/tests/unit/models/article-test.js
deleted file mode 100644
index 0afadacc..00000000
--- a/vipra-ui/tests/unit/models/article-test.js
+++ /dev/null
@@ -1,12 +0,0 @@
-import { moduleForModel, test } from 'ember-qunit';
-
-moduleForModel('article', 'Unit | Model | article', {
-  // Specify the other units that are required for this test.
-  needs: []
-});
-
-test('it exists', function(assert) {
-  let model = this.subject();
-  // let store = this.store();
-  assert.ok(!!model);
-});
diff --git a/vipra-ui/tests/unit/models/import-test.js b/vipra-ui/tests/unit/models/import-test.js
deleted file mode 100644
index 569cba60..00000000
--- a/vipra-ui/tests/unit/models/import-test.js
+++ /dev/null
@@ -1,12 +0,0 @@
-import { moduleForModel, test } from 'ember-qunit';
-
-moduleForModel('import', 'Unit | Model | import', {
-  // Specify the other units that are required for this test.
-  needs: []
-});
-
-test('it exists', function(assert) {
-  let model = this.subject();
-  // let store = this.store();
-  assert.ok(!!model);
-});
diff --git a/vipra-ui/tests/unit/models/topic-test.js b/vipra-ui/tests/unit/models/topic-test.js
deleted file mode 100644
index 8d71d76e..00000000
--- a/vipra-ui/tests/unit/models/topic-test.js
+++ /dev/null
@@ -1,12 +0,0 @@
-import { moduleForModel, test } from 'ember-qunit';
-
-moduleForModel('topic', 'Unit | Model | topic', {
-  // Specify the other units that are required for this test.
-  needs: []
-});
-
-test('it exists', function(assert) {
-  let model = this.subject();
-  // let store = this.store();
-  assert.ok(!!model);
-});
diff --git a/vipra-ui/tests/unit/routes/article-test.js b/vipra-ui/tests/unit/routes/article-test.js
deleted file mode 100644
index a9185964..00000000
--- a/vipra-ui/tests/unit/routes/article-test.js
+++ /dev/null
@@ -1,11 +0,0 @@
-import { moduleFor, test } from 'ember-qunit';
-
-moduleFor('route:article', 'Unit | Route | article', {
-  // Specify the other units that are required for this test.
-  // needs: ['controller:foo']
-});
-
-test('it exists', function(assert) {
-  let route = this.subject();
-  assert.ok(route);
-});
diff --git a/vipra-ui/tests/unit/routes/index-test.js b/vipra-ui/tests/unit/routes/index-test.js
deleted file mode 100644
index 5d0f50da..00000000
--- a/vipra-ui/tests/unit/routes/index-test.js
+++ /dev/null
@@ -1,11 +0,0 @@
-import { moduleFor, test } from 'ember-qunit';
-
-moduleFor('route:index', 'Unit | Route | index', {
-  // Specify the other units that are required for this test.
-  // needs: ['controller:foo']
-});
-
-test('it exists', function(assert) {
-  let route = this.subject();
-  assert.ok(route);
-});
diff --git a/vipra-ui/tests/unit/routes/not-found-test.js b/vipra-ui/tests/unit/routes/not-found-test.js
deleted file mode 100644
index 2375b9bb..00000000
--- a/vipra-ui/tests/unit/routes/not-found-test.js
+++ /dev/null
@@ -1,11 +0,0 @@
-import { moduleFor, test } from 'ember-qunit';
-
-moduleFor('route:not-found', 'Unit | Route | not found', {
-  // Specify the other units that are required for this test.
-  // needs: ['controller:foo']
-});
-
-test('it exists', function(assert) {
-  let route = this.subject();
-  assert.ok(route);
-});
diff --git a/vipra-ui/tests/unit/routes/topics-test.js b/vipra-ui/tests/unit/routes/topics-test.js
deleted file mode 100644
index c0218b73..00000000
--- a/vipra-ui/tests/unit/routes/topics-test.js
+++ /dev/null
@@ -1,11 +0,0 @@
-import { moduleFor, test } from 'ember-qunit';
-
-moduleFor('route:topics', 'Unit | Route | topics', {
-  // Specify the other units that are required for this test.
-  // needs: ['controller:foo']
-});
-
-test('it exists', function(assert) {
-  let route = this.subject();
-  assert.ok(route);
-});
diff --git a/vipra-ui/tests/unit/routes/words-test.js b/vipra-ui/tests/unit/routes/words-test.js
deleted file mode 100644
index ce62d399..00000000
--- a/vipra-ui/tests/unit/routes/words-test.js
+++ /dev/null
@@ -1,11 +0,0 @@
-import { moduleFor, test } from 'ember-qunit';
-
-moduleFor('route:words', 'Unit | Route | words', {
-  // Specify the other units that are required for this test.
-  // needs: ['controller:foo']
-});
-
-test('it exists', function(assert) {
-  let route = this.subject();
-  assert.ok(route);
-});
diff --git a/vipra-ui/vendor/.gitkeep b/vipra-ui/vendor/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/vipra-ui/webapp/WEB-INF/web.xml b/vipra-ui/webapp/WEB-INF/web.xml
deleted file mode 100644
index 55266664..00000000
--- a/vipra-ui/webapp/WEB-INF/web.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
-	version="3.1">
-	<welcome-file-list>
-		<welcome-file>index.html</welcome-file>
-	</welcome-file-list>
-</web-app>
\ No newline at end of file
diff --git a/vipra-util/src/main/java/de/vipra/util/an/JsonType.java b/vipra-util/src/main/java/de/vipra/util/an/JsonType.java
deleted file mode 100644
index e3a30187..00000000
--- a/vipra-util/src/main/java/de/vipra/util/an/JsonType.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package de.vipra.util.an;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-@Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.TYPE)
-public @interface JsonType {
-
-	public String value();
-
-}
diff --git a/vipra-util/src/main/java/de/vipra/util/an/JsonWrap.java b/vipra-util/src/main/java/de/vipra/util/an/JsonWrap.java
deleted file mode 100644
index bfeea312..00000000
--- a/vipra-util/src/main/java/de/vipra/util/an/JsonWrap.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package de.vipra.util.an;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-@Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.FIELD)
-public @interface JsonWrap {
-
-	public String value() default "";
-
-}
diff --git a/vipra-util/src/main/java/de/vipra/util/model/Article.java b/vipra-util/src/main/java/de/vipra/util/model/Article.java
index 892dcbad..fc65f56b 100644
--- a/vipra-util/src/main/java/de/vipra/util/model/Article.java
+++ b/vipra-util/src/main/java/de/vipra/util/model/Article.java
@@ -8,10 +8,7 @@ import org.mongodb.morphia.annotations.Id;
 import org.mongodb.morphia.annotations.Index;
 import org.mongodb.morphia.annotations.Indexes;
 
-import de.vipra.util.an.JsonType;
-
 @SuppressWarnings("serial")
-@JsonType("article")
 @Entity(value = "articles", noClassnameStored = true)
 @Indexes({ @Index("title"), @Index("date"), @Index("-created") })
 public class Article implements Model<ObjectId>, Serializable {
diff --git a/vipra-util/src/main/java/de/vipra/util/model/ArticleFull.java b/vipra-util/src/main/java/de/vipra/util/model/ArticleFull.java
index 26b42d38..5dc4c422 100644
--- a/vipra-util/src/main/java/de/vipra/util/model/ArticleFull.java
+++ b/vipra-util/src/main/java/de/vipra/util/model/ArticleFull.java
@@ -20,12 +20,9 @@ import de.vipra.util.Constants;
 import de.vipra.util.FileUtils;
 import de.vipra.util.MongoUtils;
 import de.vipra.util.StringUtils;
-import de.vipra.util.an.JsonType;
-import de.vipra.util.an.JsonWrap;
 import de.vipra.util.an.QueryIgnore;
 
 @SuppressWarnings("serial")
-@JsonType("article")
 @Entity(value = "articles", noClassnameStored = true)
 @Indexes({ @Index("title"), @Index("date"), @Index("-created") })
 public class ArticleFull extends FileModel<ObjectId> implements Serializable {
@@ -33,33 +30,25 @@ public class ArticleFull extends FileModel<ObjectId> implements Serializable {
 	@Id
 	private ObjectId id;
 
-	@JsonWrap("attributes")
 	private String title;
 
-	@JsonWrap("attributes")
 	@QueryIgnore(multi = true)
 	private String text;
 
-	@JsonWrap("attributes")
 	private String url;
 
-	@JsonWrap("attributes")
 	private Date date;
 
 	@Embedded
-	@JsonWrap("attributes")
 	@QueryIgnore(multi = true)
 	private List<TopicRef> topics;
 
 	@Embedded
-	@JsonWrap("attributes")
 	@QueryIgnore(multi = true)
 	private ArticleStats stats;
 
-	@JsonWrap("attributes")
 	private Date created;
 
-	@JsonWrap("attributes")
 	private Date modified;
 
 	@Override
diff --git a/vipra-util/src/main/java/de/vipra/util/model/Import.java b/vipra-util/src/main/java/de/vipra/util/model/Import.java
index d5da6a81..a8969738 100644
--- a/vipra-util/src/main/java/de/vipra/util/model/Import.java
+++ b/vipra-util/src/main/java/de/vipra/util/model/Import.java
@@ -12,12 +12,9 @@ import org.mongodb.morphia.annotations.Indexes;
 import org.mongodb.morphia.annotations.PrePersist;
 import org.mongodb.morphia.annotations.Reference;
 
-import de.vipra.util.an.JsonType;
-import de.vipra.util.an.JsonWrap;
 import de.vipra.util.an.QueryIgnore;
 
 @SuppressWarnings("serial")
-@JsonType("import")
 @Entity(value = "imports", noClassnameStored = true)
 @Indexes({ @Index("date") })
 public class Import implements Model<ObjectId>, Serializable {
@@ -25,34 +22,26 @@ public class Import implements Model<ObjectId>, Serializable {
 	@Id
 	private ObjectId id;
 
-	@JsonWrap("attributes")
 	private Date date;
 
-	@JsonWrap("attributes")
 	private long duration;
 
-	@JsonWrap("attributes")
 	@QueryIgnore(multi = true)
 	@Reference(ignoreMissing = true)
 	private List<Article> articles;
 
-	@JsonWrap("attributes")
 	private int articlesCount;
 
-	@JsonWrap("attributes")
 	@QueryIgnore(multi = true)
 	@Reference(ignoreMissing = true)
 	private List<Topic> topics;
 
-	@JsonWrap("attributes")
 	private int topicsCount;
 
-	@JsonWrap("attributes")
 	@QueryIgnore(multi = true)
 	@Reference(ignoreMissing = true)
 	private List<Word> words;
 
-	@JsonWrap("attributes")
 	private int wordsCount;
 
 	@Override
diff --git a/vipra-util/src/main/java/de/vipra/util/model/Topic.java b/vipra-util/src/main/java/de/vipra/util/model/Topic.java
index 8678b468..5f097b90 100644
--- a/vipra-util/src/main/java/de/vipra/util/model/Topic.java
+++ b/vipra-util/src/main/java/de/vipra/util/model/Topic.java
@@ -9,10 +9,8 @@ import org.mongodb.morphia.annotations.Index;
 import org.mongodb.morphia.annotations.Indexes;
 
 import de.vipra.util.MongoUtils;
-import de.vipra.util.an.JsonType;
 
 @SuppressWarnings("serial")
-@JsonType("topic")
 @Entity(value = "topics", noClassnameStored = true)
 @Indexes({ @Index("name"), @Index("-created") })
 public class Topic implements Model<ObjectId>, Serializable {
diff --git a/vipra-util/src/main/java/de/vipra/util/model/TopicFull.java b/vipra-util/src/main/java/de/vipra/util/model/TopicFull.java
index 8797b6b6..63750c08 100644
--- a/vipra-util/src/main/java/de/vipra/util/model/TopicFull.java
+++ b/vipra-util/src/main/java/de/vipra/util/model/TopicFull.java
@@ -14,33 +14,25 @@ import org.mongodb.morphia.annotations.PrePersist;
 import de.vipra.util.Constants;
 import de.vipra.util.MongoUtils;
 import de.vipra.util.StringUtils;
-import de.vipra.util.an.JsonType;
-import de.vipra.util.an.JsonWrap;
 import de.vipra.util.an.QueryIgnore;
 
 @SuppressWarnings("serial")
-@JsonType("topic")
 @Entity(value = "topics", noClassnameStored = true)
 public class TopicFull implements Model<ObjectId>, Serializable {
 
 	@Id
 	private ObjectId id;
 
-	@JsonWrap("attributes")
 	private String name;
 
-	@JsonWrap("attributes")
 	private int index;
 
 	@Embedded
-	@JsonWrap("attributes")
 	@QueryIgnore(multi = true)
 	private List<TopicWord> words;
 
-	@JsonWrap("attributes")
 	private Date created;
 
-	@JsonWrap("attributes")
 	private Date modified;
 
 	@Override
diff --git a/vipra-util/src/main/java/de/vipra/util/model/Word.java b/vipra-util/src/main/java/de/vipra/util/model/Word.java
index 954eb415..06758a80 100644
--- a/vipra-util/src/main/java/de/vipra/util/model/Word.java
+++ b/vipra-util/src/main/java/de/vipra/util/model/Word.java
@@ -14,12 +14,9 @@ import org.mongodb.morphia.annotations.Transient;
 
 import com.fasterxml.jackson.annotation.JsonIgnore;
 
-import de.vipra.util.an.JsonType;
-import de.vipra.util.an.JsonWrap;
 import de.vipra.util.an.QueryIgnore;
 
 @SuppressWarnings("serial")
-@JsonType("word")
 @Entity(value = "words", noClassnameStored = true)
 @Indexes(@Index("-created"))
 public class Word implements Model<String>, Serializable {
@@ -40,7 +37,6 @@ public class Word implements Model<String>, Serializable {
 	private String word;
 
 	@QueryIgnore(multi = true)
-	@JsonWrap("attributes")
 	private Date created;
 
 	/**
-- 
GitLab