diff --git a/TODO b/TODO
deleted file mode 100644
index 286b0293a7604dcf57254de1b32e2cbe829a7a90..0000000000000000000000000000000000000000
--- a/TODO
+++ /dev/null
@@ -1,10 +0,0 @@
-cmd
-  ☐ implement delete operation
-  ☐ implement filebase remove
-  ☐ implement elasticsearch indexing
-  ☐ allow other document input formats
-  ☐ do not read whole file into memory
-  ☐ on save topics: retain topic names?
-
-rest
-  ☐ implement etag caching
\ No newline at end of file
diff --git a/Vagrantfile b/Vagrantfile
index a350bf2b047f0f007e4c9d6e86cdcfda5bb42900..a89510af8db0dd65d18a7b45638022d91bded388 100644
--- a/Vagrantfile
+++ b/Vagrantfile
@@ -1,6 +1,7 @@
 Vagrant.configure(2) do |config|
-  config.vm.box = 'ubuntu/trusty64'
-  config.vm.box_check_update = true
+  config.vm.box = 'ubuntu/wily64'
+
+  ENV['LC_ALL']="en_US.UTF-8"
 
   config.vm.provider "virtualbox" do |v|
     v.memory = 8192
diff --git a/ma-impl.sublime-workspace b/ma-impl.sublime-workspace
index 2ad0d78bc5aa08b99c6a5d9f82752218ab47eb08..6d78bcb150292817c746f75f424bc0c2aa1d5ec8 100644
--- a/ma-impl.sublime-workspace
+++ b/ma-impl.sublime-workspace
@@ -275,6 +275,14 @@
 	},
 	"buffers":
 	[
+		{
+			"file": "vipra-ui/app/adapters/application.js",
+			"settings":
+			{
+				"buffer_size": 506,
+				"line_ending": "Unix"
+			}
+		}
 	],
 	"build_system": "",
 	"build_system_choices":
@@ -922,8 +930,39 @@
 	"groups":
 	[
 		{
+			"selected": 0,
 			"sheets":
 			[
+				{
+					"buffer": 0,
+					"file": "vipra-ui/app/adapters/application.js",
+					"semi_transient": false,
+					"settings":
+					{
+						"buffer_size": 506,
+						"regions":
+						{
+						},
+						"selection":
+						[
+							[
+								119,
+								119
+							]
+						],
+						"settings":
+						{
+							"syntax": "Packages/JavaScriptNext - ES6 Syntax/JavaScriptNext.tmLanguage",
+							"tab_size": 2,
+							"translate_tabs_to_spaces": true
+						},
+						"translation.x": 0.0,
+						"translation.y": 0.0,
+						"zoom_level": 1.0
+					},
+					"stack_index": 0,
+					"type": "text"
+				}
 			]
 		}
 	],
diff --git a/vipra-cmd/.classpath b/vipra-cmd/.classpath
index 32530decee8107dc6d40648091978c83c2f89629..68ba27436986c55b46eea6656f7d15f85a4b0758 100644
--- a/vipra-cmd/.classpath
+++ b/vipra-cmd/.classpath
@@ -27,12 +27,6 @@
 			<attribute name="org.eclipse.jst.component.nondependency" value=""/>
 		</attributes>
 	</classpathentry>
-	<classpathentry kind="src" output="target/test-classes" path="src/test/java">
-		<attributes>
-			<attribute name="optional" value="true"/>
-			<attribute name="maven.pomderived" value="true"/>
-		</attributes>
-	</classpathentry>
 	<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"/>
diff --git a/vipra-cmd/src/main/java/de/vipra/cmd/file/Filebase.java b/vipra-cmd/src/main/java/de/vipra/cmd/file/Filebase.java
index f23a3d2b1e3d8ba401c8a600c5ae179d47bc4714..6d7e914f6da168a6b00148f7f10847080d22bcce 100644
--- a/vipra-cmd/src/main/java/de/vipra/cmd/file/Filebase.java
+++ b/vipra-cmd/src/main/java/de/vipra/cmd/file/Filebase.java
@@ -5,7 +5,7 @@ import java.io.File;
 import java.io.IOException;
 
 import de.vipra.cmd.ex.FilebaseException;
-import de.vipra.cmd.model.Article;
+import de.vipra.cmd.model.ProcessedArticle;
 import de.vipra.util.Config;
 import de.vipra.util.Config.Key;
 import de.vipra.util.Constants;
@@ -46,7 +46,7 @@ public abstract class Filebase implements Closeable {
 		return vocab;
 	}
 
