diff --git a/vipra-cmd/runcfg/CMD.launch b/vipra-cmd/runcfg/CMD.launch
index 7f3fd45a4483d2684146995337cec4f7df7d6ee9..2684d5379e17d2688b8b6be10bfd0a026892f0fa 100644
--- a/vipra-cmd/runcfg/CMD.launch
+++ b/vipra-cmd/runcfg/CMD.launch
@@ -11,7 +11,7 @@
 </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="-tdp"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-S test -dcI /home/eike/repos/master/ma-impl/docker/data/test-1.json"/>
 <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="-ea"/>
diff --git a/vipra-cmd/src/main/java/de/vipra/cmd/lda/Analyzer.java b/vipra-cmd/src/main/java/de/vipra/cmd/lda/Analyzer.java
index be212bc682da4ad02d1c47b0077f06da0cbb35c7..2409ea023cf53bd54a56be0b2c9b7dab24f5fa69 100644
--- a/vipra-cmd/src/main/java/de/vipra/cmd/lda/Analyzer.java
+++ b/vipra-cmd/src/main/java/de/vipra/cmd/lda/Analyzer.java
@@ -214,11 +214,6 @@ public class Analyzer {
 			topicModel.setColorSeed(new Random().nextLong());
 		final List<Color> newColors = ColorUtils.generateRandomColors(topicCount, topicModel.getColorSeed());
 
-		topicModel.setWordCount((long) wordCount);
-		topicModel.setWindowCount((long) windowCount);
-		topicModel.setArticleCount((long) articleCount);
-		topicModel.setTopicCount((long) topicCount);
-
 		final boolean seqRelativeCutoff = modelConfig.getMinRelativeProbability() > 0;
 
 		// for each topic
@@ -499,6 +494,10 @@ public class Analyzer {
 		dbSequences.createMultiple(newSequences);
 		dbTopics.createMultiple(newTopics);
 
+		topicModel.setWordCount((long) wordCount);
+		topicModel.setWindowCount((long) windowCount);
+		topicModel.setArticleCount((long) articleCount);
+		topicModel.setTopicCount((long) newTopics.size());
 		topicModel.setLastGenerated(new Date());
 		dbTopicModels.replaceSingle(topicModel);
 	}
diff --git a/vipra-cmd/src/main/java/de/vipra/cmd/option/EditModelCommand.java b/vipra-cmd/src/main/java/de/vipra/cmd/option/EditModelCommand.java
index 2cb8e1bc21ddca4df208409ef41cf2df571b83d7..44e3558fd57918e8447645eb1b51a1cd2dde93bd 100644
--- a/vipra-cmd/src/main/java/de/vipra/cmd/option/EditModelCommand.java
+++ b/vipra-cmd/src/main/java/de/vipra/cmd/option/EditModelCommand.java
@@ -36,6 +36,7 @@ public class EditModelCommand implements Command {
 		ConsoleUtils.info("editing model: " + topicModel.getName());
 
 		final TopicModelConfig topicModelConfig = topicModel.getModelConfig();
+		topicModel.setGroup(ConsoleUtils.readString(" " + ConsoleUtils.PATH_T + " group", topicModel.getGroup(), true));
 		topicModelConfig.setDescription(
 				ConsoleUtils.readString(" " + ConsoleUtils.PATH_T + " description (↲ to skip)", topicModelConfig.getDescription(), true));
 		topicModelConfig.setkTopics(ConsoleUtils.readInt(" " + ConsoleUtils.PATH_T + " k topics", topicModelConfig.getkTopics(), 1, null, true));
@@ -78,7 +79,7 @@ public class EditModelCommand implements Command {
 		topicModelConfig.setWindowResolution(ConsoleUtils.readEnum(WindowResolution.class, " " + ConsoleUtils.PATH_L + " window resolution",
 				topicModelConfig.getWindowResolution()));
 
-		dbTopicModels.updateSingle(topicModel, "modelConfig");
+		dbTopicModels.replaceSingle(topicModel);
 		topicModelConfig.saveToFile(topicModelConfig.getModelDir(config.getDataDirectory()));
 		config.setTopicModelConfig(topicModelConfig);
 		Main.stats.stop("edit." + topicModel.getName());
diff --git a/vipra-cmd/src/main/java/de/vipra/cmd/text/ProcessedText.java b/vipra-cmd/src/main/java/de/vipra/cmd/text/ProcessedText.java
index d18bc7b4405a721d85f2fa5a731347235b07b8b8..1140f5ff4f04ae064a94eba7982bada7fa447faa 100644
--- a/vipra-cmd/src/main/java/de/vipra/cmd/text/ProcessedText.java
+++ b/vipra-cmd/src/main/java/de/vipra/cmd/text/ProcessedText.java
@@ -3,6 +3,7 @@ package de.vipra.cmd.text;
 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;
@@ -21,16 +22,22 @@ public class ProcessedText {
 	private final Map<String, String> lemmas;
 
 	public ProcessedText(final String text, final long wordCount, final Map<String, String> lemmas) {
-		final String[] allWords = text.toLowerCase().trim().split("\\s+");
+		final String[] allWords = text.trim().split("\\s+");
 		final List<String> wordList = new ArrayList<>(allWords.length);
-		for (final String word : allWords)
+		final Map<String, String> cleanedLemmas = new HashMap<>(lemmas.size());
+		for (final String word : allWords) {
 			if (word != null && !word.trim().isEmpty())
-				wordList.add(word.trim());
+				wordList.add(word.toLowerCase().trim());
+			final String lemma = lemmas.get(word);
+			if (lemma != null)
+				cleanedLemmas.put(lemma, word);
+		}
 		words = wordList.toArray(new String[allWords.length]);
 		originalWordCount = wordCount;
 		reducedWordCount = words.length;
 		reductionRatio = 1 - ((double) reducedWordCount / wordCount);
-		this.lemmas = lemmas;
+
+		this.lemmas = cleanedLemmas;
 
 		wordCounts = new CountMap<>();
 		for (final String word : words)
diff --git a/vipra-cmd/src/main/java/de/vipra/cmd/text/Processor.java b/vipra-cmd/src/main/java/de/vipra/cmd/text/Processor.java
index 115502257cfa7234b601f4bac38845d33ea36dc1..69f5586123a2631f7086912d6365a5af1d90dcc9 100644
--- a/vipra-cmd/src/main/java/de/vipra/cmd/text/Processor.java
+++ b/vipra-cmd/src/main/java/de/vipra/cmd/text/Processor.java
@@ -58,10 +58,10 @@ public class Processor {
 						final String lemma = word.get(LemmaAnnotation.class);
 						if (lemma != null) {
 							// collect unique words
-							sb.append(lemma.toLowerCase()).append(" ");
+							sb.append(lemma).append(" ");
 
 							if (!lemma.equals(word.word()))
-								lemmas.put(word.word(), lemma);
+								lemmas.put(lemma, word.word());
 						}
 					}
 				}
diff --git a/vipra-ui/app/html/partials/topicmodel-popover.html b/vipra-ui/app/html/partials/topicmodel-popover.html
new file mode 100644
index 0000000000000000000000000000000000000000..cbdc8737f69feaee3861fae93baae05475eeb21f
--- /dev/null
+++ b/vipra-ui/app/html/partials/topicmodel-popover.html
@@ -0,0 +1,34 @@
+<table class="popover-table">
+  <tr>
+    <td>Article count</td>
+    <td ng-bind="rootModels.topicModel.articleCount"></td>
+  </tr>
+  <tr>
+    <td>Topic count</td>
+    <td ng-bind="rootModels.topicModel.topicCount"></td>
+  </tr>
+  <tr>
+    <td>Entity count</td>
+    <td ng-bind="rootModels.topicModel.entityCount"></td>
+  </tr>
+  <tr>
+    <td>Word count</td>
+    <td ng-bind="rootModels.topicModel.wordCount"></td>
+  </tr>
+  <tr>
+    <td>Window count</td>
+    <td ng-bind="rootModels.topicModel.windowCount"></td>
+  </tr>
+  <tr>
+    <td>Last generated</td>
+    <td ng-bind-template="{{$root.Vipra.formatDateTime(rootModels.topicModel.lastGenerated)}}"></td>
+  </tr>
+  <tr>
+    <td>Last indexed</td>
+    <td ng-bind-template="{{$root.Vipra.formatDateTime(rootModels.topicModel.lastIndexed)}}"></td>
+  </tr>
+  <tr>
+    <td>Last modified</td>
+    <td ng-bind-template="{{$root.Vipra.formatDateTime(rootModels.topicModel.modified)}}"></td>
+  </tr>
+</table>
\ No newline at end of file
diff --git a/vipra-ui/app/index.html b/vipra-ui/app/index.html
index 91122d3fce881df0f9a27164fe9a719fc379df51..1947dd266616c69187dfe094022995df6904b0dc 100644
--- a/vipra-ui/app/index.html
+++ b/vipra-ui/app/index.html
@@ -53,7 +53,7 @@
           </div>
         </form>
         <ul class="nav navbar-nav navbar-right">
-          <li ng-class="{'text-italic active':rootModels.topicModel}">
+          <li ng-class="{'text-italic active':rootModels.topicModel}" bs-popover popover-template="partials/topicmodel-popover.html" popover-delay="500" popover-placement="bottom">
             <a class="active-topicmodel" tabindex="0" ng-click="chooseTopicModel()" ng-bind-template="{{rootModels.topicModel ? rootModels.topicModel.name : 'Models'}}" ng-attr-title="{{rootModels.topicModel.name}}&nbsp;&#10;{{rootModels.topicModel.modelConfig.description}}" analytics-on analytics-event="Menu Item (Topic Models)" analytics-category="Menu actions"></a>
           </li>
           <li ng-class="{disabled:!rootModels.helpEnabled}" ng-attr-title="{{ rootModels.helpEnabled ? 'Help' : 'No help available' }}">
@@ -116,7 +116,7 @@
             No topic models in the database. Create a topic model and import data into it to begin.
           </p>
         </div>
-        <div class="modal-body">
+        <div class="modal-body" ng-hide="topicModelsCount">
           <h4>Quick start</h4>
           <ol>
             <li>
diff --git a/vipra-ui/app/js/helpers.js b/vipra-ui/app/js/helpers.js
index 6e86b302cfe27ef48e0162230a6845cfc815db97..7faad66a05f59fa5e8fcf5aee73d581ea5686399 100644
--- a/vipra-ui/app/js/helpers.js
+++ b/vipra-ui/app/js/helpers.js
@@ -26,7 +26,7 @@
   };
 
   Vipra.toPercent = function(input, nums) {
-    if (typeof input === 'undefined')
+    if (typeof input === 'undefined' || isNaN(input))
       return;
     if (typeof input !== 'number')
       input = parseInt(input, 10);
diff --git a/vipra-ui/app/less/app.less b/vipra-ui/app/less/app.less
index f61828b4c53c6646bfa92dd7daf398dba28d0e47..2a9aacec02effdd16042d91d040ceac5749f18bb 100644
--- a/vipra-ui/app/less/app.less
+++ b/vipra-ui/app/less/app.less
@@ -1085,6 +1085,12 @@ entity-menu {
   padding: 0 5px;
 }
 
+.popover-table {
+  td + td {
+    padding-left: 5px;
+  }
+}
+
 [ng\:cloak], [ng-cloak], .ng-cloak {
   display: none !important;
 }
diff --git a/vipra-util/src/main/java/de/vipra/util/Statistics.java b/vipra-util/src/main/java/de/vipra/util/Statistics.java
index 064420cdbfada6a1215c645dd60d29cfd11c2548..b871706f51e87879904a4f5a4f653fd6736fe233 100644
--- a/vipra-util/src/main/java/de/vipra/util/Statistics.java
+++ b/vipra-util/src/main/java/de/vipra/util/Statistics.java
@@ -127,7 +127,7 @@ public class Statistics {
 
 	public void stopAll() {
 		final long curr = System.nanoTime();
-		for (Map.Entry<String, Long> run : running.entrySet())
+		for (final Map.Entry<String, Long> run : running.entrySet())
 			times.put(run.getKey(), curr - run.getValue());
 		running.clear();
 	}