diff --git a/pom.xml b/pom.xml
index 795fc83..b36529a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -142,7 +142,7 @@
         <dependency>
             <groupId>de.ids_mannheim.korap</groupId>
             <artifactId>Koral</artifactId>
-            <version>0.2</version>
+            <version>0.21</version>
             <exclusions>
                 <exclusion>
                     <groupId>org.eclipse.jetty</groupId>
diff --git a/src/main/java/de/ids_mannheim/korap/resource/LayerMapper.java b/src/main/java/de/ids_mannheim/korap/resource/LayerMapper.java
index f5f339d..ff2b2cb 100644
--- a/src/main/java/de/ids_mannheim/korap/resource/LayerMapper.java
+++ b/src/main/java/de/ids_mannheim/korap/resource/LayerMapper.java
@@ -61,6 +61,9 @@
                     return config.getDefault_lemma();
                 case "surface":
                     return config.getDefault_surface();
+                // refers to "structure" and is used for paragraphs or sentence boundaries
+                case "s":
+                    return "base";
                 default:
                     // if the layer is not in this specific listing, assume a default layer
                     // like orth or other tokenization layers
diff --git a/src/main/java/de/ids_mannheim/korap/web/service/LightService.java b/src/main/java/de/ids_mannheim/korap/web/service/LightService.java
index 9ae312b..6e54744 100644
--- a/src/main/java/de/ids_mannheim/korap/web/service/LightService.java
+++ b/src/main/java/de/ids_mannheim/korap/web/service/LightService.java
@@ -113,6 +113,7 @@
             @QueryParam("count") Integer pageLength,
             @QueryParam("offset") Integer pageIndex,
             @QueryParam("page") Integer pageInteger,
+            @QueryParam("fields") Set<String> fields,
             @QueryParam("cq") String cq, @QueryParam("engine") String engine) {
         KustvaktConfiguration.BACKENDS eng = BeanConfiguration
                 .getConfiguration().chooseBackend(engine);
@@ -122,9 +123,8 @@
         MetaQueryBuilder meta = QueryBuilderUtil
                 .defaultMetaBuilder(pageIndex, pageInteger, pageLength, ctx,
                         cutoff);
+        meta.addEntry("fields", fields);
         serializer.setMeta(meta);
-        // fixme: should only apply to CQL queries per default!
-        //        meta.addEntry("itemsPerResource", 1);
         if (cq != null)
             serializer.setCollection(cq);
 
@@ -241,7 +241,6 @@
         return Response.ok(stats).build();
     }
 
-
     @GET
     @Path("/corpus/{id}/{docid}/{rest}/matchInfo")
     public Response getMatchInfo(@PathParam("id") String id,
diff --git a/src/test/java/MetaQueryBuilderTest.java b/src/test/java/MetaQueryBuilderTest.java
new file mode 100644
index 0000000..7b4c3aa
--- /dev/null
+++ b/src/test/java/MetaQueryBuilderTest.java
@@ -0,0 +1,45 @@
+import com.fasterxml.jackson.databind.JsonNode;
+import de.ids_mannheim.korap.query.serialize.MetaQueryBuilder;
+import de.ids_mannheim.korap.utils.JsonUtils;
+import org.junit.Assert;
+import org.junit.Test;
+
+import java.util.HashSet;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * @author hanl
+ * @date 26/06/2015
+ */
+public class MetaQueryBuilderTest {
+
+    private static Pattern p = Pattern
+            .compile("^/\\s*\\d+-(?:c(?:hars?)?|t(?:okens)?)$/");
+
+    private static Pattern p3 = Pattern
+            .compile("\\d+-(c(?:hars?)?|t(?:okens)?)?");
+
+    @Test
+    public void testRegex() {
+        Matcher m = p.matcher("1-tokens,2-chars");
+        while (m.find()) {
+            int size = m.groupCount();
+            System.out.println("FOUND ");
+            for (int i = 0; i < size; i++)
+                System.out.println("GROUP " + m.group(i));
+        }
+    }
+
+    @Test
+    public void testMetaBuilder() {
+        Set<String> f = new HashSet<>();
+        f.add("docID");
+        f.add("corpusID");
+        MetaQueryBuilder m = new MetaQueryBuilder();
+        m.addEntry("fields", f);
+        JsonNode n = JsonUtils.readTree(JsonUtils.toJSON(m.raw()));
+        Assert.assertEquals("[\"docID\",\"corpusID\"]", n.at("/fields").toString());
+    }
+}
