diff --git a/vipra-backend/src/main/java/de/vipra/rest/resource/TopicResource.java b/vipra-backend/src/main/java/de/vipra/rest/resource/TopicResource.java
index 5037e99e146471fb904007cef7808ab5e7671df2..69d76ea7fe4663f4c81b8ed1681b6aed83e7672c 100644
--- a/vipra-backend/src/main/java/de/vipra/rest/resource/TopicResource.java
+++ b/vipra-backend/src/main/java/de/vipra/rest/resource/TopicResource.java
@@ -15,6 +15,7 @@ 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;
 
 import org.bson.types.ObjectId;
 
@@ -104,7 +105,7 @@ public class TopicResource {
 	@Path("{id}/articles")
 	public Response getArticles(@PathParam("id") final String id, @QueryParam("skip") final Integer skip,
 			@QueryParam("limit") final Integer limit, @QueryParam("sort") @DefaultValue("title") final String sortBy,
-			@QueryParam("fields") final String fields) {
+			@QueryParam("fields") final String fields, @Context UriInfo uriInfo) {
 		final ResponseWrapper<List<ArticleFull>> res = new ResponseWrapper<>();
 		try {
 			final Topic topic = new Topic(MongoUtils.objectId(id));
diff --git a/vipra-ui/app/html/directives/article-link.html b/vipra-ui/app/html/directives/article-link.html
new file mode 100644
index 0000000000000000000000000000000000000000..96d2a1853b6f957de2162f2ec0efc96c2a6c8cdf
--- /dev/null
+++ b/vipra-ui/app/html/directives/article-link.html
@@ -0,0 +1,6 @@
+<span>
+  <a class="article-link" ui-sref="articles.show({id:article.id})">
+    <span ng-bind="article.title"></span>
+<ng-transclude/>
+</a>
+</span>
diff --git a/vipra-ui/app/html/directives/topic-link.html b/vipra-ui/app/html/directives/topic-link.html
new file mode 100644
index 0000000000000000000000000000000000000000..3423ff2bc20b5dde54324f3b2990914a202e29de
--- /dev/null
+++ b/vipra-ui/app/html/directives/topic-link.html
@@ -0,0 +1,7 @@
+<span>
+  <a class="topic-link" ui-sref="topics.show({id:topic.id})">
+    <span ng-bind="topic.name"></span>
+<ng-transclude/>
+</a>
+<topic-menu topic="topic" />
+</span>
diff --git a/vipra-ui/app/html/directives/topic-menu.html b/vipra-ui/app/html/directives/topic-menu.html
new file mode 100644
index 0000000000000000000000000000000000000000..8d3b33b220ada75728b5c6148f85f33ae72d1d63
--- /dev/null
+++ b/vipra-ui/app/html/directives/topic-menu.html
@@ -0,0 +1,12 @@
+<div class="dropdown inline-block">
+  <a data-toggle="dropdown">
+    <i class="fa fa-caret-down"></i>
+  </a>
+  <ul class="dropdown-menu dropdown-menu-right">
+    <li><a ui-sref="topics.show({id:topic.id})">Show</a></li>
+    <li><a ui-sref="network({type:'topics',id:topic.id})">Network</a></li>
+    <li><a ui-sref="topics.show.articles({id:topic.id})">Articles</a></li>
+    <li role="separator" class="divider"></li>
+    <li><a ng-click="renameTopic()">Rename...</a></li>
+  </ul>
+</div>
diff --git a/vipra-ui/app/html/explorer.html b/vipra-ui/app/html/explorer.html
index a75e5115437f55bfe6c9b2c157fb92db519c0204..a0ea30eca7e9a3c47417785e58d1c2c8473c4574 100644
--- a/vipra-ui/app/html/explorer.html
+++ b/vipra-ui/app/html/explorer.html
@@ -57,26 +57,6 @@
       </div>
       <div class="chart" highcharts="topicSeq"></div>
       <div class="message text-muted" ng-show="!topicsSelected">No topic selected</div>
-      <div class="topics">
-        <div class="row">
-          <div class="col-md-6 col-sm-12" ng-repeat="topic in topics | filter:{selected:true}">
-            <div class="panel panel-default panel-condensed">
-              <div class="panel-heading">
-                <span ng-bind="topic.name"></span>
-                <a ui-sref="topics.show({id:topic.id})">
-                  <i class="fa fa-link"></i>
-                </a>
-                <a ui-sref="network({type:'topics', id:topic.id})">
-                  <i class="fa fa-sitemap"></i>
-                </a>
-                <span class="colorbox shown" style="background:{{::topic.color}}"></span>
-              </div>
-              <div class="panel-body">
-              </div>
-            </div>
-          </div>
-        </div>
-      </div>
     </div>
   </div>
 </div>
diff --git a/vipra-ui/app/html/index.html b/vipra-ui/app/html/index.html
index 778502353cc8ab0b1236de6dc110dc6ee504c067..ec0dbe4df35470fbf89d6185ffe7cb0d414e73fe 100644
--- a/vipra-ui/app/html/index.html
+++ b/vipra-ui/app/html/index.html
@@ -2,10 +2,10 @@
   <div class="row" ng-hide="search">
     <div class="col-md-12 text-center">
       <svg class="logo hover heading" viewBox="0 0 200 120">
-        <polyline style="animation-delay:0s" class="logo-shape" points="0,0 100,45 100,75 0,0" fill="#006591"/>
-        <polyline style="animation-delay:.5s" class="logo-shape" points="100,45 200,0 100,75 100,45" fill="#0079a2"/>
-        <polyline style="animation-delay:1s" class="logo-shape" points="100,75 200,0 100,120 100,75" fill="#006591"/>
-        <polyline style="animation-delay:1.5s" class="logo-shape" points="0,0 100,75 100,120 0,0" fill="#0079a2"/>
+        <polyline style="animation-delay:0s" class="logo-shape" points="0,0 100,45 100,75 0,0" fill="#006591" />
+        <polyline style="animation-delay:.5s" class="logo-shape" points="100,45 200,0 100,75 100,45" fill="#0079a2" />
+        <polyline style="animation-delay:1s" class="logo-shape" points="100,75 200,0 100,120 100,75" fill="#006591" />
+        <polyline style="animation-delay:1.5s" class="logo-shape" points="0,0 100,75 100,120 0,0" fill="#0079a2" />
       </svg>
     </div>
   </div>
@@ -54,4 +54,4 @@
     </div>
   </div>
 </div>
-<div ng-cloak ui-view></div>
\ No newline at end of file
+<div ng-cloak ui-view></div>
diff --git a/vipra-ui/app/html/sequences/index.html b/vipra-ui/app/html/sequences/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/vipra-ui/app/html/sequences/show.html b/vipra-ui/app/html/sequences/show.html
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/vipra-ui/app/html/topics/index.html b/vipra-ui/app/html/topics/index.html
index 50d6d7a4290b26e086a1f8fe2d5b6695c12911c0..413d3d26e797e25071bd08c2984119ffe353af87 100644
--- a/vipra-ui/app/html/topics/index.html
+++ b/vipra-ui/app/html/topics/index.html
@@ -27,7 +27,7 @@
           <tbody>
             <tr ng-repeat="topic in topics">
               <td>
-                <a ui-sref="topics.show({id: topic.id})" ng-bind="::topic.name"></a>
+                <topic-link topic="topic" />
               </td>
             </tr>
           </tbody>
diff --git a/vipra-ui/app/html/topics/show.html b/vipra-ui/app/html/topics/show.html
index cf69e48b409e1ff3b9e09f1038269e9bd2e0b972..e04ddc66714301e6b531db7a3c9a55d8fc89b1eb 100644
--- a/vipra-ui/app/html/topics/show.html
+++ b/vipra-ui/app/html/topics/show.html
@@ -22,7 +22,7 @@
               <div class="dropdown">
                 <button class="btn btn-default dropdown-toggle" type="button" id="actionsDropdown" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
                   Actions
-                  <span class="caret"></span>
+                  <i class="fa fa-caret-down"></i>
                 </button>
                 <ul class="dropdown-menu" aria-labelledby="actionsDropdown">
                   <li><a ng-click="startRename()">Rename</a></li>
@@ -56,8 +56,8 @@
   <div class="row">
     <div class="col-md-12">
       <h3>Relevance</h3>
-      <div class="wrapper">
-        <div class="topbar">
+      <div class="panel panel-default">
+        <div class="panel-heading">
           <small>Values:</small>
           <div class="btn-group">
             <a class="btn btn-sm btn-default" ng-model="opts.seqstyle" bs-radio="'absolute'">Absolute</a>
@@ -70,31 +70,38 @@
             <a class="btn btn-sm btn-default" ng-model="opts.chartstyle" bs-radio="'spline'">Line</a>
           </div>
         </div>
-        <div class="area-chart" id="topic-seq" highcharts="topicSeq"></div>
+        <div class="panel-body">
+          <div class="area-chart" id="topic-seq" highcharts="topicSeq"></div>
+        </div>
       </div>
     </div>
   </div>
   <div class="row">
     <div class="col-md-12">
       <h3>Words</h3>
-      <div class="topbar">
-        <small>Sequence:</small>
-        <sequence-dropdown ng-model="sequenceId" sequences="topic.sequences"></sequence-dropdown>
+      <div class="panel panel-default">
+        <div class="panel-heading">
+          <small>Sequence:</small>
+          <sequence-dropdown ng-model="sequenceId" sequences="topic.sequences"></sequence-dropdown>
+        </div>
+        <table class="table table-condensed table-bordered table-hover" ng-show="sequence">
+          <thead>
+            <tr>
+              <th ng-model="opts.sortwords" sort-by="id">Word</th>
+              <th ng-model="opts.sortwords" sort-by="likeliness">Likeliness</th>
+            </tr>
+          </thead>
+          <tbody>
+            <tr ng-repeat="word in sequence.words | orderBy:opts.sortwords">
+              <td ng-bind="word.id"></td>
+              <td ng-bind="word.likeliness.toFixed(4)"></td>
+            </tr>
+          </tbody>
+        </table>
+        <div class="panel-footer" ng-show="sequence">
+          <ng-pluralize count="sequence.words.length||0" when="{0:'No words',1:'Top word',other:'Top {} words'}"></ng-pluralize>
+        </div>
       </div>
-      <table class="table table-condensed table-bordered table-hover" ng-show="sequence">
-        <thead>
-          <tr>
-            <th ng-model="opts.sortwords" sort-by="id">Word</th>
-            <th ng-model="opts.sortwords" sort-by="likeliness">Likeliness</th>
-          </tr>
-        </thead>
-        <tbody>
-          <tr ng-repeat="word in sequence.words | orderBy:opts.sortwords">
-            <td ng-bind="word.id"></td>
-            <td ng-bind="word.likeliness.toFixed(4)"></td>
-          </tr>
-        </tbody>
-      </table>
     </div>
   </div>
 </div>
diff --git a/vipra-ui/app/index.html b/vipra-ui/app/index.html
index ccdc2a362191c54096fbbe81b566f6e277b9bad7..6de3032a94501cacb0dae2b45e9448ad91a6f5ed 100644
--- a/vipra-ui/app/index.html
+++ b/vipra-ui/app/index.html
@@ -69,6 +69,9 @@
           <li ui-sref-active="active">
             <a ui-sref="topics">Topics</a>
           </li>
+          <li ui-sref-active="active">
+            <a ui-sref="sequences">Sequences</a>
+          </li>
         </ul>
         <ul class="nav navbar-nav navbar-right">
           <li ui-sref-active="active">
diff --git a/vipra-ui/app/js/app.js b/vipra-ui/app/js/app.js
index 9b0ad989a68b0419c619ac412378a22b7fc56960..aa9d621acba83a58a94ab468a0133cd36b512947 100644
--- a/vipra-ui/app/js/app.js
+++ b/vipra-ui/app/js/app.js
@@ -82,6 +82,20 @@
       controller: 'TopicsArticlesController'
     });
 
+    // states: sequences
+
+    $stateProvider.state('sequences', {
+      url: '/sequences',
+      templateUrl: 'html/sequences/index.html',
+      controller: 'SequencesIndexController'
+    });
+
+    $stateProvider.state('sequences.show', {
+      url: '/:id',
+      templateUrl: 'html/sequences/show.html',
+      controller: 'SequencesShowController'
+    });
+
   }]);
 
   app.config(['$httpProvider', function($httpProvider) {
diff --git a/vipra-ui/app/js/directives.js b/vipra-ui/app/js/directives.js
index 0bca36a518f5a86527873e1d717b4716ed0c254d..3e8c67c7fdb580d79c217cf825bc2a061f35c5bc 100644
--- a/vipra-ui/app/js/directives.js
+++ b/vipra-ui/app/js/directives.js
@@ -2,7 +2,7 @@
  * Vipra Application
  * Directives
  ******************************************************************************/
-/* globals angular, console, Vipra */
+/* globals angular, console, Vipra, bootbox */
 (function() {
 
   "use strict";
@@ -19,7 +19,7 @@
       restrict: 'E',
       replace: true,
       transclude: true,
-      template: '<a class="topic-link" ui-sref="topics.show({id:topic.id})"><span ng-bind="topic.name"></span><ng-transclude/></a>'
+      templateUrl: 'html/directives/topic-link.html'
     };
   });
 
@@ -31,7 +31,7 @@
       restrict: 'E',
       replace: true,
       transclude: true,
-      template: '<a class="article-link" ui-sref="articles.show({id:article.id})"><span ng-bind="article.title"></span><ng-transclude/></a>'
+      templateUrl: 'html/directives/article-link.html'
     };
   });
 
