diff --git a/plugin/src/main/java/de/ids_mannheim/korap/plkexport/JsonExporter.java b/plugin/src/main/java/de/ids_mannheim/korap/plkexport/JsonExporter.java
index d538f2c..bfe126e 100644
--- a/plugin/src/main/java/de/ids_mannheim/korap/plkexport/JsonExporter.java
+++ b/plugin/src/main/java/de/ids_mannheim/korap/plkexport/JsonExporter.java
@@ -38,30 +38,30 @@
 
         boolean header = false;
         
-        if (this.query != null) {
+        if (this.getQuery() != null) {
             w.append("\"query\":")
-                .append(this.query.toString());
+                .append(this.getQuery().toString());
             header = true;
         };
 
-        if (this.meta != null) {
+        if (this.getMeta() != null) {
             if (header) {
                 w.append(',');
             } else {
                 header = true;
             };
             w.append("\"meta\":")
-                .append(this.meta.toString());
+                .append(this.getMeta().toString());
         };
 
-        if (this.collection != null) {
+        if (this.getCollection() != null) {
             if (header) {
                 w.append(',');
             } else {
                 header = true;
             };
             w.append("\"collection\":")
-                .append(this.collection.toString());
+                .append(this.getCollection().toString());
         };
 
         if (header)
diff --git a/plugin/src/main/java/de/ids_mannheim/korap/plkexport/MatchAggregator.java b/plugin/src/main/java/de/ids_mannheim/korap/plkexport/MatchAggregator.java
index 3d2ab87..0ed7973 100644
--- a/plugin/src/main/java/de/ids_mannheim/korap/plkexport/MatchAggregator.java
+++ b/plugin/src/main/java/de/ids_mannheim/korap/plkexport/MatchAggregator.java
@@ -39,7 +39,7 @@
 
     private File file;
     
-    public JsonNode meta, query, collection;
+    private JsonNode meta, query, collection;
     private String fname, queryString;
 
     public String getMimeType() {
diff --git a/plugin/src/test/java/de/ids_mannheim/korap/plkexport/MatchAggregatorTest.java b/plugin/src/test/java/de/ids_mannheim/korap/plkexport/MatchAggregatorTest.java
index b19ce21..b5dee82 100644
--- a/plugin/src/test/java/de/ids_mannheim/korap/plkexport/MatchAggregatorTest.java
+++ b/plugin/src/test/java/de/ids_mannheim/korap/plkexport/MatchAggregatorTest.java
@@ -17,33 +17,33 @@
     public void testEmptyInit () throws IOException {
         MatchAggregator m = new MatchAggregator();
         m.init("");
-        assertNull(m.meta);
-        assertNull(m.query);
-        assertNull(m.collection);
+        assertNull(m.getMeta());
+        assertNull(m.getQuery());
+        assertNull(m.getCollection());
 
         m = new MatchAggregator();
         m.init(null);
-        assertNull(m.meta);
-        assertNull(m.query);
-        assertNull(m.collection);
+        assertNull(m.getMeta());
+        assertNull(m.getQuery());
+        assertNull(m.getCollection());
     };
 
     @Test
     public void testSampleInit () throws IOException {
         MatchAggregator m = new MatchAggregator();
         m.init("{\"meta\":{\"totalResults\":6}}");
-        assertEquals(m.meta.toString(),"{\"totalResults\":6}");
-        assertNull(m.query);
-        assertNull(m.collection);
+        assertEquals(m.getMeta().toString(),"{\"totalResults\":6}");
+        assertNull(m.getQuery());
+        assertNull(m.getCollection());
     };
   
     @Test
     public void testMatchesInit () throws IOException {
         MatchAggregator m = new MatchAggregator();
         m.init("{\"matches\":[\"first\",\"second\"]}");
-        assertNull(m.meta);
-        assertNull(m.query);
-        assertNull(m.collection);
+        assertNull(m.getMeta());
+        assertNull(m.getQuery());
+        assertNull(m.getCollection());
     };
 
     @Test
