diff --git a/Changes b/Changes
index e465ea2..8fa53fd 100644
--- a/Changes
+++ b/Changes
@@ -1,12 +1,12 @@
-0.58.4 2019-01-10
+0.58.4 2019-01-16
     - [cleanup] Remove deprecated methods setLicense/getLicense,
       setTokenization/getTokenization, setLayerInfo/getLayerInfo,
       setField/getField (including json serialization)
       (diewald)
     - [cleanup] Remove redundancy for meta field setting in
       AbstractDocument and FieldDocument (diewald)
-    - [cleanup] Remove hardwired deserialization of legacy metadata
-      fields  (diewald)
+    - [cleanup] Remove hardwired (de)serialization of legacy metadata
+      fields (diewald)
 
 0.58.3 2018-12-17
     - [feature] Introduced attachements as meta data fields
diff --git a/src/main/java/de/ids_mannheim/korap/index/AbstractDocument.java b/src/main/java/de/ids_mannheim/korap/index/AbstractDocument.java
index fb467ff..444d862 100644
--- a/src/main/java/de/ids_mannheim/korap/index/AbstractDocument.java
+++ b/src/main/java/de/ids_mannheim/korap/index/AbstractDocument.java
@@ -152,11 +152,19 @@
     };
 
 
-    public void populateFields (Document doc, Collection<String> fields) {        
+    public void populateFields (Document doc, Collection<String> fields) {
+        // Remove all fields already set
+        Iterator<String> fieldsIter = fields.iterator();
+        while (fieldsIter.hasNext()) {
+            if (mFields.contains(fieldsIter.next())) {
+                fieldsIter.remove();
+            };
+        };
+
         if (fields.contains("UID"))
             this.setUID(doc.get("UID"));
-
-        Iterator<String> fieldsIter = fields.iterator();
+        
+        fieldsIter = fields.iterator();
 
         while (fieldsIter.hasNext()) {
             String name = fieldsIter.next();
diff --git a/src/main/java/de/ids_mannheim/korap/response/MetaFieldsObj.java b/src/main/java/de/ids_mannheim/korap/response/MetaFieldsObj.java
index 51131e3..049fc3a 100644
--- a/src/main/java/de/ids_mannheim/korap/response/MetaFieldsObj.java
+++ b/src/main/java/de/ids_mannheim/korap/response/MetaFieldsObj.java
@@ -69,6 +69,11 @@
 		if (mf == null)
 			return null;
 
+        if (fieldsMap.containsKey(mf.key)) {
+            fieldsMap.get(mf.key).values.addAll(mf.values);
+            return fieldsMap.get(mf.key);
+        };
+        
         fieldsMap.put(mf.key, mf);
         return mf;
     };
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestKrillIndex.java b/src/test/java/de/ids_mannheim/korap/index/TestKrillIndex.java
index 934ac83..b9c2320 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestKrillIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestKrillIndex.java
@@ -198,12 +198,10 @@
 		fd.addStored("ref", "My reference");
 		fd.addAttachement("ref2", "data:text/plain;charset=UTF-8,My reference2");
 
-        /*
 		fd.addKeywords("keyword", "baum");
 		fd.addKeywords("keyword", "wald");
-        */
 
-        fd.addKeywords("keyword", "baum wald");
+        fd.addKeywords("keyword", "garten laube");
 
 		fd.addText("title", "Der Name der Rose");
 
@@ -258,6 +256,8 @@
 				assertEquals("koral:field", field.at("/@type").asText());
 				assertEquals("baum", field.at("/value/0").asText());
 				assertEquals("wald", field.at("/value/1").asText());
+				assertEquals("garten", field.at("/value/2").asText());
+				assertEquals("laube", field.at("/value/3").asText());
 				checkC++;
 				break;
 
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestMatchIdentifier.java b/src/test/java/de/ids_mannheim/korap/index/TestMatchIdentifier.java
index 607d146..7b2df00 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestMatchIdentifier.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestMatchIdentifier.java
@@ -920,6 +920,7 @@
         KrillIndex ki = new KrillIndex();
         ki.addDoc(createSimpleFieldDoc4());
         ki.commit();
+        
         Match km = ki.getMatchInfo("match-c1!d4-p3-9", "tokens", null, null,
                 false, false);
         JsonNode res = mapper.readTree(km.toJsonString());
