diff --git a/Changes b/Changes
index 03ca302..707059d 100644
--- a/Changes
+++ b/Changes
@@ -1,4 +1,5 @@
 0.54 2015-09-25
+   	- [performance] Updated Lucene dependency from 4.10.3 to 5.0.0 (diewald)
 
 0.53 2015-09-25
         - [feature] Implemented new KrillCollection (diewald)
diff --git a/pom.xml b/pom.xml
index e27e37d..a72452b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -110,7 +110,7 @@
       <artifactId>lucene-core</artifactId>
       <groupId>org.apache.lucene</groupId>
       <type>jar</type>
-      <version>5.0.0</version>
+      <version>5.3.1</version>
     </dependency>
 
     <!-- Lucene queryparser dependency -->
@@ -118,7 +118,7 @@
       <artifactId>lucene-queryparser</artifactId>
       <groupId>org.apache.lucene</groupId>
       <type>jar</type>
-      <version>5.0.0</version>
+      <version>5.3.1</version>
     </dependency>
 
     <!-- Lucene analyzers dependency -->
@@ -126,7 +126,7 @@
       <artifactId>lucene-analyzers-common</artifactId>
       <groupId>org.apache.lucene</groupId>
       <type>jar</type>
-      <version>5.0.0</version>
+      <version>5.3.1</version>
     </dependency>
 
     <dependency>
diff --git a/src/main/java/de/ids_mannheim/korap/collection/BooleanGroupFilter.java b/src/main/java/de/ids_mannheim/korap/collection/BooleanGroupFilter.java
index b1cad93..d6a750e 100644
--- a/src/main/java/de/ids_mannheim/korap/collection/BooleanGroupFilter.java
+++ b/src/main/java/de/ids_mannheim/korap/collection/BooleanGroupFilter.java
@@ -11,6 +11,7 @@
 import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.index.LeafReader;
 import org.apache.lucene.util.Bits;
+import org.apache.lucene.util.BitDocIdSet;
 
 import de.ids_mannheim.korap.KrillCollection;
 
@@ -159,7 +160,7 @@
                             log.debug("- Filter to allow all documents");
 
                         bitset.set(0, maxDoc);
-                        return BitsFilteredDocIdSet.wrap(bitset, acceptDocs);
+                        return BitsFilteredDocIdSet.wrap(new BitDocIdSet(bitset), acceptDocs);
                     };
 
                     // There is no possible match
@@ -250,6 +251,6 @@
                     log.debug("- Subresult has card {} ", bitset.cardinality());
             };
         };
-        return BitsFilteredDocIdSet.wrap(bitset, acceptDocs);
+        return BitsFilteredDocIdSet.wrap(new BitDocIdSet(bitset), acceptDocs);
     };
 };
