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 794a86310c074edc3967bd2091935a6637191598..ccc261bdeb95ed6c1c4edd31707136e112eae3e2 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
@@ -1,6 +1,7 @@
 package de.vipra.rest.resource;
 
 import java.io.IOException;
+import java.util.Date;
 import java.util.List;
 
 import javax.servlet.ServletContext;
@@ -15,7 +16,6 @@ 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;
 
@@ -114,14 +114,25 @@ 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,
-			@Context final UriInfo uriInfo) {
+			@QueryParam("from") final Long fromDate, @QueryParam("to") final Long toDate) {
 		final ResponseWrapper<List<ArticleFull>> res = new ResponseWrapper<>();
 		try {
 			final Topic topic = new Topic(MongoUtils.objectId(id));
 			final QueryBuilder query = QueryBuilder.builder().eq("topics.topic", topic).skip(skip).limit(limit).sortBy(sortBy);
+
 			if (fields != null && !fields.isEmpty())
 				query.fields(true, StringUtils.getFields(fields));
 
+			if (fromDate != null) {
+				final Date d = new Date(fromDate * 1000);
+				query.gte("date", d);
+			}
+
+			if (toDate != null) {
+				final Date d = new Date(toDate * 1000);
+				query.lte("date", d);
+			}
+
 			final List<ArticleFull> articles = dbArticles.getMultiple(query);
 
 			if ((skip != null && skip > 0) || (limit != null && limit > 0))
diff --git a/vipra-ui/app/html/directives/article-link.html b/vipra-ui/app/html/directives/article-link.html
index 3f1c87c3affe6374ae7cc014b649a1f72d47ea4b..6573ef9fe67d929dd4b276ff98e338875d26fb4a 100644
--- a/vipra-ui/app/html/directives/article-link.html
+++ b/vipra-ui/app/html/directives/article-link.html
@@ -7,5 +7,5 @@
 		<i class="fa text-muted pointer" ng-class="{'fa-chevron-down':!excerptShown, 'fa-chevron-up':excerptShown}" ng-click="toggleExcerpt()" ng-if="::showExcerpt"></i>
   	<span class="badge" ng-bind="::article.topicsCount" ng-attr-title="{{::article.topicsCount}} topic(s)" ng-if="::showBadge"></span>
   </div>
-  <div ng-bind="excerpt" ng-if="excerptShown"></div>
+  <div ng-bind="excerpt" ng-if="excerptShown" class="excerpt"></div>
 </span>
diff --git a/vipra-ui/app/html/directives/sequence-dropdown.html b/vipra-ui/app/html/directives/sequence-dropdown.html
index 09cddc2dec4652c955b50bc9f833ff0f9cb226b4..a786621254b7d1cc46df10a392a88777f232873a 100644
--- a/vipra-ui/app/html/directives/sequence-dropdown.html
+++ b/vipra-ui/app/html/directives/sequence-dropdown.html
@@ -1,5 +1,5 @@
-<ol class="nya-bs-select nya-bs-condensed" ng-model="ngModel" ng-class="{dropup:showDropup}">
-  <li value="{{sequence.id}}" class="nya-bs-option" ng-repeat="sequence in sequences">
+<ol class="nya-bs-select nya-bs-condensed" ng-model="ngModel" ng-class="{dropup:showDropup}" disabled="!sequences">
+  <li class="nya-bs-option" nya-bs-option="sequence in sequences">
     <a ng-bind="sequence.label"></a>
   </li>
 </ol>
diff --git a/vipra-ui/app/html/explorer.html b/vipra-ui/app/html/explorer.html
index 9f467b8f09ba0472f0090bd6875b011c2bb26624..6e5dd6286effe22d866d7bba9351e0a98ad2c7e6 100644
--- a/vipra-ui/app/html/explorer.html
+++ b/vipra-ui/app/html/explorer.html
@@ -94,7 +94,8 @@
       <div class="wrapper">
         <div class="topbar">
           <small>Sequence:</small>
-          <sequence-dropdown ng-model="explorerModels.sequenceId" sequences="explorerModels.activeTopic.sequences" clear="true"></sequence-dropdown>
+          <sequence-dropdown ng-model="explorerModels.activeSequence" sequences="explorerModels.activeTopic.sequences"></sequence-dropdown>
+          <button class="btn btn-sm btn-default" ng-click="clearSequence()" ng-disabled="!explorerModels.activeSequence">Clear</button>
         </div>
       </div>
     </div>
diff --git a/vipra-ui/app/html/topics/show.html b/vipra-ui/app/html/topics/show.html
index c7c29ca170c7e532baea4cb3eabc10507abc3557..9b10d2f1f83e15015e6f9bec73727a88ba6ea2ce 100644
--- a/vipra-ui/app/html/topics/show.html
+++ b/vipra-ui/app/html/topics/show.html
@@ -113,10 +113,10 @@
             <div class="panel panel-default">
               <div class="panel-heading seq-head-foot">
                 <small>Sequence:</small>
-                <sequence-dropdown ng-model="topicsShowModels.sequenceId" sequences="topic.sequences"></sequence-dropdown>
+                <sequence-dropdown ng-model="topicsShowModels.sequence" sequences="topic.sequences"></sequence-dropdown>
                 <div class="pull-right" ng-if="!sequenceCompare">
                   <small>Compare to:</small>
-                  <sequence-dropdown ng-model="topicsShowModels.sequenceIdCompare" sequences="topic.sequences"></sequence-dropdown>
+                  <sequence-dropdown ng-model="topicsShowModels.sequenceCompare" sequences="topic.sequences"></sequence-dropdown>
                 </div>
               </div>
               <table class="table table-condensed table-bordered table-hover table-fixed table-compare" ng-show="sequence" ng-cloak>
@@ -164,7 +164,7 @@
             <div class="panel panel-default">
               <div class="panel-heading seq-head-foot">
                 <small>Sequence:</small>
-                <sequence-dropdown ng-model="topicsShowModels.sequenceIdCompare" sequences="topic.sequences"></sequence-dropdown>
+                <sequence-dropdown ng-model="topicsShowModels.sequenceCompare" sequences="topic.sequences"></sequence-dropdown>
                 <button type="button" class="close" ng-click="closeCompare()"><span aria-hidden="true">&times;</span></button>
               </div>
               <table class="table table-condensed table-bordered table-hover table-fixed table-compare">
diff --git a/vipra-ui/app/js/controllers.js b/vipra-ui/app/js/controllers.js
index 396553cf118bcdd38cb77fd215cbb7b00c99d1ff..c6643beaac9cbf682df48323b5fe8236485bf08c 100644
--- a/vipra-ui/app/js/controllers.js
+++ b/vipra-ui/app/js/controllers.js
@@ -572,7 +572,7 @@
       $scope.changeSelectedTopics = function() {
         if($scope.explorerModels.activeTopic && !$scope.explorerModels.activeTopic.selected) {
           delete $scope.explorerModels.activeTopic;
-          delete $scope.explorerModels.sequenceId;
+          delete $scope.explorerModels.activeSequence;
         }
 
         $scope.redrawGraph();
@@ -670,15 +670,16 @@
       $scope.pointSelected = function(e) {
         $scope.$apply(function() {
           $scope.activateTopic(e.point.topic);
+          $scope.activateSequence(e.point.sequence);
         });
       };
 
       $scope.activateTopic = function(topic) {
-        var active = topic.active;
-        for(var i = 0; i < $scope.topics.length; i++) {
-          $scope.topics[i].active = false;
-        }
-        topic.active = !active;
+        $scope.explorerModels.activeTopic = topic;
+      };
+
+      $scope.activateSequence = function(seq) {
+        $scope.explorerModels.activeSequence = seq;
       };
 
       $scope.$watchGroup(['explorerModels.seqstyle', 'explorerModels.chartstyle', 'explorerModels.chartstack'], $scope.redrawGraph);
@@ -698,11 +699,15 @@
         }, 0);
       });
 