@@ -196,7 +196,31 @@
         $scope.check();
       },
       transclude: true,
-      template: '<span ng-transclude></span> <span class="caret" ng-class="{\'caret-up\':reverse}" ng-show="showCaret()"></span>'
+      template: '<span ng-transclude></span> <i class="fa" ng-class="{\'fa-caret-down\':!reverse, \'fa-caret-up\':reverse}" ng-show="showCaret()"></i>'
+    };
+  });
+
+  app.directive('topicMenu', function() {
+    return {
+      scope: {
+        topic: '='
+      },
+      restrict: 'E',
+      replace: true,
+      templateUrl: 'html/directives/topic-menu.html',
+      link: function($scope) {
+        $scope.renameTopic = function() {
+          bootbox.prompt({
+            title: 'Rename topic',
+            value: $scope.topic.name,
+            callback: function(name) {
+              if (name && name.length && name !== $scope.topic.name) {
+
+              }
+            }
+          });
+        };
+      }
     };
   });
 
diff --git a/vipra-ui/app/less/app.less b/vipra-ui/app/less/app.less
index b819dc5a22a8fe46e7642a83051bf467f9c597fd..7d81389997ea62e4ffc6ea90db9bee4aaee5fba8 100644
--- a/vipra-ui/app/less/app.less
+++ b/vipra-ui/app/less/app.less
@@ -8,6 +8,10 @@ body {
   padding-bottom: 20px;
 }
 