diff --git a/src/main/java/de/ids_mannheim/korap/index/Indexer.java b/src/main/java/de/ids_mannheim/korap/index/Indexer.java
index 1cc5221..33e5eb2 100644
--- a/src/main/java/de/ids_mannheim/korap/index/Indexer.java
+++ b/src/main/java/de/ids_mannheim/korap/index/Indexer.java
@@ -7,6 +7,7 @@
 import static de.ids_mannheim.korap.util.KrillProperties.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import java.nio.file.Paths;
 
 /**
  * Standalone indexer tool for Krill.
@@ -48,7 +49,7 @@
                 "1000");
 
         // Create a new index object based on the directory
-        this.index = new KrillIndex(new MMapDirectory(new File(this.path)));
+        this.index = new KrillIndex(new MMapDirectory(Paths.get(this.path)));
         this.count = 0;
         this.commitCount = Integer.parseInt(commitCount);
     };
diff --git a/src/main/java/de/ids_mannheim/korap/server/Node.java b/src/main/java/de/ids_mannheim/korap/server/Node.java
index 19554e4..058cf33 100644
--- a/src/main/java/de/ids_mannheim/korap/server/Node.java
+++ b/src/main/java/de/ids_mannheim/korap/server/Node.java
@@ -3,6 +3,8 @@
 import java.util.*;
 import java.io.*;
 import java.net.URL;
+import java.nio.file.Paths;
+import java.nio.file.Path;
 
 import org.glassfish.grizzly.http.server.HttpServer;
 import org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpServerFactory;
@@ -278,10 +280,10 @@
 
             // Get a MMap directory index
             else {
-                File file = new File(path);
+                Path file = Paths.get(path);
 
                 log.info("Loading index from {}", path);
-                if (!file.exists()) {
+                if (!file.toFile().exists()) {
                     log.error("Index not found at {}", path);
                     return null;
                 };
diff --git a/src/test/java/de/ids_mannheim/korap/benchmark/TestBenchmarkSpans.java b/src/test/java/de/ids_mannheim/korap/benchmark/TestBenchmarkSpans.java
index 922792e..6d7de11 100644
--- a/src/test/java/de/ids_mannheim/korap/benchmark/TestBenchmarkSpans.java
+++ b/src/test/java/de/ids_mannheim/korap/benchmark/TestBenchmarkSpans.java
@@ -21,6 +21,8 @@
 import org.junit.runner.RunWith;
 import org.junit.runners.JUnit4;
 
+import java.nio.file.Paths;
+
 @RunWith(JUnit4.class)
 public class TestBenchmarkSpans {
 
@@ -32,7 +34,7 @@
         prop.load(fr);
 
         // Get the real index
-        KrillIndex ki = new KrillIndex(new MMapDirectory(new File(
+        KrillIndex ki = new KrillIndex(new MMapDirectory(Paths.get(
                 prop.getProperty("krill.indexDir"))));
 
         // Create a container for virtual collections:
@@ -86,7 +88,7 @@
         prop.load(fr);
 
         // Get the real index
-        KrillIndex ki = new KrillIndex(new MMapDirectory(new File(
+        KrillIndex ki = new KrillIndex(new MMapDirectory(Paths.get(
                 prop.getProperty("krill.indexDir"))));
 
         // Create a container for virtual collections:
@@ -132,7 +134,7 @@
         prop.load(fr);
 
         // Get the real index
-        KrillIndex ki = new KrillIndex(new MMapDirectory(new File(
+        KrillIndex ki = new KrillIndex(new MMapDirectory(Paths.get(
                 prop.getProperty("krill.indexDir"))));
 
         // Create a container for virtual collections:
@@ -178,7 +180,7 @@
         prop.load(fr);
 
         // Get the real index
-        KrillIndex ki = new KrillIndex(new MMapDirectory(new File(
+        KrillIndex ki = new KrillIndex(new MMapDirectory(Paths.get(
                 prop.getProperty("krill.indexDir"))));
 
         // Create a container for virtual collections:
@@ -324,7 +326,7 @@
         prop.load(fr);
 
         // Get the real index
-        KrillIndex ki = new KrillIndex(new MMapDirectory(new File(
+        KrillIndex ki = new KrillIndex(new MMapDirectory(Paths.get(
                 prop.getProperty("krill.indexDir"))));
 
         // Create a container for virtual collections:
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestIndex.java b/src/test/java/de/ids_mannheim/korap/index/TestIndex.java
index b6119b4..9b08699 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestIndex.java
@@ -196,15 +196,14 @@
     public void indexLucene () throws Exception {
 
         // Base analyzer for searching and indexing
-        StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_43);
+        StandardAnalyzer analyzer = new StandardAnalyzer();
 
         // Based on
         // http://lucene.apache.org/core/4_0_0/core/org/apache/lucene/
         // analysis/Analyzer.html?is-external=true
 
         // Create configuration with base analyzer
-        IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_43,
-                analyzer);
+        IndexWriterConfig config = new IndexWriterConfig(analyzer);
 
         // Add a document 1 with the correct fields
         IndexWriter w = new IndexWriter(index, config);
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestPosToOffset.java b/src/test/java/de/ids_mannheim/korap/index/TestPosToOffset.java
index 23f8bac..1b0803a 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestPosToOffset.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestPosToOffset.java
@@ -24,9 +24,6 @@
 import org.apache.lucene.search.spans.SpanQuery;
 import org.apache.lucene.search.spans.SpanTermQuery;
 import org.apache.lucene.index.TermContext;
-import org.apache.lucene.util.OpenBitSet;
-import org.apache.lucene.search.DocIdSet;
-import org.apache.lucene.util.DocIdBitSet;
 import org.apache.lucene.util.Bits;
 
 import java.nio.ByteBuffer;
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestRealIndex.java b/src/test/java/de/ids_mannheim/korap/index/TestRealIndex.java
index 837da00..09fd4a5 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestRealIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestRealIndex.java
@@ -17,6 +17,7 @@
 import de.ids_mannheim.korap.response.Result;
 import de.ids_mannheim.korap.query.QueryBuilder;
 import de.ids_mannheim.korap.util.QueryException;
+import java.nio.file.Paths;
 
 public class TestRealIndex {
     KrillIndex ki;
@@ -31,7 +32,7 @@
 
         String indexPath = prop.getProperty("lucene.indexDir");
         System.err.println(indexPath);
-        MMapDirectory md = new MMapDirectory(new File(indexPath));
+        MMapDirectory md = new MMapDirectory(Paths.get(indexPath));
         ki = new KrillIndex(md);
     };
 
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestWPDIndex.java b/src/test/java/de/ids_mannheim/korap/index/TestWPDIndex.java
index 3b96e13..a9fd222 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestWPDIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestWPDIndex.java
@@ -25,6 +25,8 @@
 import de.ids_mannheim.korap.query.SpanNextQuery;
 import de.ids_mannheim.korap.query.SpanRepetitionQuery;
 
+import java.nio.file.Paths;
+
 public class TestWPDIndex {
     long start, end;
     KrillIndex ki;
@@ -60,7 +62,7 @@
         prop.load(is);
 
         String indexPath = prop.getProperty("lucene.indexDir");
-        MMapDirectory md = new MMapDirectory(new File(indexPath));
+        MMapDirectory md = new MMapDirectory(Paths.get(indexPath));
         ki = new KrillIndex(md);
     }
 
