diff --git a/ma-impl.sublime-workspace b/ma-impl.sublime-workspace
index ab22af651f5f4fde3e73eedba2a754c90b49bbb6..e7e2fa383ec69f429e95d1be2613a518f6eface1 100644
--- a/ma-impl.sublime-workspace
+++ b/ma-impl.sublime-workspace
@@ -279,6 +279,30 @@
 	},
 	"buffers":
 	[
+		{
+			"file": "vipra-ui/app/templates/index.hbs",
+			"settings":
+			{
+				"buffer_size": 1530,
+				"line_ending": "Unix"
+			}
+		},
+		{
+			"file": "vipra-ui/app/styles/app.scss",
+			"settings":
+			{
+				"buffer_size": 914,
+				"line_ending": "Unix"
+			}
+		},
+		{
+			"file": "vipra-ui/app/adapters/application.js",
+			"settings":
+			{
+				"buffer_size": 506,
+				"line_ending": "Unix"
+			}
+		}
 	],
 	"build_system": "",
 	"build_system_choices":
@@ -462,33 +486,48 @@
 		"/home/eike/repos/master/ma-impl/vipra-ui/app",
 		"/home/eike/repos/master/ma-impl/vipra-ui/app/adapters",
 		"/home/eike/repos/master/ma-impl/vipra-ui/app/components",
-		"/home/eike/repos/master/ma-impl/vipra-ui/app/helpers",
+		"/home/eike/repos/master/ma-impl/vipra-ui/app/controllers/articles",
+		"/home/eike/repos/master/ma-impl/vipra-ui/app/controllers/topics",
+		"/home/eike/repos/master/ma-impl/vipra-ui/app/controllers/words",
+		"/home/eike/repos/master/ma-impl/vipra-ui/app/models",
 		"/home/eike/repos/master/ma-impl/vipra-ui/app/routes",