+.pointer,
+input[type=checkbox],
+.checkbox label::before,
+[sort-by],
 a:hover {
   cursor: pointer;
 }
@@ -250,13 +254,9 @@ a:hover {
     right: 0;
     bottom: 0;
   }
-  .topics,
   .chart {
     padding: 15px;
   }
-  .topics .panel-heading {
-    position: relative;
-  }
   .sequence {
     flex: 1 0 0;
   }
@@ -289,11 +289,6 @@ a:hover {
   }
 }
 
-input[type=checkbox],
-.checkbox label::before {
-  cursor: pointer;
-}
-
 .radio-inline {
   vertical-align: bottom;
 }
@@ -310,6 +305,7 @@ input[type=checkbox],
 }
 
 .searchclear {
+  .pointer;
   position: absolute;
   right: 5px;
   top: 0;
@@ -317,7 +313,6 @@ input[type=checkbox],
   height: 14px;
   margin: auto;
   font-size: 14px;
-  cursor: pointer;
   color: #ccc;
 }
 
@@ -346,15 +341,6 @@ input[type=checkbox],
   overflow-y: auto;
 }
 
-[sort-by] {
-  cursor: pointer;
-}
-
-.caret.caret-up {
-  border-top-width: 0;
-  border-bottom: 4px solid #000000;
-}
-
 .panel.panel-condensed {
   .panel-heading {
     padding: 5px 10px;
@@ -364,6 +350,10 @@ input[type=checkbox],
   }
 }
 
