diff --git a/core/Changes b/core/Changes
index ee3b3cb..c5ba7df 100644
--- a/core/Changes
+++ b/core/Changes
@@ -3,6 +3,9 @@
    - Added search timeout in meta query (margaretha)
 18/12/2018
    - Updated RewriteHandler (margaretha)
+19/12/2018
+   - Added debug flags (margaretha)
+   - Added order on the fields parameter of search get request (margaretha)   
 
 version 0.61.4
 14/11/2018
diff --git a/core/src/main/java/de/ids_mannheim/korap/interfaces/defaults/ApacheValidator.java b/core/src/main/java/de/ids_mannheim/korap/interfaces/defaults/ApacheValidator.java
index e78cd0c..6cc2224 100644
--- a/core/src/main/java/de/ids_mannheim/korap/interfaces/defaults/ApacheValidator.java
+++ b/core/src/main/java/de/ids_mannheim/korap/interfaces/defaults/ApacheValidator.java
@@ -23,6 +23,8 @@
 
     private static final String STRING_PATTERN = "^[\\.;:,&\\|@\\[\\]\\=\\*\\/\\/_()\\-0-9\\p{L}\\p{Space}]{0,1024}$";
 
+    private static final boolean DEBUG = false;
+
     private Map<String, RegexValidator> validators;
 
 
@@ -117,8 +119,11 @@
             else
                 return this.isValid(input, "string");
         }
-        jlog.debug("validating entry "+input+" of type "+type+": "+ (
-                valid ? "Is valid!" : "Is not valid!"));
+        if (DEBUG){
+            jlog.debug("validating entry "+input+" of type "+type+": "+ (
+                    valid ? "Is valid!" : "Is not valid!"));
+        }
+            
         return valid;
     }
 }
