diff --git a/.classpath b/.classpath
index f52d95d08d1172c6301bfd86284026bd9cfb1815..979bd7ed3aa79d1aacb84164fbbc2f92628412a2 100644
--- a/.classpath
+++ b/.classpath
@@ -30,7 +30,6 @@
 	<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
 		<attributes>
 			<attribute name="maven.pomderived" value="true"/>
-			<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
 		</attributes>
 	</classpathentry>
 	<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/webapp/WEB-INF">
diff --git a/pom.xml b/pom.xml
index 9e24844c8a8173ee3d2b05b06c334f2636866a39..77ddfedb9b952a23e3189f494908ce56412aba21 100644
--- a/pom.xml
+++ b/pom.xml
@@ -26,7 +26,7 @@
                 <saxon-version>9.5.1-5</saxon-version> <!-- XXX mind dependency from epubcheck -->
                 <cxf-version>2.7.11</cxf-version>
                 <confclient-version>1.4.0</confclient-version>
-                <tgsearch-version>3.0.2-SNAPSHOT</tgsearch-version>
+                <tgsearch-version>3.4.0-SNAPSHOT</tgsearch-version>
                 <tgcrud-version>2.6.0</tgcrud-version>
                 <guava-version>15.0</guava-version>
                 <junit-version>4.11</junit-version>
diff --git a/src/main/java/info/textgrid/services/aggregator/AbstractExporter.java b/src/main/java/info/textgrid/services/aggregator/AbstractExporter.java
index cc33289f54ef8709d2e36c2b51328349d9a4e910..a88f9370b6108544fa7d7d00fadc321870f0d614 100644
--- a/src/main/java/info/textgrid/services/aggregator/AbstractExporter.java
+++ b/src/main/java/info/textgrid/services/aggregator/AbstractExporter.java
@@ -16,6 +16,7 @@
 import java.text.MessageFormat;
 import java.util.Date;
 import java.util.Iterator;
+import java.util.List;
 import java.util.Locale;
 import java.util.logging.Level;
 import java.util.logging.Logger;
@@ -170,8 +171,8 @@ private static URI[] extractURIs(final String uriList) {
 		return uris;
 	}
 	
-	protected void initFromSearch(final String query, final String target, int start, int stop) {
-		rootObjects = SearchResultList.create(repository.getPublicSearchClient(), query, target).start(start).stop(stop);
+	protected void initFromSearch(final String query, final String target, int start, int stop, List<String> filter) {
+		rootObjects = SearchResultList.create(repository.getPublicSearchClient(), query, target, filter).start(start).stop(stop);
 	}
 
 	/**
diff --git a/src/main/java/info/textgrid/services/aggregator/REST.java b/src/main/java/info/textgrid/services/aggregator/REST.java
index 24f5d548cc9d37e567513d08a7b99402a29dbf0a..fa504a17d56b3f504a35eb933c1416e9855c2f88 100644
--- a/src/main/java/info/textgrid/services/aggregator/REST.java
+++ b/src/main/java/info/textgrid/services/aggregator/REST.java
@@ -174,6 +174,7 @@ public Response getZIP(
 
 			@QueryParam("transform") @Description("(EXPERIMENTAL) Transform each XML document before zipping. Values currently available are text, html, or the textgrid: URI of an XSLT stylesheet.") final String transform,
 			@QueryParam("query") @Description("(EXPERIMENTAL) perform the given TGsearch query and use its result as root objects instead of the objects.") final String query,
+			@QueryParam("filter") @Description("for query: additional filters") final List<String> filter,
 			@QueryParam("target") @Description("if query is used, the query target (metadata, fulltext or both)") @DefaultValue("both") final String target,
 			@QueryParam("start") @Description("for query: start at result no.") @DefaultValue("0") int start,
 			@QueryParam("stop") @Description("for query: max. number of results") @DefaultValue("65535") int stop,
@@ -190,7 +191,7 @@ public Response getZIP(
 		if (sid != null)
 			zipResult.sid(sid);
 		if (query != null)
-			zipResult.initFromSearch(query, target, start, stop);
+			zipResult.initFromSearch(query, target, start, stop, filter);
 		if (stream)
 			zipResult.streaming(stream);
 		return zipResult.createResponse().build();
diff --git a/src/main/java/info/textgrid/services/aggregator/SearchResultList.java b/src/main/java/info/textgrid/services/aggregator/SearchResultList.java
index eb7f4b9e973a4da4d074fc701a0aa5b040146f9f..f442c9d809baa26de13d2bb2c1fdc554c280f4a3 100644
--- a/src/main/java/info/textgrid/services/aggregator/SearchResultList.java
+++ b/src/main/java/info/textgrid/services/aggregator/SearchResultList.java
@@ -60,14 +60,14 @@ public boolean hasNext() {
 	private int stop = Integer.MAX_VALUE;
 	private SearchClient searchClient;
 	
-	protected SearchResultList(final SearchClient client, final String query, final String target) {
+	protected SearchResultList(final SearchClient client, final String query, final String target, List<String> filter) {
 		this.searchClient = client;
 		this.query = query;
 		client.setTarget(target);
 	}
 	
-	public static SearchResultList create(final SearchClient client, final String query, final String target) {
-		return new SearchResultList(client, query, target);
+	public static SearchResultList create(final SearchClient client, final String query, final String target, List<String> filter) {
+		return new SearchResultList(client, query, target, filter);
 	}
 	
 	private void ensureNotStarted() {
@@ -104,6 +104,8 @@ public int size() {
 
 	private String query;
 
+	private List<String> filter;
+
 
 	@Override
 	public Iterator<ObjectType> iterator() {
@@ -138,7 +140,7 @@ protected void fetchNextChunk() {
 			return;
 
 		Response response = searchClient.query(query, null, "", nextStart,
-				Math.min(stop - nextStart, chunkSize));
+				Math.min(stop - nextStart, chunkSize), filter);
 		hits = Integer.parseInt(response.getHits());
 		if (!started) {
 			availableResults = Lists.newArrayListWithExpectedSize(hits);
diff --git a/src/test/java/info/textgrid/services/aggregator/SearchResultListTest.java b/src/test/java/info/textgrid/services/aggregator/SearchResultListTest.java
index e54f196477ca18890da99adc981adcfaf0d3b31b..03cb77e5e65873eaf548dc475ca49c8a8e80d550 100644
--- a/src/test/java/info/textgrid/services/aggregator/SearchResultListTest.java
+++ b/src/test/java/info/textgrid/services/aggregator/SearchResultListTest.java
@@ -15,7 +15,7 @@ public class SearchResultListTest {
 	@Test
 	public void test() {
 		SearchResultList results = SearchResultList
-			.create(repository.getPublicSearchClient(), "genre:\"verse\" AND edition.agent.value:\"anakreon\"", "both")
+			.create(repository.getPublicSearchClient(), "genre:\"verse\" AND edition.agent.value:\"anakreon\"", "both", null)
 			.chunkSize(10);
 		int i = 0;
 		for (ObjectType object : results) {