diff --git a/src/core/de.evoal.core.arff/src/main/java/de/evoal/core/arff/io/ArffPropertiesReader.java b/src/core/de.evoal.core.arff/src/main/java/de/evoal/core/arff/io/ArffPropertiesReader.java
index ac6580d2545082f349e4336a5b806e7e5c1a959c..d30a2b9668f95f3d1382a6cddac6907e56123323 100644
--- a/src/core/de.evoal.core.arff/src/main/java/de/evoal/core/arff/io/ArffPropertiesReader.java
+++ b/src/core/de.evoal.core.arff/src/main/java/de/evoal/core/arff/io/ArffPropertiesReader.java
@@ -104,6 +104,20 @@ public class ArffPropertiesReader implements PropertiesReader {
                     properties.put(pSpec, (int)instance.toDoubleArray()[index]);
                     return properties;
                 };
+            } else if(RepresentationType.STRING.equals(rType)) {
+                toProperties = (instance, template, builder) -> {
+                    if(instance.isMissing(index)) {
+                        return decoratee.apply(instance, template, builder);
+                    }
+
+                    // add current specification to builder and let the chain complete it
+                    builder.add(pSpec);
+                    final Properties properties = decoratee.apply(instance, template, builder);
+
+                    // set value and return
+                    properties.put(pSpec, instance.stringValue(index));
+                    return properties;
+                };
             } else {
                 throw new RuntimeException("Not yet supported: " + rType);
             }
diff --git a/src/core/de.evoal.core.arff/src/test/java/de/evoal/core/arff/ArffPropertiesReaderTest.java b/src/core/de.evoal.core.arff/src/test/java/de/evoal/core/arff/ArffPropertiesReaderTest.java
index 9663299824f9e19878c4197da39e8406925c74cc..6d543b367c3b4e7db90b528f1f737c55e57a7740 100644
--- a/src/core/de.evoal.core.arff/src/test/java/de/evoal/core/arff/ArffPropertiesReaderTest.java
+++ b/src/core/de.evoal.core.arff/src/test/java/de/evoal/core/arff/ArffPropertiesReaderTest.java
@@ -1,10 +1,14 @@
 package de.evoal.core.arff;
 
+import de.evoal.core.api.properties.Properties;
 import de.evoal.core.api.properties.PropertiesSpecification;
+import de.evoal.core.api.properties.PropertySpecification;
 import de.evoal.core.api.properties.io.PropertiesReader;
 import de.evoal.core.api.utils.EvoalIOException;
+import de.evoal.core.arff.io.ArffPropertiesReader;
 import de.evoal.core.arff.utils.LanguageUtils;
 import de.evoal.core.arff.utils.ResourceUtils;
+import de.evoal.languages.model.ddl.DataDescription;
 import de.evoal.languages.model.ddl.DataDescriptionModel;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