+.inline-block {
+  display: inline-block;
+}
+
 @-moz-keyframes spin {
   100% {
     -moz-transform: rotateY(360deg);
diff --git a/vipra-ui/bower.json b/vipra-ui/bower.json
index 7e8613c217b10bc8794b907822b9de8905de2cf4..f46a67d2bdca67f7e0251ab95151465d9f33a0d4 100644
--- a/vipra-ui/bower.json
+++ b/vipra-ui/bower.json
@@ -29,6 +29,7 @@
     "nya-bootstrap-select": "^2.x",
     "font-awesome": "^4.x",
     "awesome-bootstrap-checkbox": "^0.x",
-    "randomcolor": "randomColor#^0.x"
+    "randomcolor": "randomColor#^0.x",
+    "bootbox.js": "bootbox#^4.4.0"
   }
 }
diff --git a/vipra-ui/gulpfile.js b/vipra-ui/gulpfile.js
index bc5fed521378568cee5cd595a4ad74f3a3b07a8c..c8ba416b009df91a187ad69fba4cea06671dcdb8 100644
--- a/vipra-ui/gulpfile.js
+++ b/vipra-ui/gulpfile.js
@@ -6,7 +6,6 @@ var gulp = require('gulp'),
   uglify = require('gulp-uglify'),
   cleancss = require('gulp-clean-css'),
   webserver = require('gulp-webserver'),
