diff --git a/README.md b/README.md
index 99c8554b6a10fea8a19e764a0cb438f19862b51f..7d8adc9dd2bf0cc83b8a09f1a3d688c9b8fade7d 100644
--- a/README.md
+++ b/README.md
@@ -13,6 +13,14 @@ This application was created by Eike Cochu for his master's degree thesis in com
 
 ## Installation
 
+1. If MongoDB or ElasticSearch run on different servers that the JavaEE application server, then the configuration files need to be changed. Change `config.properties` file
+  1. in `vipra.war`: Open `vipra.war` in an archive program, navigate to `/WEB-INF/classes` and edit `config.properties` file appropriately.
+  2. in `vipra-cmd.jar`: Open `vipra-cmd.jar` and edit `config.properties` file appropriately.
+  3. Test connection by running `./vipra -t`
+2. Copy `vipra.war` to your JavaEE application server
+
+## Development
+
 ### Requirements
 
 Run dependencies
@@ -29,7 +37,7 @@ Additional build dependencies
 * [Gulp (3.9+)](http://gulpjs.com/)
 * [Bower (1.7+](http://bower.io/)
 
-### Installation
+### Build
 
 1. Clone this repository to `./vipra`
 2. Navigate to `./vipra`
diff --git a/vipra-backend/src/main/resources/config.properties b/vipra-backend/src/main/resources/config.properties
index 07030840d45dd8fed8c2c2d5bff5fe0a54939a4f..61bfe4a9fb5a057b497c5947af9db341ff191c81 100644
--- a/vipra-backend/src/main/resources/config.properties
+++ b/vipra-backend/src/main/resources/config.properties
@@ -1,3 +1,8 @@
 db.host=localhost
 db.port=27017
-db.name=test
\ No newline at end of file
+db.name=test
+es.host=localhost
+es.port=9300
+tm.processor=corenlp
+tm.analyzer=jgibb
+tm.dtmpath=/home/eike/repos/master/dtm_release/dtm/main
\ No newline at end of file
diff --git a/vipra-cmd/runcfg/CMD - Indexing.launch b/vipra-cmd/runcfg/CMD - Indexing.launch
new file mode 100644
index 0000000000000000000000000000000000000000..801f3d3546cf52797d7c339394cd34819902ec59
--- /dev/null
+++ b/vipra-cmd/runcfg/CMD - Indexing.launch	
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/vipra-cmd/src/main/java/de/vipra/cmd/Main.java"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
+<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.m2e.launchconfig.classpathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="de.vipra.cmd.Main"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-e"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="vipra-cmd"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.m2e.launchconfig.sourcepathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dlog4j.configurationFile=log4j2dev.xml"/>
+</launchConfiguration>
diff --git a/vipra-cmd/src/main/java/de/vipra/cmd/lda/JGibbAnalyzer.java b/vipra-cmd/src/main/java/de/vipra/cmd/lda/JGibbAnalyzer.java
index 3af056a2d683fd06fb27bc17b88c84b5923bf60d..fb8a117e8cc64af114d541694d45792ebfd5baaf 100644
--- a/vipra-cmd/src/main/java/de/vipra/cmd/lda/JGibbAnalyzer.java
+++ b/vipra-cmd/src/main/java/de/vipra/cmd/lda/JGibbAnalyzer.java
@@ -107,21 +107,24 @@ public class JGibbAnalyzer extends Analyzer {
 		List<TopicFull> newTopics = new ArrayList<>(options.K);
 		Map<Integer, Topic> newTopicsMap = new HashMap<>(options.K);
 
-		// for each topic
-		for (int topicNum = 0; topicNum < options.K; topicNum++) {
-			TopicFull newTopic = new TopicFull();
-			List<TopicWord> topicWords = new ArrayList<>(options.twords);
-
-			// for each word
-			for (int wordNum = 0, lineNum = topicNum * options.K + 1; wordNum < options.twords; wordNum++, lineNum++) {
-				String[] parts = lines.get(lineNum).trim().split("\\s+");
-				TopicWord topicWord = new TopicWord(new Word(parts[0]), Double.parseDouble(parts[1]));
-				topicWords.add(topicWord);
+		TopicFull newTopic = null;
+		List<TopicWord> topicWords = null;
+		int topicNum = 0;
+
+		// for each line
+		for (String line : lines) {
+			if (!line.startsWith("\t")) {
+				newTopic = new TopicFull();
+				topicWords = new ArrayList<>();
+				newTopic.setWords(topicWords);
+				newTopics.add(newTopic);
+				newTopicsMap.put(topicNum++, new Topic(newTopic.getId()));
+				continue;
 			}
 
-			newTopic.setWords(topicWords);
-			newTopics.add(newTopic);
-			newTopicsMap.put(topicNum, new Topic(newTopic.getId()));
+			String[] parts = line.trim().split("\\s+");
+			TopicWord topicWord = new TopicWord(new Word(parts[0]), Double.parseDouble(parts[1]));
+			topicWords.add(topicWord);
 		}
 
 		dbTopics.drop();
diff --git a/vipra-cmd/src/main/resources/config.properties b/vipra-cmd/src/main/resources/config.properties
index 01b9444d6837e0520e7f4edf60af96e78bb7c300..61bfe4a9fb5a057b497c5947af9db341ff191c81 100644
--- a/vipra-cmd/src/main/resources/config.properties
+++ b/vipra-cmd/src/main/resources/config.properties
@@ -1,6 +1,8 @@
 db.host=localhost
 db.port=27017
 db.name=test
+es.host=localhost
+es.port=9300
 tm.processor=corenlp
 tm.analyzer=jgibb
 tm.dtmpath=/home/eike/repos/master/dtm_release/dtm/main
\ No newline at end of file
diff --git a/vipra-util/src/main/java/de/vipra/util/Config.java b/vipra-util/src/main/java/de/vipra/util/Config.java
index b4b680adfb2dd9c2511e5380caceb075ea59f2f4..0b1244d23fb8326d2feaa7114b3c595af356d3b3 100644
--- a/vipra-util/src/main/java/de/vipra/util/Config.java
+++ b/vipra-util/src/main/java/de/vipra/util/Config.java
@@ -51,6 +51,18 @@ public class Config {
 	@ConfigKey("db.name")
 	public String databaseName = Constants.DATABASE_NAME;
 
+	/**
+	 * ElasticSearch host
+	 */
+	@ConfigKey("es.host")
+	public String elasticsearchHost = Constants.ES_HOST;
+
+	/**
+	 * ElasticSearch connection port
+	 */
+	@ConfigKey("es.port")
+	public int elasticsearchPort = Constants.ES_PORT;
+
 	/**
 	 * The text processor to be used. To find a list of available values,
 	 * {@link de.vipra.util.Constants.Processor}.
diff --git a/vipra-util/src/main/java/de/vipra/util/ESClient.java b/vipra-util/src/main/java/de/vipra/util/ESClient.java
index e496048e80dad47bf2a5d72af922d0dbaadb0faa..e58d0dcd13f05ceb6b2ed3d7b119092d39fa5a62 100644
--- a/vipra-util/src/main/java/de/vipra/util/ESClient.java
+++ b/vipra-util/src/main/java/de/vipra/util/ESClient.java
@@ -23,8 +23,8 @@ public abstract class ESClient {
 	 */
 	public static TransportClient getClient(Config config) throws UnknownHostException {
 		if (client == null) {
-			client = TransportClient.builder().build().addTransportAddress(
-					new InetSocketTransportAddress(InetAddress.getByName(Constants.ES_HOST), Constants.ES_PORT));
+			client = TransportClient.builder().build().addTransportAddress(new InetSocketTransportAddress(
+					InetAddress.getByName(config.elasticsearchHost), config.elasticsearchPort));
 		}
 		return client;
 	}
diff --git a/vipra-util/src/main/java/de/vipra/util/service/MongoService.java b/vipra-util/src/main/java/de/vipra/util/service/MongoService.java
index c975d865029b23dcf1eced9520887bed77c5f0d9..e0e2a7107cf9d1c80a698f1b294ef7dc5a648aa3 100644
--- a/vipra-util/src/main/java/de/vipra/util/service/MongoService.java
+++ b/vipra-util/src/main/java/de/vipra/util/service/MongoService.java
@@ -41,7 +41,8 @@ public class MongoService<Type extends Model<IdType>, IdType> implements Service
 				field.setAccessible(true);
 
 			UpdateIgnore ui = field.getDeclaredAnnotation(UpdateIgnore.class);
-			this.updateFields.put(field.getName(), ui == null ? null : field);
+			if (ui == null)
+				this.updateFields.put(field.getName(), field);
 
 			QueryIgnore qi = field.getDeclaredAnnotation(QueryIgnore.class);
 			if (qi != null) {
@@ -183,6 +184,7 @@ public class MongoService<Type extends Model<IdType>, IdType> implements Service
 		} else {
 			Query<Type> query = datastore.createQuery(clazz).field("_id").equal(t.getId());
 			UpdateOperations<Type> ops = datastore.createUpdateOperations(clazz);
+			boolean noChanges = true;
 			for (String fieldName : fields) {
 				if (!this.updateFields.containsKey(fieldName))
 					throw new DatabaseException("field unknown: " + fieldName);
@@ -195,11 +197,13 @@ public class MongoService<Type extends Model<IdType>, IdType> implements Service
 						ops.unset(fieldName);
 					else
 						ops.set(fieldName, value);
+					noChanges = false;
 				} catch (IllegalArgumentException | IllegalAccessException e) {
 					throw new DatabaseException(e);
 				}
 			}
-			datastore.update(query, ops);
+			if (!noChanges)
+				datastore.update(query, ops);
 		}
 	}