-      $scope.$watch('explorerModels.activeTopic', function() {
-        if(!$scope.activeTopic) return;
+      $scope.clearSequence = function() {
+        if(!$scope.explorerModels.activeSequence) return;
 
-        // TODO implement
-      });
+        delete $scope.explorerModels.activeSequence;
+        var selectedPoints = topicRelChartElement.highcharts().getSelectedPoints();
+        for(var i = 0; i < selectedPoints.length; i++) {
+          selectedPoints[i].select(false);
+        }
+      };
     }
   ]);
 
@@ -949,7 +954,7 @@
 
         // preselect first sequence
         if ($scope.topic.sequences && $scope.topic.sequences.length)
-          $scope.topicsShowModels.sequenceId = $scope.topic.sequences[0].id;
+          $scope.topicsShowModels.sequence = $scope.topic.sequences[0];
 
         $timeout(function() {
           $scope.redrawRelevanceGraph();
@@ -1074,7 +1079,7 @@
 
       $scope.closeCompare = function() {
         delete $scope.sequenceCompare;
-        delete $scope.topicsShowModels.sequenceIdCompare;
+        delete $scope.topicsShowModels.sequenceCompare;
       };
 
       $scope.$watch('topicsShowModels.relSeqstyle', $scope.redrawRelevanceGraph);
@@ -1083,22 +1088,22 @@
       $scope.$watch('topicsShowModels.wordSeqstyle', $scope.redrawWordEvolutionChart);
       $scope.$watch('topicsShowModels.wordChartstyle', $scope.redrawWordEvolutionChart);
 
-      $scope.$watch('topicsShowModels.sequenceId', function() {
-        if (!$scope.topicsShowModels.sequenceId) return;
+      $scope.$watch('topicsShowModels.sequence', function() {
+        if (!$scope.topicsShowModels.sequence) return;
 
         SequenceFactory.get({
-          id: $scope.topicsShowModels.sequenceId
+          id: $scope.topicsShowModels.sequence.id
         }, function(data) {
           $scope.sequence = data;
           $scope.recalcSeqChange();
         });
       });
 
-      $scope.$watch('topicsShowModels.sequenceIdCompare', function() {
-        if (!$scope.topicsShowModels.sequenceIdCompare) return;
+      $scope.$watch('topicsShowModels.sequenceCompare', function() {
+        if (!$scope.topicsShowModels.sequenceCompare) return;
 
         SequenceFactory.get({
-          id: $scope.topicsShowModels.sequenceIdCompare
+          id: $scope.topicsShowModels.sequenceCompare.id
         }, function(data) {
           $scope.sequenceCompare = data;
           $scope.recalcSeqChange();
diff --git a/vipra-ui/app/js/directives.js b/vipra-ui/app/js/directives.js
index cc2fada9dec44cb4c16bfb7ade2eda152e03e438..f0509848c60fdb955cb796b6fc45d3d19b7a4ce9 100644
--- a/vipra-ui/app/js/directives.js
+++ b/vipra-ui/app/js/directives.js
@@ -257,12 +257,10 @@
       scope: {
         ngModel: '=',
         sequences: '=',
-        dropup: '@',
-        clear: '@'
+        dropup: '@'
       },
       link: function($scope) {
         $scope.showDropup = $scope.dropup === 'true';
-        $scope.showClear = $scope.clear === 'true';
 
         $scope.$watch('sequences', function(newValue) {
           if (newValue) {
diff --git a/vipra-ui/app/less/app.less b/vipra-ui/app/less/app.less
index d1a4c835f9b70d7d6c55aecd8ab04dbd85a30787..e3d94c6826c5c14406b545fa022a1bd438b55c57 100644
--- a/vipra-ui/app/less/app.less
+++ b/vipra-ui/app/less/app.less
@@ -553,6 +553,11 @@ entity-menu {
   }
 }
 
+.excerpt {
+  padding-top: 10px;
+  color: #555;
+}
+
 @-moz-keyframes spin {
   100% {
     -moz-transform: rotateY(360deg);
diff --git a/vipra-util/src/main/java/de/vipra/util/Constants.java b/vipra-util/src/main/java/de/vipra/util/Constants.java
index ed5c39e9923a7f2f23f1b39632c8403817ffb1a7..936f6b4e432ed6977afc9e5f2a979215d59f2ddb 100644
--- a/vipra-util/src/main/java/de/vipra/util/Constants.java
+++ b/vipra-util/src/main/java/de/vipra/util/Constants.java
@@ -273,7 +273,7 @@ public class Constants {
 	 * The length of the text excerpt used for indexing and displaying text in
 	 * search results.
 	 */
-	public static final int EXCERPT_LENGTH = 250;
+	public static final int EXCERPT_LENGTH = 500;
 
 	/*
 	 * OTHER