-	public void remove(Article article) throws FilebaseException {
+	public void remove(ProcessedArticle article) throws FilebaseException {
 		remove(article.getId().toString());
 	}
 
@@ -57,7 +57,7 @@ public abstract class Filebase implements Closeable {
 		vocab.close();
 	}
 
-	public abstract void add(Article article) throws FilebaseException;
+	public abstract void add(ProcessedArticle article) throws FilebaseException;
 
 	public abstract void remove(String id) throws FilebaseException;
 
diff --git a/vipra-cmd/src/main/java/de/vipra/cmd/file/JGibbFilebase.java b/vipra-cmd/src/main/java/de/vipra/cmd/file/JGibbFilebase.java
index 1676bbdb979653c6085b8ced6fe6a03c2b10f833..d5ee6273decd1ca0304ac1862ae1991b4782cd71 100644
--- a/vipra-cmd/src/main/java/de/vipra/cmd/file/JGibbFilebase.java
+++ b/vipra-cmd/src/main/java/de/vipra/cmd/file/JGibbFilebase.java
@@ -7,7 +7,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 import de.vipra.cmd.ex.FilebaseException;
-import de.vipra.cmd.model.Article;
+import de.vipra.cmd.model.ProcessedArticle;
 import de.vipra.util.ex.NotImplementedException;
 
 public class JGibbFilebase extends Filebase {
@@ -15,7 +15,7 @@ public class JGibbFilebase extends Filebase {
 	private final File modelFile;
 	private final FilebaseIndex index;
 	private final FilebaseVocabulary vocab;
-	private final List<Article> articles;
+	private final List<ProcessedArticle> articles;
 
 	private final int bufferMaxSize = 100;
 
@@ -28,7 +28,7 @@ public class JGibbFilebase extends Filebase {
 	}
 
 	@Override
-	public void add(Article article) throws FilebaseException {
+	public void add(ProcessedArticle article) throws FilebaseException {
 		String[] words = article.getProcessedText().getText().split("\\s+");
 		vocab.addVocabulary(words);
 		index.add(article.getId().toString());
@@ -56,7 +56,7 @@ public class JGibbFilebase extends Filebase {
 
 			// write articles
 			raf.seek(raf.length());
-			for (Article a : articles) {
+			for (ProcessedArticle a : articles) {
 				if (linesep)
 					raf.writeBytes(System.lineSeparator());
 				else
diff --git a/vipra-cmd/src/main/java/de/vipra/cmd/model/Article.java b/vipra-cmd/src/main/java/de/vipra/cmd/model/ProcessedArticle.java
similarity index 91%
rename from vipra-cmd/src/main/java/de/vipra/cmd/model/Article.java
rename to vipra-cmd/src/main/java/de/vipra/cmd/model/ProcessedArticle.java
index 4c0bc3ca1e25af40c38e0b5b84defbaa3a48d067..8611f4ef251be3d0b39e3c1960e59aa2ab9e24b7 100644
--- a/vipra-cmd/src/main/java/de/vipra/cmd/model/Article.java
+++ b/vipra-cmd/src/main/java/de/vipra/cmd/model/ProcessedArticle.java
@@ -5,7 +5,7 @@ import org.mongodb.morphia.annotations.Transient;
 
 import de.vipra.cmd.text.ProcessedText;
 
-public class Article extends de.vipra.util.model.Article {
+public class ProcessedArticle extends de.vipra.util.model.Article {
 
 	@Transient
 	private ProcessedText processedText;
diff --git a/vipra-cmd/src/main/java/de/vipra/cmd/option/ClearCommand.java b/vipra-cmd/src/main/java/de/vipra/cmd/option/ClearCommand.java
index 2cfbafd675dc7af7bbf097f59d7e38aeff23cd2e..26496207dada056996861186df74f92df3ec4ac4 100644
--- a/vipra-cmd/src/main/java/de/vipra/cmd/option/ClearCommand.java
+++ b/vipra-cmd/src/main/java/de/vipra/cmd/option/ClearCommand.java
@@ -9,7 +9,7 @@ import org.slf4j.LoggerFactory;
 
 import de.vipra.cmd.ExecutionException;
 import de.vipra.cmd.ex.ClearException;
-import de.vipra.cmd.model.Article;
+import de.vipra.cmd.model.ProcessedArticle;
 import de.vipra.util.Config;
 import de.vipra.util.ConsoleUtils;
 import de.vipra.util.Constants;
@@ -24,7 +24,7 @@ public class ClearCommand implements Command {
 
 	private boolean defaults;
 	private Config config;
-	private DatabaseService<Article> dbArticles;
+	private DatabaseService<ProcessedArticle> dbArticles;
 	private DatabaseService<Topic> dbTopics;
 
 	public ClearCommand(boolean defaults) {
@@ -34,7 +34,7 @@ public class ClearCommand implements Command {
 	private void clear() throws ClearException, ConfigException {
 		try {
 			config = Config.getConfig();
-			dbArticles = DatabaseService.getDatabaseService(config, Constants.Collection.ARTICLES, Article.class);
+			dbArticles = DatabaseService.getDatabaseService(config, Constants.Collection.ARTICLES, ProcessedArticle.class);
 			dbTopics = DatabaseService.getDatabaseService(config, Constants.Collection.TOPICS, Topic.class);
 		} catch (Exception e) {
 			throw new ClearException(e);
diff --git a/vipra-cmd/src/main/java/de/vipra/cmd/option/DeleteCommand.java b/vipra-cmd/src/main/java/de/vipra/cmd/option/DeleteCommand.java
index 9d3b8c4f2e7f2a69573cf9012d0382fc1050c765..cb6aa3b6ca2d3af471b831633dc4d4793b7544b7 100644
--- a/vipra-cmd/src/main/java/de/vipra/cmd/option/DeleteCommand.java
+++ b/vipra-cmd/src/main/java/de/vipra/cmd/option/DeleteCommand.java
@@ -11,7 +11,7 @@ import org.slf4j.LoggerFactory;
 import de.vipra.cmd.ExecutionException;
 import de.vipra.cmd.ex.FilebaseException;
 import de.vipra.cmd.file.Filebase;
-import de.vipra.cmd.model.Article;
+import de.vipra.cmd.model.ProcessedArticle;
 import de.vipra.util.Config;
 import de.vipra.util.Constants;
 import de.vipra.util.ex.ConfigException;
@@ -25,7 +25,7 @@ public class DeleteCommand implements Command {
 
 	private ArrayList<String> ids = new ArrayList<>();
 	private Config config;
-	private DatabaseService<Article> dbArticles;
+	private DatabaseService<ProcessedArticle> dbArticles;
 	private Filebase filebase;
 
 	public DeleteCommand(String[] strings) {
@@ -71,7 +71,7 @@ public class DeleteCommand implements Command {
 	public void run() throws ExecutionException {
 		try {
 			config = Config.getConfig();
-			dbArticles = DatabaseService.getDatabaseService(config, Constants.Collection.ARTICLES, Article.class);
+			dbArticles = DatabaseService.getDatabaseService(config, Constants.Collection.ARTICLES, ProcessedArticle.class);
 			filebase = Filebase.getFilebase(config);
 		} catch (IOException | FilebaseException | ConfigException e) {
 			throw new ExecutionException(e);
diff --git a/vipra-cmd/src/main/java/de/vipra/cmd/option/ImportCommand.java b/vipra-cmd/src/main/java/de/vipra/cmd/option/ImportCommand.java
index 677f5782f1f8a5a2351d56095bb55b75e99aeae6..1433affcbee5766ee0c94f3cc88fd693fbb53a37 100644
--- a/vipra-cmd/src/main/java/de/vipra/cmd/option/ImportCommand.java
+++ b/vipra-cmd/src/main/java/de/vipra/cmd/option/ImportCommand.java
@@ -24,7 +24,7 @@ import de.vipra.cmd.ex.LDAAnalyzerException;
 import de.vipra.cmd.file.Filebase;
 import de.vipra.cmd.file.FilebaseIndex;
 import de.vipra.cmd.lda.LDAAnalyzer;
-import de.vipra.cmd.model.Article;
+import de.vipra.cmd.model.ProcessedArticle;
 import de.vipra.cmd.text.ProcessedText;
 import de.vipra.cmd.text.Processor;
 import de.vipra.util.Config;
@@ -46,7 +46,7 @@ public class ImportCommand implements Command {
 	private ArrayList<File> files = new ArrayList<>();
 	private JSONParser parser = new JSONParser();
 	private Config config;
-	private DatabaseService<Article> dbArticles;
+	private DatabaseService<ProcessedArticle> dbArticles;
 	private DatabaseService<Topic> dbTopics;
 	private Filebase filebase;
 	private Processor preprocessor;
@@ -92,7 +92,7 @@ public class ImportCommand implements Command {
 	 */
 	void importArticle(JSONObject obj) throws ImportException {
 		out.debug("importing \"" + StringUtils.ellipsize(obj.get("title").toString(), 80) + "\"");
-		Article article = new Article();
+		ProcessedArticle article = new ProcessedArticle();
 		article.fromJSON(obj);
 
 		try {
@@ -197,7 +197,7 @@ public class ImportCommand implements Command {
 				else
 					log.error("no object id for topic index " + tc.getId());
 			}
-			Article a = dbArticles.getSingle(id);
+			ProcessedArticle a = dbArticles.getSingle(id);
 			a.setTopics(topicCount);
 			try {
 				dbArticles.updateSingle(a);
@@ -211,7 +211,7 @@ public class ImportCommand implements Command {
 	public void run() throws ExecutionException {
 		try {
 			config = Config.getConfig();
-			dbArticles = DatabaseService.getDatabaseService(config, Constants.Collection.ARTICLES, Article.class);
+			dbArticles = DatabaseService.getDatabaseService(config, Constants.Collection.ARTICLES, ProcessedArticle.class);
 			dbTopics = DatabaseService.getDatabaseService(config, Constants.Collection.TOPICS, Topic.class);
 			filebase = Filebase.getFilebase(config);
 			preprocessor = Processor.getPreprocessor(config);
diff --git a/vipra-rest/.classpath b/vipra-rest/.classpath
index b72ccd2037671de82b5e71abdfd97fa650b68150..f2db8ed9892d5e6702d39d0cba12cc8436a2b42e 100644
--- a/vipra-rest/.classpath
+++ b/vipra-rest/.classpath
@@ -17,12 +17,6 @@
 			<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
 		</attributes>
 	</classpathentry>
-	<classpathentry kind="src" output="target/test-classes" path="src/test/java">
-		<attributes>
-			<attribute name="optional" value="true"/>
-			<attribute name="maven.pomderived" value="true"/>
-		</attributes>
-	</classpathentry>
 	<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"/>
diff --git a/vipra-rest/src/main/java/de/vipra/rest/provider/WrapperResponseFilter.java b/vipra-rest/src/main/java/de/vipra/rest/provider/WrapperResponseFilter.java
new file mode 100644
index 0000000000000000000000000000000000000000..a7215196448954528232bbcc69411c86b2bf667b
--- /dev/null
+++ b/vipra-rest/src/main/java/de/vipra/rest/provider/WrapperResponseFilter.java
@@ -0,0 +1,18 @@
+package de.vipra.rest.provider;
+
+import java.io.IOException;
+
+import javax.ws.rs.container.ContainerRequestContext;
+import javax.ws.rs.container.ContainerResponseContext;
+import javax.ws.rs.container.ContainerResponseFilter;
+
+public class WrapperResponseFilter implements ContainerResponseFilter {
+
+	@SuppressWarnings("unused")
+	@Override
+	public void filter(ContainerRequestContext arg0, ContainerResponseContext arg1) throws IOException {
+		Object entity = arg1.getEntity();
+		int status = arg1.getStatus();
+	}
+
+}
diff --git a/vipra-rest/src/main/java/de/vipra/rest/service/ArticleService.java b/vipra-rest/src/main/java/de/vipra/rest/service/ArticleService.java
index fcbf65746d181c2f76e730ba17eb98f29b057625..b53aaad4e5c95f216f835ca6117c22415c127f30 100644
--- a/vipra-rest/src/main/java/de/vipra/rest/service/ArticleService.java
+++ b/vipra-rest/src/main/java/de/vipra/rest/service/ArticleService.java
@@ -10,7 +10,7 @@ import de.vipra.util.service.DatabaseService;
 public class ArticleService extends DatabaseService<Article> {
 
 	public ArticleService(Mongo mongo) {
-		super(mongo, Article.class);
+		super(mongo, de.vipra.util.model.Article.class);
 	}
 
 	public List<Article> getMultiple(URI base, int skip, int limit, String sortBy) {
diff --git a/vipra-rest/src/main/java/de/vipra/rest/service/TopicService.java b/vipra-rest/src/main/java/de/vipra/rest/service/TopicService.java
index 497bc6903e4afba0f3e93e27ee3878f609276b7e..4ec6eb604d23f49d37282bfb6524bcca1ee46285 100644
--- a/vipra-rest/src/main/java/de/vipra/rest/service/TopicService.java
+++ b/vipra-rest/src/main/java/de/vipra/rest/service/TopicService.java
@@ -10,7 +10,7 @@ import de.vipra.util.service.DatabaseService;
 public class TopicService extends DatabaseService<Topic> {
 
 	public TopicService(Mongo mongo) {
-		super(mongo, Topic.class);
+		super(mongo, de.vipra.util.model.Topic.class);
 	}
 
 	public List<Topic> getMultiple(URI base, int skip, int limit, String sortBy) {
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 95c3264defc6dc5789b70b42b0d62128e873cf8d..e969f707ef5aebb5393bc8b9554f5eb99c89520b 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
@@ -16,7 +16,7 @@ import de.vipra.util.FileUtils;
 import de.vipra.util.MongoUtils;
 import de.vipra.util.StringUtils;
 
-@Entity("articles")
+@Entity(value="articles", noClassnameStored=true)
 public class Article extends Model {
 
 	@Id
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 3891fc8a45f409604555ee3895175bd2d3961548..24758b3738315476116e23aae29ba6b3a387ff9a 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
@@ -12,7 +12,7 @@ import org.mongodb.morphia.annotations.Id;
 import de.vipra.util.MongoUtils;
 import de.vipra.util.ex.NotImplementedException;
 
-@Entity("topics")
+@Entity(value="topics", noClassnameStored=true)
 public class Topic extends Model {
 
 	@Id
diff --git a/vm/bootstrap.sh b/vm/bootstrap.sh
index 78e21dd33ea79ffc3d81c062f6ef8cdabe6cb93f..5a0827b864a778e36e9a3712bfe15c2b91babbf2 100644
--- a/vm/bootstrap.sh
+++ b/vm/bootstrap.sh
@@ -1,15 +1,5 @@
 #!/bin/sh
 
-VMDIR=/vagrant/vm
-DATA=$VMDIR/data
-CONFIG=$VMDIR/config
-
-# -----------------------------------------------------------------------------
-# add repos
-
-apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
-echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
-
 # -----------------------------------------------------------------------------
 # upgrade system
 
@@ -19,64 +9,18 @@ apt-get upgrade -y
 # -----------------------------------------------------------------------------
 # install packages
 
-apt-get install git gdebi-core openjdk-7-jdk openjdk-7-jre -y
-
-# -----------------------------------------------------------------------------
-# install mongodb
-
-apt-get install -y mongodb-org
-ln -sf $CONFIG/mongod.conf /etc/mongod.conf
-
-# setup startup script
-cp $CONFIG/initd-mongod /etc/init.d/mongod
-chmod 755 /etc/init.d/mongod
-update-rc.d mongod defaults
-
-# disable hugepages (https://docs.mongodb.org/manual/tutorial/transparent-huge-pages/)
-cp $CONFIG/disable-transparent-hugepages /etc/init.d/
-chmod 755 /etc/init.d/disable-transparent-hugepages
-update-rc.d disable-transparent-hugepages defaults
-echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled 
-echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag
-
-# restart service
-service mongod restart
-
-# -----------------------------------------------------------------------------
-# install mongo express
-
-apt-get install npm libkrb5-dev
-ln -sf $(which nodejs) /bin/node
-npm install -g mongo-express forever
-ln -sf $CONFIG/mongo-express.config.js /usr/local/lib/node_modules/mongo-express/config.js
+apt-get install git gdebi-core openjdk-8-jdk openjdk-8-jre mongodb tomcat8 -y
 
 # -----------------------------------------------------------------------------
-# install tomcat
-
-TOMCAT_MAJOR="8"
-TOMCAT_VERSION="$TOMCAT_MAJOR.0.30"
-TOMCAT_ROOT=/usr/share/tomcat
-
-wget http://mirror.netcologne.de/apache.org/tomcat/tomcat-$TOMCAT_MAJOR/v$TOMCAT_VERSION/bin/apache-tomcat-$TOMCAT_VERSION.tar.gz
-tar zxf apache-tomcat-$TOMCAT_VERSION.tar.gz
-rm apache-tomcat-$TOMCAT_VERSION.tar.gz
-mv apache-tomcat-$TOMCAT_VERSION $TOMCAT_ROOT
-
-# set permissions
-chown -R vagrant:vagrant $TOMCAT_ROOT
-chmod +x $TOMCAT_ROOT/bin/*.sh
-
-# setup startup script
-cp $CONFIG/initd-tomcat /etc/init.d/tomcat
-chmod 755 /etc/init.d/tomcat
-update-rc.d tomcat defaults
+# setup tomcat
 
-# move webapps dir
-mv $TOMCAT_ROOT/webapps $VMDIR
-ln -s $VMDIR/webapps $TOMCAT_ROOT/webapps
+usermod -a -G tomcat8 vagrant
+mv /var/lib/tomcat8/webapps /var/lib/tomcat8/webapps-orig
+rm -f /vagrant/vm/webapps
+mkdir /vagrant/vm/webapps
+ln -sf /vagrant/vm/webapps /var/lib/tomcat8/webapps
 
-# start tomcat
-service tomcat start
+systemctl restart tomcat8
 
 # -----------------------------------------------------------------------------
 # install elasticsearch
@@ -84,34 +28,24 @@ service tomcat start
 wget https://download.elasticsearch.org/elasticsearch/release/org/elasticsearch/distribution/deb/elasticsearch/2.1.1/elasticsearch-2.1.1.deb
 gdebi -n elasticsearch-2.1.1.deb
 rm elasticsearch-2.1.1.deb
-service elasticsearch start
+
+systemctl restart elasticsearch
 
 # -----------------------------------------------------------------------------
 # disable firewall
 
 ufw disable
 
-# -----------------------------------------------------------------------------
-# set environment
-
-cat $CONFIG/environment >> /etc/environment
-cat $CONFIG/motd > /etc/motd
-
 # -----------------------------------------------------------------------------
 # cleanup
 
 apt-get autoremove -y
 apt-get clean
-dd if=/dev/zero of=/EMPTY bs=1M
-rm -f /EMPTY
-cat /dev/null > ~/.bash_history
-history -c
 
 echo ""
 echo "--------------------------------------------------------------"
 echo "--- Provisioning complete."
-echo "--- Reload box to set environment"
-echo "--- `vagrant reload`"
 echo "--------------------------------------------------------------"
+echo ""
 
 exit 0
\ No newline at end of file
diff --git a/vm/config/disable-transparent-hugepages b/vm/config/disable-transparent-hugepages
deleted file mode 100644
index 520af2cf4b2708ca82c0d49778a74938445adb8f..0000000000000000000000000000000000000000
--- a/vm/config/disable-transparent-hugepages
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/bin/sh
-### BEGIN INIT INFO
-# Provides:          disable-transparent-hugepages
-# Required-Start:    $local_fs
-# Required-Stop:
-# X-Start-Before:    mongod mongodb-mms-automation-agent
-# Default-Start:     2 3 4 5
-# Default-Stop:      0 1 6
-# Short-Description: Disable Linux transparent huge pages
-# Description:       Disable Linux transparent huge pages, to improve
-#                    database performance.
-### END INIT INFO
-
-case $1 in
-  start)
-    if [ -d /sys/kernel/mm/transparent_hugepage ]; then
-      thp_path=/sys/kernel/mm/transparent_hugepage
-    elif [ -d /sys/kernel/mm/redhat_transparent_hugepage ]; then
-      thp_path=/sys/kernel/mm/redhat_transparent_hugepage
-    else
-      return 0
-    fi
-
-    echo 'never' > ${thp_path}/enabled
-    echo 'never' > ${thp_path}/defrag
-
-    unset thp_path
-    ;;
-esac
\ No newline at end of file
diff --git a/vm/config/environment b/vm/config/environment
deleted file mode 100644
index f7b4caf838d7e39f3119483b45e384cc1610ea88..0000000000000000000000000000000000000000
--- a/vm/config/environment
+++ /dev/null
@@ -1,3 +0,0 @@
-# Java
-JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/jre
-JAVA_TOOL_OPTIONS="-Xmx2048m -XX:MaxPermSize=1024m -Xms1024m"
\ No newline at end of file
diff --git a/vm/config/initd-mongod b/vm/config/initd-mongod
deleted file mode 100644
index 780e488b26591208e1c4fdecfb13ecc6f48f1e20..0000000000000000000000000000000000000000
--- a/vm/config/initd-mongod
+++ /dev/null
@@ -1,267 +0,0 @@
-#!/bin/sh
-#
-# init.d script with LSB support.
-#
-# Copyright (c) 2007 Javier Fernandez-Sanguino <jfs@debian.org>
-#
-# This is free software; you may redistribute it and/or modify
-# it under the terms of the GNU General Public License as
-# published by the Free Software Foundation; either version 2,
-# or (at your option) any later version.
-#
-# This is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License with
-# the Debian operating system, in /usr/share/common-licenses/GPL;  if
-# not, write to the Free Software Foundation, Inc., 59 Temple Place,
-# Suite 330, Boston, MA 02111-1307 USA
-#
-### BEGIN INIT INFO
-# Provides:          mongod
-# Required-Start:    $network $local_fs $remote_fs
-# Required-Stop:     $network $local_fs $remote_fs
-# Should-Start:      $named
-# Should-Stop:
-# Default-Start:     2 3 4 5
-# Default-Stop:      0 1 6
-# Short-Description: An object/document-oriented database
-# Description:       MongoDB is a high-performance, open source, schema-free 
-#                    document-oriented data store that's easy to deploy, manage
-#                    and use. It's network accessible, written in C++ and offers
-#                    the following features:
-#                    
-#                       * Collection oriented storage - easy storage of object-
-#                         style data
-#                       * Full index support, including on inner objects
-#                       * Query profiling
-#                       * Replication and fail-over support
-#                       * Efficient storage of binary data including large 
-#                         objects (e.g. videos)
-#                       * Automatic partitioning for cloud-level scalability
-#                    
-#                    High performance, scalability, and reasonable depth of
-#                    functionality are the goals for the project.
-### END INIT INFO
-
-PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
-DAEMON=/usr/bin/mongod
-DESC=database
-
-NAME=mongod
-# Defaults.  Can be overridden by the /etc/default/$NAME
-# Other configuration options are located in $CONF file. See here for more:
-# http://dochub.mongodb.org/core/configurationoptions
-CONF=/etc/mongod.conf
-PIDFILE=/var/run/$NAME.pid
-ENABLE_MONGOD=yes
-
-# Include mongodb defaults if available
-if [ -f /etc/default/$NAME ] ; then
-	. /etc/default/$NAME
-fi
-
-# Handle NUMA access to CPUs (SERVER-3574)
-# This verifies the existence of numactl as well as testing that the command works
-NUMACTL_ARGS="--interleave=all"
-if which numactl >/dev/null 2>/dev/null && numactl $NUMACTL_ARGS ls / >/dev/null 2>/dev/null
-then
-    NUMACTL="`which numactl` -- $NUMACTL_ARGS"
-    DAEMON_OPTS=${DAEMON_OPTS:-"--config $CONF"}
-else
-    NUMACTL=""
-    DAEMON_OPTS="-- "${DAEMON_OPTS:-"--config $CONF"}
-fi
-
-if test ! -x $DAEMON; then
-    echo "Could not find $DAEMON"
-    exit 0
-fi
-
-if test "x$ENABLE_MONGOD" != "xyes"; then
-    exit 0
-fi
-
-. /lib/lsb/init-functions
-
-STARTTIME=1
-DIETIME=10                   # Time to wait for the server to die, in seconds
-                            # If this value is set too low you might not
-                            # let some servers to die gracefully and
-                            # 'restart' will not work
-
-DAEMONUSER=${DAEMONUSER:-mongodb}
-DAEMONGROUP=${DAEMONGROUP:-mongodb}
-
-set -e
-
-running_pid() {
-# Check if a given process pid's cmdline matches a given name
-    pid=$1
-    name=$2
-    [ -z "$pid" ] && return 1
-    [ ! -d /proc/$pid ] &&  return 1
-    cmd=`cat /proc/$pid/cmdline | tr "\000" "\n"|head -n 1 |cut -d : -f 1`
-    # Is this the expected server
-    [ "$cmd" != "$name" ] &&  return 1
-    return 0
-}
-
-running() {
-# Check if the process is running looking at /proc
-# (works for all users)
-
-    # No pidfile, probably no daemon present
-    [ ! -f "$PIDFILE" ] && return 1
-    pid=`cat $PIDFILE`
-    running_pid $pid $DAEMON || return 1
-    return 0
-}
-
-start_server() {
-            # Recommended ulimit values for mongod or mongos
-            # See http://docs.mongodb.org/manual/reference/ulimit/#recommended-settings
-            #
-            ulimit -f unlimited
-            ulimit -t unlimited
-            ulimit -v unlimited
-            ulimit -n 64000
-            ulimit -m unlimited
-
-            # In dash, ulimit takes -p for maximum user processes
-            # In bash, it's -u
-            if readlink /proc/$$/exe | grep -q dash
-            then
-                    ulimit -p 64000
-            else
-                    ulimit -u 64000
-            fi
-
-            # Start the process using the wrapper
-            start-stop-daemon --background --start --quiet --pidfile $PIDFILE \
-                        --make-pidfile --chuid $DAEMONUSER:$DAEMONGROUP \
-                        --exec $NUMACTL $DAEMON $DAEMON_OPTS
-            errcode=$?
-	return $errcode
-}
-
-stop_server() {
-# Stop the process using the wrapper
-            start-stop-daemon --stop --quiet --pidfile $PIDFILE \
-                        --retry 300 \
-                        --user $DAEMONUSER \
-                        --exec $DAEMON
-            errcode=$?
-	return $errcode
-}
-
-force_stop() {
-# Force the process to die killing it manually
-	[ ! -e "$PIDFILE" ] && return
-	if running ; then
-		kill -15 $pid
-	# Is it really dead?
-		sleep "$DIETIME"s
-		if running ; then
-			kill -9 $pid
-			sleep "$DIETIME"s
-			if running ; then
-				echo "Cannot kill $NAME (pid=$pid)!"
-				exit 1
-			fi
-		fi
-	fi
-	rm -f $PIDFILE
-}
-
-
-case "$1" in
-  start)
-	log_daemon_msg "Starting $DESC" "$NAME"
-        # Check if it's running first
-        if running ;  then
-            log_progress_msg "apparently already running"
-            log_end_msg 0
-            exit 0
-        fi
-        if start_server ; then
-            # NOTE: Some servers might die some time after they start,
-            # this code will detect this issue if STARTTIME is set
-            # to a reasonable value
-            [ -n "$STARTTIME" ] && sleep $STARTTIME # Wait some time 
-            if  running ;  then
-                # It's ok, the server started and is running
-                log_end_msg 0
-            else
-                # It is not running after we did start
-                log_end_msg 1
-            fi
-        else
-            # Either we could not start it
-            log_end_msg 1
-        fi
-	;;
-  stop)
-        log_daemon_msg "Stopping $DESC" "$NAME"
-        if running ; then
-            # Only stop the server if we see it running
-			errcode=0
-            stop_server || errcode=$?
-            log_end_msg $errcode
-        else
-            # If it's not running don't do anything
-            log_progress_msg "apparently not running"
-            log_end_msg 0
-            exit 0
-        fi
-        ;;
-  force-stop)
-        # First try to stop gracefully the program
-        $0 stop
-        if running; then
-            # If it's still running try to kill it more forcefully
-            log_daemon_msg "Stopping (force) $DESC" "$NAME"
-			errcode=0
-            force_stop || errcode=$?
-            log_end_msg $errcode
-        fi
-	;;
-  restart|force-reload)
-        log_daemon_msg "Restarting $DESC" "$NAME"
-		errcode=0
-        stop_server || errcode=$?
-        # Wait some sensible amount, some server need this
-        [ -n "$DIETIME" ] && sleep $DIETIME
-        start_server || errcode=$?
-        [ -n "$STARTTIME" ] && sleep $STARTTIME
-        running || errcode=$?
-        log_end_msg $errcode
-	;;
-  status)
-
-        log_daemon_msg "Checking status of $DESC" "$NAME"
-        if running ;  then
-            log_progress_msg "running"
-            log_end_msg 0
-        else
-            log_progress_msg "apparently not running"
-            log_end_msg 1
-            exit 1
-        fi
-        ;;
-  # MongoDB can't reload its configuration.
-  reload)
-        log_warning_msg "Reloading $NAME daemon: not implemented, as the daemon"
-        log_warning_msg "cannot re-read the config file (use restart)."
-        ;;
-
-  *)
-	N=/etc/init.d/$NAME
-	echo "Usage: $N {start|stop|force-stop|restart|force-reload|status}" >&2
-	exit 1
-	;;
-esac
-
-exit 0
\ No newline at end of file
diff --git a/vm/config/initd-tomcat b/vm/config/initd-tomcat
deleted file mode 100644
index d7a2b738fb0b166dbc2842647f9136e2519a7ddf..0000000000000000000000000000000000000000
--- a/vm/config/initd-tomcat
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/bin/bash
-
-### BEGIN INIT INFO
-# Provides:        tomcat
-# Required-Start:  $network
-# Required-Stop:   $network
-# Default-Start:   2 3 4 5
-# Default-Stop:    0 1 6
-# Short-Description: Start/Stop Tomcat server
-### END INIT INFO
-
-PATH=/sbin:/bin:/usr/sbin:/usr/bin
-
-start() {
- /bin/su - vagrant -c /usr/share/tomcat/bin/startup.sh
-}
-
-stop() {
- /bin/su - vagrant -c /usr/share/tomcat/bin/shutdown.sh 
-}
-
-case $1 in
-  start|stop) $1;;
-  restart) stop; start;;
-  *) echo "Run as $0 <start|stop|restart>"; exit 1;;
-esac
\ No newline at end of file
diff --git a/vm/config/mongo-express.config.js b/vm/config/mongo-express.config.js
deleted file mode 100644
index e30faa2dbacb0b8cbd6adcdb19276859954ff474..0000000000000000000000000000000000000000
--- a/vm/config/mongo-express.config.js
+++ /dev/null
@@ -1,110 +0,0 @@
-'use strict';
-
-var url = require('url');
-
-if (typeof process.env.MONGODB_PORT === 'string') {
-  var mongoConnection = url.parse(process.env.MONGODB_PORT);
-  process.env.ME_CONFIG_MONGODB_SERVER = mongoConnection.hostname;
-  process.env.ME_CONFIG_MONGODB_PORT = mongoConnection.port;
-}
-
-module.exports = {
-  mongodb: {
-    server: process.env.ME_CONFIG_MONGODB_SERVER || 'localhost',
-    port: process.env.ME_CONFIG_MONGODB_PORT || 27017,
-
-    //autoReconnect: automatically reconnect if connection is lost
-    autoReconnect: true,
-    //poolSize: size of connection pool (number of connections to use)
-    poolSize: 4,
-    //set admin to true if you want to turn on admin features
-    //if admin is true, the auth list below will be ignored
-    //if admin is true, you will need to enter an admin username/password below (if it is needed)
-    admin: true,
-
-
-    // >>>>  If you are using regular accounts, fill out auth details in the section below
-    // >>>>  If you have admin auth, leave this section empty and skip to the next section
-    auth: [
-      /*
-       * Add the the name, the username, and the password of the databases you want to connect to
-       * Add as many databases as you want!
-      {
-        database: 'test',
-        username: 'user',
-        password: 'pass'
-      }
-      */
-      ],
-
-
-    //  >>>>  If you are using an admin mongodb account, or no admin account exists, fill out section below
-    //  >>>>  Using an admin account allows you to view and edit all databases, and view stats
-
-    //leave username and password empty if no admin account exists
-    adminUsername: process.env.ME_CONFIG_MONGODB_ADMINUSERNAME || '',
-    adminPassword: process.env.ME_CONFIG_MONGODB_ADMINPASSWORD || '',
-    //whitelist: hide all databases except the ones in this list  (empty list for no whitelist)
-    whitelist: [],
-    //blacklist: hide databases listed in the blacklist (empty list for no blacklist)
-    blacklist: []
-  },
-
-  site: {
-    host: '0.0.0.0',
-    port: 8081,
-    cookieSecret: process.env.ME_CONFIG_SITE_COOKIESECRET || 'cookiesecret',
-    sessionSecret: process.env.ME_CONFIG_SITE_SESSIONSECRET || 'sessionsecret',
-    cookieKeyName: 'mongo-express',
-    sslEnabled: process.env.ME_CONFIG_SITE_SSL_ENABLED || false,
-    sslCert: process.env.ME_CONFIG_SITE_SSL_CRT_PATH || '',
-    sslKey: process.env.ME_CONFIG_SITE_SSL_KEY_PATH || ''
-  },
-
-  //set useBasicAuth to true if you want to authehticate mongo-express loggins
-  //if admin is false, the basicAuthInfo list below will be ignored
-  //this will be true unless ME_CONFIG_BASICAUTH_USERNAME is set and is the empty string
-  useBasicAuth: process.env.ME_CONFIG_BASICAUTH_USERNAME !== '',
-
-  basicAuth: {
-    username: process.env.ME_CONFIG_BASICAUTH_USERNAME || 'admin',
-    password: process.env.ME_CONFIG_BASICAUTH_PASSWORD || 'pass'
-  },
-
-  options: {
-    //documentsPerPage: how many documents you want to see at once in collection view
-    documentsPerPage: 10,
-    //editorTheme: Name of the theme you want to use for displaying documents
-    //See http://codemirror.net/demo/theme.html for all examples
-    editorTheme: process.env.ME_CONFIG_OPTIONS_EDITORTHEME || 'rubyblue',
-
-    //The options below aren't being used yet
-
-    //cmdType: the type of command line you want mongo express to run
-    //values: eval, subprocess
-    //  eval - uses db.eval. commands block, so only use this if you have to
-    //  subprocess - spawns a mongo command line as a subprocess and pipes output to mongo express
-    cmdType: 'eval',
-    //subprocessTimeout: number of seconds of non-interaction before a subprocess is shut down
-    subprocessTimeout: 300,
-    //readOnly: if readOnly is true, components of writing are not visible.
-    readOnly: false
-  },
-
-  // Specify the default keyname that should be picked from a document to display in collections list.
-  // Keynames can be specified for every database and collection.
-  // If no keyname is specified, it defalts to '_id', which is a mandatory feild.
-  // For Example :
-  // defaultKeyNames{
-  //   "world_db":{  //Database Name
-  //     "continent":"cont_name", // collection:feild
-  //     "country":"country_name",
-  //     "city":"name"
-  //   }
-  // }
-  defaultKeyNames: {
-    "test": {
-      "articles": "title"
-    }
-  }
-};
diff --git a/vm/config/motd b/vm/config/motd
deleted file mode 100644
index 194c716be5d85c82de72c01f0bc748533cc14427..0000000000000000000000000000000000000000
--- a/vm/config/motd
+++ /dev/null
@@ -1,8 +0,0 @@
-====================
-Vipra Development VM
-====================
-
-Start database and web server manually:
- > service mongod restart
- > service tomcat restart
-