@@ -21,14 +25,52 @@ public class ArffPropertiesReaderTest {
         final Path temporary = Files.createTempDirectory("evoal");
         final File temporaryFolder = temporary.toFile();
         ResourceUtils.unpack(getClass().getClassLoader(), temporaryFolder, "simple/input.arff", "simple/specification.ddl");
-//        final DataDescriptionModel model = LanguageUtils.load(new File(temporaryFolder, "simple/specification.ddl"), DataDescriptionModel.class);
-//        final PropertiesSpecification specification = toSpecification(model);
 
+        final File toLoad = new File(temporaryFolder, "simple/specification.ddl");
+        final DataDescriptionModel model = LanguageUtils.load(toLoad, DataDescriptionModel.class);
+        final PropertiesSpecification specification = toSpecification(model);
 
-//        final PropertiesReader testee = new ArffPropertiesReader()
-//                        .init(new File(temporaryFolder, "input.arff"), specification);
+        final PropertiesReader testee = new ArffPropertiesReader()
+                        .init(new File(temporaryFolder, "simple/input.arff"), specification);
 
-//        Assertions.assertTrue(testee.hasNext());
+        {
+            Assertions.assertTrue(testee.hasNext());
+            final Properties p = testee.next();
+            Assertions.assertEquals(5.1, p.get(new PropertySpecification("sepallength", null)));
+            Assertions.assertEquals(3.5, p.get(new PropertySpecification("sepalwidth", null)));
+            Assertions.assertEquals(1.4, p.get(new PropertySpecification("petallength", null)));
+            Assertions.assertEquals(0.2, p.get(new PropertySpecification("petalwidth", null)));
+            Assertions.assertEquals("Iris-setosa", p.get(new PropertySpecification("class", null)));
+        }
+        {
+            Assertions.assertTrue(testee.hasNext());
+            final Properties p = testee.next();
+            Assertions.assertEquals(4.9, p.get(new PropertySpecification("sepallength", null)));
+            Assertions.assertEquals(3.0, p.get(new PropertySpecification("sepalwidth", null)));
+            Assertions.assertEquals(1.4, p.get(new PropertySpecification("petallength", null)));
+            Assertions.assertEquals(0.2, p.get(new PropertySpecification("petalwidth", null)));
+            Assertions.assertEquals("Iris-setosa", p.get(new PropertySpecification("class", null)));
+        }
+        {
+            Assertions.assertTrue(testee.hasNext());
+            final Properties p = testee.next();
+            Assertions.assertEquals(4.7, p.get(new PropertySpecification("sepallength", null)));
+            Assertions.assertEquals(3.2, p.get(new PropertySpecification("sepalwidth", null)));
+            Assertions.assertEquals(1.3, p.get(new PropertySpecification("petallength", null)));
+            Assertions.assertEquals(0.2, p.get(new PropertySpecification("petalwidth", null)));
+            Assertions.assertEquals("Iris-setosa", p.get(new PropertySpecification("class", null)));
+        }
+        {
+            Assertions.assertTrue(testee.hasNext());
+            final Properties p = testee.next();
+            Assertions.assertEquals(4.6, p.get(new PropertySpecification("sepallength", null)));
+            Assertions.assertEquals(3.1, p.get(new PropertySpecification("sepalwidth", null)));
+            Assertions.assertEquals(1.5, p.get(new PropertySpecification("petallength", null)));
+            Assertions.assertEquals(0.2, p.get(new PropertySpecification("petalwidth", null)));
+            Assertions.assertEquals("Iris-setosa", p.get(new PropertySpecification("class", null)));
+        }
+
+        Assertions.assertFalse(testee.hasNext());
     }
 
     private PropertiesSpecification toSpecification(final DataDescriptionModel model) {
diff --git a/src/core/de.evoal.core.arff/src/test/java/de/evoal/core/arff/utils/LanguageUtils.java b/src/core/de.evoal.core.arff/src/test/java/de/evoal/core/arff/utils/LanguageUtils.java
index 1d1bd18da57630d423058debb6304a51243ab63d..367a2db48138977b6513f7ee4858888fea1c7247 100644
--- a/src/core/de.evoal.core.arff/src/test/java/de/evoal/core/arff/utils/LanguageUtils.java
+++ b/src/core/de.evoal.core.arff/src/test/java/de/evoal/core/arff/utils/LanguageUtils.java
@@ -27,11 +27,12 @@ public class LanguageUtils {
     public static <T extends EObject> T load(final @NonNull File path, final Class<T> cl) {
         loadPackages();
         
-        final URI modelURI = URI.createPlatformResourceURI(path.toString(), true);
+        final URI modelURI = URI.createFileURI(path.toString());
         return load(modelURI, cl);
     }
 
     private static void loadPackages() {
+        DdlPackage.eINSTANCE.getName();
         DataDescriptionLanguageStandaloneSetup.doSetup();
     }
 
diff --git a/src/core/de.evoal.core.arff/src/test/resources/simple/input.arff b/src/core/de.evoal.core.arff/src/test/resources/simple/input.arff
index 5d36ac62ca67243a4f2be8bb0ca4dba73daa1aaa..5a6239eb28ec90ea566d7e480c23b20489df8142 100644
--- a/src/core/de.evoal.core.arff/src/test/resources/simple/input.arff
+++ b/src/core/de.evoal.core.arff/src/test/resources/simple/input.arff
@@ -17,10 +17,4 @@
 5.1,3.5,1.4,0.2,Iris-setosa
 4.9,3.0,1.4,0.2,Iris-setosa
 4.7,3.2,1.3,0.2,Iris-setosa
-4.6,3.1,1.5,0.2,Iris-setosa
-5.0,3.6,1.4,0.2,Iris-setosa
-5.4,3.9,1.7,0.4,Iris-setosa
-4.6,3.4,1.4,0.3,Iris-setosa
-5.0,3.4,1.5,0.2,Iris-setosa
-4.4,2.9,1.4,0.2,Iris-setosa
-4.9,3.1,1.5,0.1,Iris-setosa
\ No newline at end of file
+4.6,3.1,1.5,0.2,Iris-setosa
\ No newline at end of file
diff --git a/src/core/de.evoal.core.arff/src/test/resources/simple/specification.ddl b/src/core/de.evoal.core.arff/src/test/resources/simple/specification.ddl
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..03c350f9f601b575d2caedf3994fa04ac4059703 100644
--- a/src/core/de.evoal.core.arff/src/test/resources/simple/specification.ddl
+++ b/src/core/de.evoal.core.arff/src/test/resources/simple/specification.ddl
@@ -0,0 +1,6 @@
+data:
+    cardinal real 'sepallength';
+    cardinal real 'sepalwidth';
+    cardinal real 'petallength';
+    cardinal real 'petalwidth';
+    nominal string 'class';
\ No newline at end of file
diff --git a/src/core/de.evoal.core.main/pom.xml b/src/core/de.evoal.core.main/pom.xml
index 9cbf74e5916ea6a270f3c0cf2cddc8fe7f4eb019..d9962933e1db1fcd72818273543ef04ef7043086 100644
--- a/src/core/de.evoal.core.main/pom.xml
+++ b/src/core/de.evoal.core.main/pom.xml
@@ -335,8 +335,8 @@
 						<arg>io.jenetics.base/io.jenetics.internal.util=de.evoal.core.main</arg>
 						<arg>--add-exports</arg>
 						<arg>io.jenetics.base/io.jenetics.internal.collection=de.evoal.core.main</arg>
-						<arg>--add-exports</arg>
-						<arg>org.eclipse.xtext.util/org.eclipse.xtext.util=de.evoal.core.main</arg>
+						<!--<arg>- -add-exports</arg>
+						<arg>org.eclipse.xtext.util/org.eclipse.xtext.util=de.evoal.core.main</arg>-->
 					</compilerArgs>
 					<forceJavacCompilerUse>true</forceJavacCompilerUse>
 				</configuration>
diff --git a/src/core/de.evoal.core.plugin/pom.xml b/src/core/de.evoal.core.plugin/pom.xml
index d1f4ebb3441deafbabd59c1355cf447d84d4381b..1ed2b04c43c708c5306069be6c1868ad6a8924c9 100644
--- a/src/core/de.evoal.core.plugin/pom.xml
+++ b/src/core/de.evoal.core.plugin/pom.xml
@@ -92,14 +92,7 @@
 		<dependency>
 			<groupId>org.eclipse.xtext</groupId>
 			<artifactId>org.eclipse.xtext</artifactId>
-			<version>2.29.0</version>
-			<scope>provided</scope>
-		</dependency>
-
-		<dependency>
-			<groupId>org.eclipse.xtext</groupId>
-			<artifactId>org.eclipse.xtext.util</artifactId>
-			<version>2.29.0</version>
+			<version>2.29.1</version>
 			<scope>provided</scope>
 		</dependency>
 
diff --git a/src/core/de.evoal.releng.parent/pom.xml b/src/core/de.evoal.releng.parent/pom.xml
index 5b25f12a7e65bf621f50e4c6d4e8595f62f05e0a..3b204f2df557066bc204550f8bf4fa59f26b5c58 100644
--- a/src/core/de.evoal.releng.parent/pom.xml
+++ b/src/core/de.evoal.releng.parent/pom.xml
@@ -127,7 +127,7 @@
             <dependency>
                 <groupId>org.eclipse.xtext</groupId>
                 <artifactId>org.eclipse.xtext</artifactId>
-                <version>2.29.0</version>
+                <version>2.29.1</version>
                 <scope>provided</scope>
             </dependency>