-		"/home/eike/repos/master/ma-impl/vipra-ui/app/templates"
+		"/home/eike/repos/master/ma-impl/vipra-ui/app/routes/articles",
+		"/home/eike/repos/master/ma-impl/vipra-ui/app/routes/topics",
+		"/home/eike/repos/master/ma-impl/vipra-ui/app/routes/words",
+		"/home/eike/repos/master/ma-impl/vipra-ui/app/styles",
+		"/home/eike/repos/master/ma-impl/vipra-ui/app/templates",
+		"/home/eike/repos/master/ma-impl/vipra-ui/app/templates/articles",
+		"/home/eike/repos/master/ma-impl/vipra-ui/app/templates/components",
+		"/home/eike/repos/master/ma-impl/vipra-ui/app/templates/words"
 	],
 	"file_history":
 	[
+		"/home/eike/repos/master/ma-impl/vipra-ui/app/models/search.js",
+		"/home/eike/repos/master/ma-impl/vipra-ui/app/controllers/index.js",
+		"/home/eike/repos/master/ma-impl/vipra-ui/app/routes/index.js",
+		"/home/eike/repos/master/ma-impl/vipra-ui/app/components/debounced-input.js",
+		"/home/eike/repos/master/ma-impl/vipra-ui/app/controllers/articles/index.js",
+		"/home/eike/repos/master/ma-impl/vipra-ui/app/templates/application.hbs",
+		"/home/eike/repos/master/ma-impl/vipra-ui/app/routes/topics/index.js",
+		"/home/eike/repos/master/ma-impl/vipra-ui/app/routes/words/index.js",
+		"/home/eike/repos/master/ma-impl/vipra-ui/app/controllers/words/index.js",
+		"/home/eike/repos/master/ma-impl/vipra-ui/app/routes/articles/index.js",
 		"/home/eike/repos/master/ma-impl/vipra-ui/app/templates/index.hbs",
+		"/home/eike/repos/master/ma-impl/vipra-ui/app/models/word.js",
 		"/home/eike/Downloads/files.txt",
-		"/home/eike/repos/master/ma-impl/vipra-ui/app/templates/application.hbs",
 		"/home/eike/repos/master/ma-impl/vipra-ui/app/components/pagination-bar.js",
 		"/home/eike/.cache/.fr-kZOCSD/META-INF/MANIFEST.MF",
 		"/home/eike/repos/master/ma-impl/Vagrantfile",
-		"/home/eike/repos/master/ma-impl/vipra-ui/app/routes/topics/index.js",
-		"/home/eike/repos/master/ma-impl/vipra-ui/app/routes/words/index.js",
-		"/home/eike/repos/master/ma-impl/vipra-ui/app/routes/articles/index.js",
 		"/home/eike/repos/master/ma-impl/vipra-ui/app/templates/articles/index.hbs",
 		"/home/eike/repos/master/ma-impl/vipra-ui/app/templates/topics/index.hbs",
 		"/home/eike/repos/master/ma-impl/vipra-ui/app/components/items-list.js",
 		"/home/eike/repos/master/ma-impl/vipra-ui/app/templates/components/items-list.hbs",
 		"/home/eike/repos/master/ma-impl/vipra-ui/app/templates/words/index.hbs",
 		"/home/eike/repos/master/ma-impl/vipra-ui/app/templates/components/pagination-bar.hbs",
-		"/home/eike/repos/master/ma-impl/vipra-ui/app/controllers/words/index.js",
 		"/home/eike/repos/master/ma-impl/vipra-ui/app/controllers/words.js",
 		"/home/eike/repos/master/ma-impl/vipra-ui/app/adapters/application.js",
 		"/home/eike/repos/master/ma-impl/vipra-ui/app/styles/app.scss",
 		"/home/eike/repos/master/ma-impl/vipra-ui/app/helpers/is-empty.js",
-		"/home/eike/repos/master/ma-impl/vipra-ui/app/routes/index.js",
 		"/home/eike/repos/master/ma-impl/vipra-ui/app/models/import.js",
 		"/home/eike/repos/master/ma-impl/vipra-ui/app/router.js",
 		"/home/eike/repos/master/ma-impl/vipra-ui/app/styles/sticky-footer.scss",
@@ -515,7 +554,6 @@
 		"/home/eike/repos/master/ma-impl/vipra-ui/app/index.html",
 		"/home/eike/repos/master/ma-impl/vipra-ui/app/routes/words/show.js",
 		"/home/eike/repos/master/ma-impl/vipra-ui/app/templates/words/show.hbs",
-		"/home/eike/repos/master/ma-impl/vipra-ui/app/models/word.js",
 		"/home/eike/repos/master/ma-impl/vipra-ui/app/routes/words",
 		"/home/eike/repos/master/ma-impl/vipra-ui/app/models/topic.js",
 		"/home/eike/repos/master/ma-impl/vipra-ui/app/models/article.js",
@@ -591,11 +629,7 @@
 		"/home/eike/Repositories/fu/ss15/ma/impl/vipra-ui/app/templates/articles/list.hbs",
 		"/home/eike/Repositories/fu/ss15/ma/impl/vm/bootstrap.sh",
 		"/home/eike/Repositories/fu/ss15/ma/impl/vipra-ui/app/adapters/application.js",
-		"/home/eike/Repositories/fu/ss15/ma/impl/vipra-ui/app/routes/articles/list.js",
-		"/home/eike/Repositories/fu/ss15/ma/impl/vipra-ui/app/templates/articles/show.hbs",
-		"/home/eike/Repositories/fu/ss15/ma/impl/vipra-ui/app/components/filter-text.js",
-		"/home/eike/Repositories/fu/ss15/ma/impl/vm/webapps/test/index.html",
-		"/home/eike/Repositories/fu/ss15/ma/impl/vipra-ui/app/controllers/articles/list.js"
+		"/home/eike/Repositories/fu/ss15/ma/impl/vipra-ui/app/routes/articles/list.js"
 	],
 	"find":
 	{
@@ -919,8 +953,99 @@
 	"groups":
 	[
 		{
+			"selected": 1,
 			"sheets":
 			[
+				{
+					"buffer": 0,
+					"file": "vipra-ui/app/templates/index.hbs",
+					"semi_transient": false,
+					"settings":
+					{
+						"buffer_size": 1530,
+						"regions":
+						{
+						},
+						"selection":
+						[
+							[
+								1352,
+								1352
+							]
+						],
+						"settings":
+						{
+							"syntax": "Packages/Handlebars/grammars/Handlebars.tmLanguage",
+							"tab_size": 2,
+							"translate_tabs_to_spaces": true
+						},
+						"translation.x": 0.0,
+						"translation.y": 0.0,
+						"zoom_level": 1.0
+					},
+					"stack_index": 1,
+					"type": "text"
+				},
+				{
+					"buffer": 1,
+					"file": "vipra-ui/app/styles/app.scss",
+					"semi_transient": false,
+					"settings":
+					{
+						"buffer_size": 914,
+						"regions":
+						{
+						},
+						"selection":
+						[
+							[
+								681,
+								681
+							]
+						],
+						"settings":
+						{
+							"syntax": "Packages/SCSS/SCSS.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"
+				},
+				{
+					"buffer": 2,
+					"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": 2,
+					"type": "text"
+				}
 			]
 		}
 	],
diff --git a/vipra-cmd.sh b/vipra
similarity index 100%
rename from vipra-cmd.sh
rename to vipra
diff --git a/vipra-cmd/src/main/java/de/vipra/cmd/Options.java b/vipra-cmd/src/main/java/de/vipra/cmd/Options.java
new file mode 100644
index 0000000000000000000000000000000000000000..8f1da6be38abfb6abfe3efbe7923ba65579c9f10
--- /dev/null
+++ b/vipra-cmd/src/main/java/de/vipra/cmd/Options.java
@@ -0,0 +1,5 @@
+package de.vipra.cmd;
+
+public class Options {
+
+}
diff --git a/vipra-rest/src/main/java/de/vipra/rest/resource/ArticleResource.java b/vipra-rest/src/main/java/de/vipra/rest/resource/ArticleResource.java
index e4f8a2b8744292e85985ce575156f4a79d294217..f760797f6d2c27c8d8ab09bcaab58c608e87afc8 100644
--- a/vipra-rest/src/main/java/de/vipra/rest/resource/ArticleResource.java
+++ b/vipra-rest/src/main/java/de/vipra/rest/resource/ArticleResource.java
@@ -5,7 +5,10 @@ import java.net.MalformedURLException;
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.net.URL;
+import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
+import java.util.Map;
 
 import javax.servlet.ServletContext;
 import javax.ws.rs.Consumes;
@@ -26,12 +29,18 @@ import org.bson.types.ObjectId;
 import org.ehcache.Cache;
 import org.ehcache.CacheManager;
 import org.ehcache.config.CacheConfigurationBuilder;
+import org.elasticsearch.action.search.SearchResponse;
+import org.elasticsearch.client.transport.TransportClient;
+import org.elasticsearch.index.query.QueryBuilders;
+import org.elasticsearch.search.SearchHit;
+import org.elasticsearch.search.SearchHits;
 
 import de.vipra.rest.APIMediaType;
 import de.vipra.rest.Messages;
 import de.vipra.rest.model.APIError;
 import de.vipra.rest.model.Wrapper;
 import de.vipra.util.Config;
+import de.vipra.util.ESClient;
 import de.vipra.util.MongoUtils;
 import de.vipra.util.StringUtils;
 import de.vipra.util.ex.ConfigException;
@@ -47,6 +56,7 @@ public class ArticleResource {
 
 	final Cache<String, ArticleFull> cache;
 	final DatabaseService<ArticleFull, ObjectId> service;
+	final TransportClient client;
 
 	public ArticleResource(@Context ServletContext servletContext) throws ConfigException, IOException {
 		Config config = Config.getConfig();
@@ -58,12 +68,22 @@ public class ArticleResource {
 			articleCache = manager.createCache("articlecache", CacheConfigurationBuilder.newCacheConfigurationBuilder()
 					.buildConfig(String.class, ArticleFull.class));
 		this.cache = articleCache;
+
+		client = ESClient.getClient(config);
 	}
 
 	@GET
 	@Produces(APIMediaType.APPLICATION_JSONAPI)
 	public Response getArticles(@QueryParam("skip") Integer skip, @QueryParam("limit") Integer limit,
-			@QueryParam("sort") @DefaultValue("date") String sortBy, @QueryParam("fields") String fields) {
+			@QueryParam("sort") @DefaultValue("date") String sortBy, @QueryParam("fields") String fields,
+			@QueryParam("query") String query) {
+		if (query == null)
+			return getArticlesFromDb(skip, limit, sortBy, fields);
+		else
+			return getArticlesFromIndex(skip, limit, query);
+	}
+
+	private Response getArticlesFromDb(Integer skip, Integer limit, String sortBy, String fields) {
 		Wrapper<List<ArticleFull>> res = new Wrapper<>();
 
 		if (skip != null && limit != null)
@@ -87,6 +107,40 @@ public class ArticleResource {
 		}
 	}
 
+	private Response getArticlesFromIndex(Integer skip, Integer limit, String query) {
+		Wrapper<List<ArticleFull>> res = new Wrapper<>();
+
+		if (skip == null || skip < 0)
+			skip = 0;
+
+		if (limit == null || limit < 0)
+			limit = 20;
+
+		SearchResponse response = null;
+		try {
+			response = client.prepareSearch("articles").setQuery(QueryBuilders.multiMatchQuery(query, "_all"))
+					.setFrom(skip).setSize(limit).execute().actionGet();
+		} catch (Exception e) {
+			res.addError(new APIError(Response.Status.BAD_REQUEST, "Error", e.getMessage()));
+			return res.badRequest();
+		}
+
+		SearchHits hits = response.getHits();
+		List<ArticleFull> articles = new ArrayList<>(10);
+		for (SearchHit hit : hits) {
+			Map<String, Object> source = hit.getSource();
+			ArticleFull article = new ArticleFull();
+			article.setId(MongoUtils.objectId(hit.getId()));
+			article.setTitle(source.get("title").toString());
+			article.setText(StringUtils.ellipsize(source.get("text").toString(), 150));
+			articles.add(article);
+		}
+
+		res.addMeta("total", articles.size());
+
+		return res.ok(articles);
+	}
+
 	@GET
 	@Produces(APIMediaType.APPLICATION_JSONAPI)
 	@Consumes(APIMediaType.APPLICATION_JSONAPI)
diff --git a/vipra-rest/src/main/java/de/vipra/rest/resource/SearchResource.java b/vipra-rest/src/main/java/de/vipra/rest/resource/SearchResource.java
deleted file mode 100644
index 3f7c24a61640c5de4ca98cf6057839560e7345e1..0000000000000000000000000000000000000000
--- a/vipra-rest/src/main/java/de/vipra/rest/resource/SearchResource.java
+++ /dev/null
@@ -1,86 +0,0 @@
-package de.vipra.rest.resource;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-import javax.servlet.ServletContext;
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-import javax.ws.rs.QueryParam;
-import javax.ws.rs.core.Context;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.UriInfo;
-
-import org.elasticsearch.action.search.SearchResponse;
-import org.elasticsearch.action.search.SearchType;
-import org.elasticsearch.client.transport.TransportClient;
-import org.elasticsearch.index.query.QueryBuilders;
-import org.elasticsearch.search.SearchHit;
-import org.elasticsearch.search.SearchHits;
-
-import de.vipra.rest.APIMediaType;
-import de.vipra.rest.model.APIError;
-import de.vipra.rest.model.Wrapper;
-import de.vipra.util.Config;
-import de.vipra.util.ESClient;
-import de.vipra.util.MongoUtils;
-import de.vipra.util.StringUtils;
-import de.vipra.util.ex.ConfigException;
-import de.vipra.util.model.ArticleFull;
-
-@Path("search")
-public class SearchResource {
-
-	@Context
-	UriInfo uri;
-
-	final TransportClient client;
-
-	public SearchResource(@Context ServletContext servletContext) throws IOException, ConfigException {
-		Config config = Config.getConfig();
-		client = ESClient.getClient(config);
-	}
-
-	@GET
-	@Produces(APIMediaType.APPLICATION_JSONAPI)
-	public Response search(@QueryParam("query") String query, @QueryParam("skip") Integer skip,
-			@QueryParam("limit") Integer limit, @QueryParam("excerpt") Integer excerpt) {
-		Wrapper<List<ArticleFull>> res = new Wrapper<>();
-
-		if (skip == null || skip < 0)
-			skip = 0;
-
-		if (limit == null || limit < 0)
-			limit = 20;
-
-		SearchResponse response = null;
-		try {
-			response = client.prepareSearch("articles").setSearchType(SearchType.QUERY_AND_FETCH)
-					.setQuery(QueryBuilders.multiMatchQuery(query, "_all")).setFrom(skip).setSize(limit).execute()
-					.actionGet();
-		} catch (Exception e) {
-			res.addError(new APIError(Response.Status.BAD_REQUEST, "Error", e.getMessage()));
-			return res.badRequest();
-		}
-
-		SearchHits hits = response.getHits();
-		List<ArticleFull> articles = new ArrayList<>(10);
-		for (SearchHit hit : hits) {
-			Map<String, Object> source = hit.getSource();
-			ArticleFull article = new ArticleFull();
-			article.setId(MongoUtils.objectId(hit.getId()));
-			article.setTitle(source.get("title").toString());
-			if (excerpt != null && excerpt > 0)
-				article.setText(StringUtils.ellipsize(source.get("text").toString(), excerpt));
-			articles.add(article);
-		}
-
-		res.addMeta("total", articles.size());
-
-		return res.ok(articles);
-	}
-
-}
diff --git a/vipra-rest/src/main/resources/log4j2.xml b/vipra-rest/src/main/resources/log4j2.xml
index 871334005580a7821f2a6e7f7c2517ab454b2e17..f45f0f9e28f912ba4ff52186952326c16d08ae7e 100644
--- a/vipra-rest/src/main/resources/log4j2.xml
+++ b/vipra-rest/src/main/resources/log4j2.xml
@@ -6,9 +6,8 @@
 		</Console>
 	</Appenders>
 	<Loggers>
-		<Root level="ALL">
+		<Root level="DEBUG">
 			<AppenderRef ref="Console" />
 		</Root>
-		<Logger name="org.mongodb" level="INFO"/>
 	</Loggers>
 </Configuration>
\ No newline at end of file
diff --git a/vipra-ui/app/adapters/application.js b/vipra-ui/app/adapters/application.js
index c14dc91b50c796761e9b28c764ce301880937f35..0d442b61c170d4fa40db3aae849cc2e0cc783dc3 100644
--- a/vipra-ui/app/adapters/application.js
+++ b/vipra-ui/app/adapters/application.js
@@ -1,7 +1,7 @@
 import DS from 'ember-data';
 
 export default DS.JSONAPIAdapter.extend({
-  host: `http://${window.location.hostname}:8000`,
+  host: `http://${window.location.hostname}:8080`,
   namespace: 'vipra-rest',
   updateRecord(store, type, snapshot) {
     var data = {};
diff --git a/vipra-ui/app/components/debounced-input.js b/vipra-ui/app/components/debounced-input.js
index 5eee646f9195d06d4092541d6033baffb6dc641c..ba23db7e352f89169776916bb0eb698a7a6fe40d 100644
--- a/vipra-ui/app/components/debounced-input.js
+++ b/vipra-ui/app/components/debounced-input.js
@@ -5,7 +5,12 @@ export default Ember.TextField.extend({
   fireAtStart: false,
 
   _elementValueDidChange() {
-    Ember.run.debounce(this, this._setValue, this.debounce, this.fireAtStart);
+    let val = this.$().val();
+    if(val) {
+      Ember.run.debounce(this, this._setValue, this.debounce, this.fireAtStart);
+    } else {
+      this._setValue();
+    }
   },
 
   _setValue() {
diff --git a/vipra-ui/app/controllers/articles/index.js b/vipra-ui/app/controllers/articles/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..f73630c178935d15174a8ed30314d996e113320a
--- /dev/null
+++ b/vipra-ui/app/controllers/articles/index.js
@@ -0,0 +1,8 @@
+import Ember from 'ember';
+
+export default Ember.Controller.extend({
+
+  queryParams: 'page',
+  page: 1
+  
+});
diff --git a/vipra-ui/app/controllers/index.js b/vipra-ui/app/controllers/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..faf5a820e1f079474c77da2a85a741d33ed1e89a
--- /dev/null
+++ b/vipra-ui/app/controllers/index.js
@@ -0,0 +1,16 @@
+export default Ember.Controller.extend({
+
+  queryParams: 'q',
+  q: '',
+
+  search: Ember.computed('q', function() {
+    let query = this.get('q');
+    if(query) {
+      return this.store.query('article', {
+        query: query,
+        limit: 10
+      });
+    }
+  })
+
+});
\ No newline at end of file
diff --git a/vipra-ui/app/controllers/topics/index.js b/vipra-ui/app/controllers/topics/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..d215b2d1a223f15ecdca82eb2a3bf67583b80cf7
--- /dev/null
+++ b/vipra-ui/app/controllers/topics/index.js
@@ -0,0 +1,6 @@
+import Ember from 'ember';
+
+export default Ember.Controller.extend({
+  queryParams: 'page',
+  page: 1
+});
diff --git a/vipra-ui/app/controllers/words/index.js b/vipra-ui/app/controllers/words/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..d215b2d1a223f15ecdca82eb2a3bf67583b80cf7
--- /dev/null
+++ b/vipra-ui/app/controllers/words/index.js
@@ -0,0 +1,6 @@
+import Ember from 'ember';
+
+export default Ember.Controller.extend({
+  queryParams: 'page',
+  page: 1
+});
diff --git a/vipra-ui/app/models/search.js b/vipra-ui/app/models/search.js
new file mode 100644
index 0000000000000000000000000000000000000000..fc38e0953d2df40b7c1ca83dec430ed494561ed0
--- /dev/null
+++ b/vipra-ui/app/models/search.js
@@ -0,0 +1,17 @@
+import DS from 'ember-data';
+
+export default DS.Model.extend({
+  title: DS.attr(),
+  text: DS.attr(),
+  url: DS.attr(),
+  date: DS.attr('date'),
+  stats: DS.attr(),
+  topics: DS.attr(),
+  created: DS.attr('date'),
+  modified: DS.attr('date'),
+
+  _name: function() {
+    var title = this.get('title');
+    return title ? title : this.get('id');
+  }.property('title')
+});
diff --git a/vipra-ui/app/models/word.js b/vipra-ui/app/models/word.js
index a18091a143581c6708b00d29aa9b69fac1f6e813..4d7296307825dd836622dc1f00a831baccf3da70 100644
--- a/vipra-ui/app/models/word.js
+++ b/vipra-ui/app/models/word.js
@@ -1,8 +1,6 @@
 import DS from 'ember-data';
 
 export default DS.Model.extend({
-  word: DS.attr(),
-
   _name: function() {
     return this.get('id');
   }.property('id')
diff --git a/vipra-ui/app/routes/articles/index.js b/vipra-ui/app/routes/articles/index.js
index 7fcaffd1badd98bfcdc6e8cc685533b92ca3b374..b5920fb2470e2885b03b1a7467f212074d4ba34e 100644
--- a/vipra-ui/app/routes/articles/index.js
+++ b/vipra-ui/app/routes/articles/index.js
@@ -76,6 +76,12 @@ export default Ember.Route.extend({
       name: 'Articles',
       data: data
     }];
+  },
+
+  resetController(controller, isExiting, transition) {
+    if(isExiting) {
+      controller.set('page', 1);
+    }
   }
   
 });
diff --git a/vipra-ui/app/routes/index.js b/vipra-ui/app/routes/index.js
index 2e701b60f2b940458aab4ec826c146e69550775c..bfef9997950853bfa1b6c05635c92a736f5f79a6 100644
--- a/vipra-ui/app/routes/index.js
+++ b/vipra-ui/app/routes/index.js
@@ -1,6 +1,7 @@
 import Ember from 'ember';
 
 export default Ember.Route.extend({
+
   model() {
     return {
       latestarticles: this.store.query('article', {limit: 5, sort: '-created'}),
@@ -8,4 +9,5 @@ export default Ember.Route.extend({
       latestwords: this.store.query('word', {limit: 5, sort: '-created'}),
     };
   }
+
 });
\ No newline at end of file
diff --git a/vipra-ui/app/routes/topics/index.js b/vipra-ui/app/routes/topics/index.js
index ce1a47c4c8f5f13488d0cd5d1bf966c4217c1454..1540346be4cfb40bb3489809f242ae14778e0d8d 100644
--- a/vipra-ui/app/routes/topics/index.js
+++ b/vipra-ui/app/routes/topics/index.js
@@ -26,6 +26,12 @@ export default Ember.Route.extend({
       limit: limit,
       topics: this.store.query('topic', query)
     });
+  },
+
+  resetController(controller, isExiting, transition) {
+    if(isExiting) {
+      controller.set('page', 1);
+    }
   }
 
 });
\ No newline at end of file
diff --git a/vipra-ui/app/routes/words/index.js b/vipra-ui/app/routes/words/index.js
index 52c996460a468ae3f4620628e765130d91a1ddc4..c714a5d180fa36b400621c5ec3558b96f42aa269 100644
--- a/vipra-ui/app/routes/words/index.js
+++ b/vipra-ui/app/routes/words/index.js
@@ -27,6 +27,12 @@ export default Ember.Route.extend({
       limit: limit,
       words: this.store.query('word', query)
     });
+  },
+
+  resetController(controller, isExiting, transition) {
+    if(isExiting) {
+      controller.set('page', 1);
+    }
   }
 
 });
\ No newline at end of file
diff --git a/vipra-ui/app/styles/app.scss b/vipra-ui/app/styles/app.scss
index 34d181cb99b44a717de2fb0d2f0e84007f8eacb0..418dbba8db7c112b3437da8c7770f0c10fd16777 100644
--- a/vipra-ui/app/styles/app.scss
+++ b/vipra-ui/app/styles/app.scss
@@ -41,6 +41,11 @@ body {
   text-overflow: ellipsis;
 }
 
+.search-result {
+  padding: 5px;
+  margin-bottom: 5px;
+}
+
 .navbar-default {
   .collapse:not(.in) {
     .navbar-nav > .active {
diff --git a/vipra-ui/app/templates/application.hbs b/vipra-ui/app/templates/application.hbs
index e7aa4f457199f2be941f802142730f4b802f475a..6e2bf2f7d4cc0d5814c144da332641dabf30ef4b 100644
--- a/vipra-ui/app/templates/application.hbs
+++ b/vipra-ui/app/templates/application.hbs
@@ -14,9 +14,9 @@
     <!-- Collect the nav links, forms, and other content for toggling -->
     <div class="collapse navbar-collapse" id="vipra-navbar-collapse-1">
       <ul class="nav navbar-nav">
-        {{#link-to 'articles' tagName='li'}}{{link-to 'Articles' 'articles'}}{{/link-to}}
-        {{#link-to 'topics' tagName='li'}}{{link-to 'Topics' 'topics'}}{{/link-to}}
-        {{#link-to 'words' tagName='li'}}{{link-to 'Words' 'words'}}{{/link-to}}
+        {{#link-to 'articles' tagName='li'}}{{link-to 'Articles' 'articles' (query-params page=1)}}{{/link-to}}
+        {{#link-to 'topics' tagName='li'}}{{link-to 'Topics' 'topics' (query-params page=1)}}{{/link-to}}
+        {{#link-to 'words' tagName='li'}}{{link-to 'Words' 'words' (query-params page=1)}}{{/link-to}}
         {{outlet 'menu-left'}}
         <div id="testi"></div>
       </ul>
diff --git a/vipra-ui/app/templates/index.hbs b/vipra-ui/app/templates/index.hbs
index 88012faac4bedf188a3c00753216ab04fd3c3b28..5332d1397014f5c682b540f64ca4a870810bdf28 100644
--- a/vipra-ui/app/templates/index.hbs
+++ b/vipra-ui/app/templates/index.hbs
@@ -6,7 +6,7 @@
       </div>
 
       <br>
-      {{debounced-input class='form-control input-lg' placeholder='Search...' value=filter debounce='500'}}
+      {{debounced-input value=q class="form-control input-lg" placeholder="Search..."}}
     </div>
   </div>
 
@@ -38,8 +38,18 @@
     </div>
   </div>
 
-  <div class="row">
-  {{filter}}
-  </div>
+  {{#if search}}
+    <hr>
+    <h4>Search results</h4>
+    <ol>
+      {{#each search as |article|}}
+        <li class="search-result">
+          {{link-to article.title 'articles.show' article.id}}<br>
+          &#9492; <small>{{article.text}}</small>
+        </li>
+      {{/each}}
+    </ol>
+
+  {{/if}}
 
 </div>
\ No newline at end of file