-  sourcemaps = require('gulp-sourcemaps'),
   ngannotate = require('gulp-ng-annotate'),
   templatecache = require('gulp-angular-templatecache');
 
@@ -22,7 +21,8 @@ var assets = {
     'bower_components/vis/dist/vis.min.js',
     'bower_components/moment/min/moment.min.js',
     'bower_components/nya-bootstrap-select/dist/js/nya-bs-select.min.js',
-    'bower_components/randomcolor/randomColor.js'
+    'bower_components/randomcolor/randomColor.js',
+    'bower_components/bootbox.js/bootbox.js'
   ],
   css: [
     'bower_components/bootstrap/dist/css/bootstrap.min.css',
@@ -40,21 +40,17 @@ var assets = {
 
 gulp.task('less', function() {
   gulp.src('app/less/**/*.less')
-    //.pipe(sourcemaps.init())
     .pipe(concat('app.css'))
     .pipe(less())
     .pipe(cleancss())
-    //.pipe(sourcemaps.write('.'))
     .pipe(gulp.dest('public/css'));
 });
 
 gulp.task('js', function() {
   gulp.src('app/js/**/*.js')
-    //.pipe(sourcemaps.init())
     .pipe(concat('app.js'))
     .pipe(ngannotate())
     //.pipe(uglify())
-    //.pipe(sourcemaps.write('.'))
     .pipe(gulp.dest('public/js'));
 });
 
diff --git a/vipra-ui/package.json b/vipra-ui/package.json
index 5256a0e0dd8a9a4cb40189ce9ab7a4455b9bc315..87e1b48fb71a60a14f22100337443935cee55579 100644
--- a/vipra-ui/package.json
+++ b/vipra-ui/package.json
@@ -14,7 +14,6 @@
     "gulp-include": "^2.1.0",
     "gulp-less": "^3.0.5",
     "gulp-ng-annotate": "^2.0.0",
-    "gulp-sourcemaps": "^1.6.0",
     "gulp-uglify": "^1.5.1",
     "gulp-webserver": "^0.9.1"
   }
diff --git a/vipra-util/src/main/java/de/vipra/util/model/TopicRef.java b/vipra-util/src/main/java/de/vipra/util/model/TopicRef.java
index b0d26d8c437cc82aec81695fbfd2a92e32c85fca..7577b3e6a0b7f65bda2112e2dd22b163763e0a9b 100644
--- a/vipra-util/src/main/java/de/vipra/util/model/TopicRef.java
+++ b/vipra-util/src/main/java/de/vipra/util/model/TopicRef.java
@@ -4,7 +4,6 @@ import java.io.Serializable;
 
 import org.mongodb.morphia.annotations.Embedded;
 import org.mongodb.morphia.annotations.Reference;
-import org.mongodb.morphia.annotations.Transient;
 
 @SuppressWarnings("serial")
 @Embedded
@@ -15,9 +14,6 @@ public class TopicRef implements Comparable<TopicRef>, Serializable {
 
 	private Double share;
 
-	@Transient
-	private Integer count;
-
 	public Topic getTopic() {
 		return topic;
 	}
@@ -26,14 +22,6 @@ public class TopicRef implements Comparable<TopicRef>, Serializable {
 		this.topic = topic;
 	}
 
-	public Integer getCount() {
-		return count;
-	}
-
-	public void setCount(final Integer count) {
-		this.count = count;
-	}
-
 	public Double getShare() {
 		return share;
 	}
@@ -49,7 +37,7 @@ public class TopicRef implements Comparable<TopicRef>, Serializable {
 
 	@Override
 	public String toString() {
-		return "TopicRef [topic=" + topic + ", share=" + share + ", count=" + count + "]";
+		return "TopicRef [topic=" + topic + ", share=" + share + "]";
 	}
 
 }