diff --git a/core/src/main/java/de/ids_mannheim/korap/resource/rewrite/RewriteHandler.java b/core/src/main/java/de/ids_mannheim/korap/resource/rewrite/RewriteHandler.java
index 130bc2d..6469d57 100644
--- a/core/src/main/java/de/ids_mannheim/korap/resource/rewrite/RewriteHandler.java
+++ b/core/src/main/java/de/ids_mannheim/korap/resource/rewrite/RewriteHandler.java
@@ -159,6 +159,7 @@
 
     public class RewriteProcess {
 
+        private static final boolean DEBUG = false;
         private JsonNode root;
         private User user;
 
@@ -208,7 +209,9 @@
 
 
         private JsonNode start (boolean result) throws KustvaktException {
-            jlog.debug("Running rewrite process on query "+ root);
+            if (DEBUG){
+                jlog.debug("Running rewrite process on query "+ root);
+            }
             if (root != null) {
                 Iterator<Map.Entry<String, JsonNode>> it = root.fields();
                 while (it.hasNext()) {
@@ -236,8 +239,10 @@
                 throw new RuntimeException("KustvaktConfiguration must be set!");
 
             for (RewriteTask task : tasks) {
-                jlog.debug("running processor on node: " + node);
-                jlog.debug("on processor: " + task.getClass().toString());
+                if (DEBUG) {
+                    jlog.debug("running processor on node: " + node);
+                    jlog.debug("on processor: " + task.getClass().toString());
+                }
 
                 if (RewriteHandler.this.beans != null
                         && task instanceof BeanInjectable)
@@ -247,7 +252,9 @@
                 if (task instanceof RewriteTask.IterableRewritePath) {
                     RewriteTask.IterableRewritePath rw = (RewriteTask.IterableRewritePath) task;
                     if (rw.path() != null && !rw.path().equals(rootNode)) {
-                        jlog.debug("skipping node: " + node);
+                        if (DEBUG){
+                            jlog.debug("skipping node: " + node);
+                        }
                         continue;
                     }
                 }
diff --git a/core/src/main/java/de/ids_mannheim/korap/service/AnnotationService.java b/core/src/main/java/de/ids_mannheim/korap/service/AnnotationService.java
index 3e384ec..94c2498 100644
--- a/core/src/main/java/de/ids_mannheim/korap/service/AnnotationService.java
+++ b/core/src/main/java/de/ids_mannheim/korap/service/AnnotationService.java
@@ -25,6 +25,8 @@
 @Service
 public class AnnotationService {
 
+    private static final boolean DEBUG = false;
+
     private static Logger jlog =
             LogManager.getLogger(AnnotationService.class);
 
@@ -36,7 +38,9 @@
 
     public List<LayerDto> getLayerDtos () {
         List<AnnotationLayer> layers = annotationDao.getAllFoundryLayerPairs();
-        jlog.debug("/layers " + layers.toString());
+        if (DEBUG){
+            jlog.debug("/layers " + layers.toString());
+        }
         List<LayerDto> layerDto = annotationConverter.convertToLayerDto(layers);
         return layerDto;
     }
@@ -53,7 +57,9 @@
             String[] annotationCode;
             annotationPairs = new ArrayList<AnnotationLayer>();
             for (String code : codes) {
-                jlog.debug("code " + code);
+                if (DEBUG){
+                    jlog.debug("code " + code);
+                }
                 annotationCode = code.split("/");
                 if (annotationCode.length == 1) {
                     foundry = annotationCode[0];
@@ -76,7 +82,9 @@
         if (annotationPairs != null && !annotationPairs.isEmpty()) {
             List<FoundryDto> foundryDtos = annotationConverter
                     .convertToFoundryDto(annotationPairs, language);
-            jlog.debug("/description " + annotationPairs.toString());
+            if (DEBUG){
+                jlog.debug("/description " + annotationPairs.toString());
+            }
             return foundryDtos;
         }
         else {
diff --git a/core/src/main/java/de/ids_mannheim/korap/service/SearchService.java b/core/src/main/java/de/ids_mannheim/korap/service/SearchService.java
index 2e43a33..1552bf3 100644
--- a/core/src/main/java/de/ids_mannheim/korap/service/SearchService.java
+++ b/core/src/main/java/de/ids_mannheim/korap/service/SearchService.java
@@ -1,6 +1,7 @@
 package de.ids_mannheim.korap.service;
 
 import java.util.ArrayList;
+import java.util.List;
 import java.util.Set;
 import java.util.regex.Pattern;
 
@@ -84,10 +85,12 @@
             throws KustvaktException {
         User user = authenticationManager.getUser(username);
         authenticationManager.setAccessAndLocation(user, headers);
-        if (user != null) {
-            jlog.debug(
-                    "Debug: /getMatchInfo/: location=" + user.locationtoString()
-                            + ", access=" + user.accesstoString());
+        if (DEBUG) {
+            if (user != null) {
+                jlog.debug("Debug: /getMatchInfo/: location="
+                        + user.locationtoString() + ", access="
+                        + user.accesstoString());
+            }
         }
         return user;
     }
@@ -102,7 +105,7 @@
 
     @SuppressWarnings("unchecked")
     public String search (String engine, String username, HttpHeaders headers,
-            String q, String ql, String v, String cq, Set<String> fields,
+            String q, String ql, String v, String cq, String fields,
             Integer pageIndex, Integer pageInteger, String ctx,
             Integer pageLength, Boolean cutoff) throws KustvaktException {
 
@@ -115,9 +118,7 @@
         if (cq != null) serializer.setCollection(cq);
 
         MetaQueryBuilder meta = createMetaQuery(pageIndex, pageInteger, ctx,
-                pageLength, cutoff, corpusAccess);
-        if (fields != null && !fields.isEmpty())
-            meta.addEntry("fields", fields);
+                pageLength, cutoff, corpusAccess, fields);
         serializer.setMeta(meta.raw());
 
         // There is an error in query processing
@@ -146,7 +147,7 @@
 
     private MetaQueryBuilder createMetaQuery (Integer pageIndex,
             Integer pageInteger, String ctx, Integer pageLength,
-            Boolean cutoff, CorpusAccess corpusAccess) {
+            Boolean cutoff, CorpusAccess corpusAccess, String fields) {
         MetaQueryBuilder meta = new MetaQueryBuilder();
         meta.addEntry("startIndex", pageIndex);
         meta.addEntry("startPage", pageInteger);
@@ -165,6 +166,15 @@
         else{
             meta.addEntry("timeout", 90000);
         }
+        
+        if (fields != null && !fields.isEmpty()){
+            String[] fieldArray = fields.split(",");
+            List<String> fieldList = new ArrayList<>(fieldArray.length);
+            for (String field :  fieldArray){
+                fieldList.add(field.trim());
+            }
+            meta.addEntry("fields", fieldList);
+        }
         return meta;
     }
 
@@ -239,7 +249,9 @@
             throw new KustvaktException(StatusCodes.ILLEGAL_ARGUMENT,
                     e.getMessage());
         }
-        jlog.debug("MatchInfo results: " + results);
+        if (DEBUG){
+            jlog.debug("MatchInfo results: " + results);
+        }
         return results;
     }
 
diff --git a/core/src/main/java/de/ids_mannheim/korap/utils/TimeUtils.java b/core/src/main/java/de/ids_mannheim/korap/utils/TimeUtils.java
index 6ef4b56..d6f2daf 100644
--- a/core/src/main/java/de/ids_mannheim/korap/utils/TimeUtils.java
+++ b/core/src/main/java/de/ids_mannheim/korap/utils/TimeUtils.java
@@ -32,6 +32,7 @@
     private static DateTimeFormatter dtf = DateTimeFormat
             .forPattern("dd/MM/yyyy");
     private static final DateTimeZone dtz = DateTimeZone.forID(Attributes.DEFAULT_TIME_ZONE);
+    private static final boolean DEBUG = false;
     private static Logger jlog = LogManager.getLogger(TimeUtils.class);
 
 
@@ -40,8 +41,10 @@
         int finIndex = expirationVal.length() - 1;
         char entity = expirationVal.charAt(finIndex);
         int returnSec = Integer.valueOf(expirationVal.substring(0, finIndex));
-        jlog.debug("setting time value to "+returnSec+" with time in "+
-                entity);
+        if (DEBUG) {
+            jlog.debug("setting time value to " + returnSec + " with time in "
+                    + entity);
+        }
         switch (entity) {
             case 'D':
                 return returnSec * 60 * 60 * 24;
@@ -52,7 +55,9 @@
             case 'S':
                 return returnSec;
             default:
-                jlog.debug("no time unit specified. Trying to read from default (minutes)");
+                if (DEBUG){
+                    jlog.debug("no time unit specified. Trying to read from default (minutes)");
+                }
                 return Integer.valueOf(expirationVal) * 60;
         }
 
diff --git a/core/src/main/java/de/ids_mannheim/korap/web/SearchKrill.java b/core/src/main/java/de/ids_mannheim/korap/web/SearchKrill.java
index 65be493..f81b5aa 100644
--- a/core/src/main/java/de/ids_mannheim/korap/web/SearchKrill.java
+++ b/core/src/main/java/de/ids_mannheim/korap/web/SearchKrill.java
@@ -132,7 +132,9 @@
             	if (licensePattern!=null && availability != null){
             		Matcher m = licensePattern.matcher(availability);
             		if (!m.matches()){
-            		    jlog.debug("availability: "+availability);
+            		    if (DEBUG){
+            		        jlog.debug("availability: "+availability);
+            		    }
                         if (availability.isEmpty()){
                             km.addError(StatusCodes.MISSING_ATTRIBUTE, 
                                     "Availability for "+ id +"is empty.", id);
@@ -198,7 +200,9 @@
             	    }
             		Matcher m = licensePattern.matcher(availability);
             		if (!m.matches()){
-            		    jlog.debug("pattern: "+ licensePattern.toString() + ", availability: "+availability);
+            		    if (DEBUG){
+            		        jlog.debug("pattern: "+ licensePattern.toString() + ", availability: "+availability);
+            		    }
             			km = new Match();
             			km.addError(StatusCodes.ACCESS_DENIED, 
             					"Retrieving match info with ID "+id+" is not allowed.", id);
diff --git a/core/src/main/java/de/ids_mannheim/korap/web/controller/SearchController.java b/core/src/main/java/de/ids_mannheim/korap/web/controller/SearchController.java
index 90e9435..d83ce1f 100644
--- a/core/src/main/java/de/ids_mannheim/korap/web/controller/SearchController.java
+++ b/core/src/main/java/de/ids_mannheim/korap/web/controller/SearchController.java
@@ -49,6 +49,8 @@
 @Produces(MediaType.APPLICATION_JSON + ";charset=utf-8")
 public class SearchController {
 
+    private static final boolean DEBUG = false;
+
     private static Logger jlog = LogManager.getLogger(SearchController.class);
 
     @Autowired
@@ -98,7 +100,9 @@
             scopeService.verifyScope(ctx, OAuth2Scope.SERIALIZE_QUERY);
             String result = searchService.serializeQuery(q, ql, v, cq,
                     pageIndex, startPage, pageLength, context, cutoff);
-            jlog.debug("Query: " + result);
+            if (DEBUG){
+                jlog.debug("Query: " + result);
+            }
             return Response.ok(result).build();
         }
         catch (KustvaktException e) {
@@ -119,9 +123,13 @@
             throw kustvaktResponseHandler.throwit(e);
         }
 
-        jlog.debug("Serialized search: " + jsonld);
+        if (DEBUG){
+            jlog.debug("Serialized search: " + jsonld);
+        }
         String result = searchService.search(jsonld);
-        jlog.debug("The result set: " + result);
+        if (DEBUG){
+            jlog.debug("The result set: " + result);
+        }
         return Response.ok(result).build();
     }
 
@@ -135,7 +143,7 @@
             @QueryParam("count") Integer pageLength,
             @QueryParam("offset") Integer pageIndex,
             @QueryParam("page") Integer pageInteger,
-            @QueryParam("fields") Set<String> fields,
+            @QueryParam("fields") String fields,
             @QueryParam("cq") String cq, @QueryParam("engine") String engine) {
 
         TokenContext context =
diff --git a/core/src/main/java/de/ids_mannheim/korap/web/controller/StatisticController.java b/core/src/main/java/de/ids_mannheim/korap/web/controller/StatisticController.java
index 43970be..61bf57a 100644
--- a/core/src/main/java/de/ids_mannheim/korap/web/controller/StatisticController.java
+++ b/core/src/main/java/de/ids_mannheim/korap/web/controller/StatisticController.java
@@ -42,6 +42,7 @@
 public class StatisticController {
 
 
+    private static final boolean DEBUG = false;
     private static Logger jlog =
             LogManager.getLogger(StatisticController.class);
     @Autowired
@@ -86,9 +87,12 @@
 			stats = searchKrill.getStatistics(null);
 		};
 
-        if (stats.contains("-1"))
+        if (stats.contains("-1")){
             throw kustvaktResponseHandler.throwit(StatusCodes.NO_RESULT_FOUND);
-        jlog.debug("Stats: " + stats);
+        }
+        if (DEBUG){
+            jlog.debug("Stats: " + stats);
+        }
         return Response.ok(stats).build();
     }
 }
diff --git a/core/src/main/java/de/ids_mannheim/korap/web/utils/NotFoundMapper.java b/core/src/main/java/de/ids_mannheim/korap/web/utils/NotFoundMapper.java
index 7f5db5c..e8db76d 100644
--- a/core/src/main/java/de/ids_mannheim/korap/web/utils/NotFoundMapper.java
+++ b/core/src/main/java/de/ids_mannheim/korap/web/utils/NotFoundMapper.java
@@ -27,6 +27,7 @@
             LogManager.getLogger(NotFoundMapper.class);
     public static final Pattern VERSION_PATTERN =
             Pattern.compile("/(v[0-9][^/]*)(/.*)");
+    private static final boolean DEBUG = false;
 
     @Autowired
     private KustvaktConfiguration config;
@@ -46,7 +47,9 @@
                 path = baseUrl + "/" + config.getCurrentVersion() + path;
                 URI redirectUri = UriBuilder.fromUri(notFoundUri)
                         .replacePath(path).build();
-                jlog.debug("REDIRECT: "+redirectUri.toString());
+                if (DEBUG){
+                    jlog.debug("REDIRECT: "+redirectUri.toString());
+                }
                 return Response.status(HttpStatus.PERMANENT_REDIRECT_308)
                         .location(redirectUri).build();
             }
@@ -55,7 +58,9 @@
                         + matcher.group(2);
                 URI redirectUri = UriBuilder.fromUri(notFoundUri)
                         .replacePath(path).build();
-                jlog.debug("REDIRECT replace: "+ redirectUri.toString());
+                if (DEBUG){
+                    jlog.debug("REDIRECT replace: "+ redirectUri.toString());
+                }
                 return Response.status(HttpStatus.PERMANENT_REDIRECT_308)
                         .location(redirectUri).build();
             }
diff --git a/lite/src/test/java/de/ids_mannheim/korap/web/service/LiteSearchControllerTest.java b/lite/src/test/java/de/ids_mannheim/korap/web/service/LiteSearchControllerTest.java
index d2d9733..b30b626 100644
--- a/lite/src/test/java/de/ids_mannheim/korap/web/service/LiteSearchControllerTest.java
+++ b/lite/src/test/java/de/ids_mannheim/korap/web/service/LiteSearchControllerTest.java
@@ -137,8 +137,7 @@
     public void testParameterField () throws KustvaktException {
         ClientResponse response = resource().path(API_VERSION).path("search")
                 .queryParam("q", "[orth=das]").queryParam("ql", "poliqarp")
-                .queryParam("fields", "author")
-                .queryParam("fields", "docSigle")
+                .queryParam("fields", "author,docSigle")
                 .queryParam("context", "sentence").queryParam("count", "13")
                 .get(ClientResponse.class);
         assertEquals(ClientResponse.Status.OK.getStatusCode(),
