diff --git a/full/src/main/java/de/ids_mannheim/korap/rewrite/CollectionRewrite.java b/full/src/main/java/de/ids_mannheim/korap/rewrite/CollectionRewrite.java
index 57f92db..44388dd 100644
--- a/full/src/main/java/de/ids_mannheim/korap/rewrite/CollectionRewrite.java
+++ b/full/src/main/java/de/ids_mannheim/korap/rewrite/CollectionRewrite.java
@@ -164,15 +164,38 @@
 
     private String buildAvailability (List<String> userAvailabilities) {
         StringBuilder sb = new StringBuilder();
-        for (int i = 0; i < userAvailabilities.size() - 1; i++) {
-            sb.append("availability=/");
-            sb.append(userAvailabilities.get(i));
-            sb.append("/ | ");
+        for (int i = 0; i < userAvailabilities.size(); i++) {
+            parseAvailability(sb, userAvailabilities.get(i), "|");
         }
-        sb.append("availability=/");
-        sb.append(userAvailabilities.get(userAvailabilities.size() - 1));
-        sb.append("/");
-        return sb.toString();
+        String availabilities = sb.toString(); 
+        return availabilities.substring(0, availabilities.length()-3);
     }
+    
+    private void parseAvailability (StringBuilder sb, String availability, String operator) {
+        String uaArr[] = null;
+        if (availability.contains("|")){
+            uaArr = availability.split("\\|");
+            for (int j=0; j < uaArr.length; j++){
+                parseAvailability(sb, uaArr[j].trim(), "|");
+            }
+        }
+        // EM: not supported
+//        else if (availability.contains("&")){
+//            uaArr = availability.split("&");
+//            for (int j=0; j < uaArr.length -1; j++){
+//                parseAvailability(sb, uaArr[j], "&");
+//            }
+//            parseAvailability(sb, uaArr[uaArr.length-1], "|");
+//        } 
+        else{
+            sb.append("availability=/");
+            sb.append(availability);
+            sb.append("/ ");
+            sb.append(operator);
+            sb.append(" ");
+        }
+
+    }
+    
 }
 
diff --git a/full/src/main/resources/kustvakt.conf b/full/src/main/resources/kustvakt.conf
index 338c726..8e8a59c 100644
--- a/full/src/main/resources/kustvakt.conf
+++ b/full/src/main/resources/kustvakt.conf
@@ -19,7 +19,7 @@
 
 ## availability regex
 availability.regex.free = CC-BY.*
-availability.regex.public = ACA.*
+availability.regex.public = ACA.* | QAO.NC
 availability.regex.all = QAO.*
 
 kustvakt.management.registration=enable
diff --git a/full/src/test/java/de/ids_mannheim/korap/web/service/full/SearchServiceTest.java b/full/src/test/java/de/ids_mannheim/korap/web/service/full/SearchServiceTest.java
index de7e93d..376bcfb 100644
--- a/full/src/test/java/de/ids_mannheim/korap/web/service/full/SearchServiceTest.java
+++ b/full/src/test/java/de/ids_mannheim/korap/web/service/full/SearchServiceTest.java
@@ -155,7 +155,8 @@
         assertEquals("koral:docGroup", node.at("/collection/@type").asText());
         assertEquals("CC-BY.*",
                 node.at("/collection/operands/0/value").asText());
-        assertEquals("ACA.*", node.at("/collection/operands/1/value").asText());
+        assertEquals("ACA.*", node.at("/collection/operands/1/operands/0/value").asText());
+        assertEquals("QAO-NC", node.at("/collection/operands/1/operands/1/value").asText());
         assertEquals("operation:or", node.at("/collection/operation").asText());
         assertEquals("availability(PUB)",
                 node.at("/collection/rewrites/0/scope").asText());
diff --git a/full/src/test/java/de/ids_mannheim/korap/web/service/full/SearchWithAvailabilityTest.java b/full/src/test/java/de/ids_mannheim/korap/web/service/full/SearchWithAvailabilityTest.java
index 5bc1ac4..dad8f99 100644
--- a/full/src/test/java/de/ids_mannheim/korap/web/service/full/SearchWithAvailabilityTest.java
+++ b/full/src/test/java/de/ids_mannheim/korap/web/service/full/SearchWithAvailabilityTest.java
@@ -55,9 +55,13 @@
         assertEquals("CC-BY.*",
                 node.at("/collection/operands/0/operands/0/value").asText());
         assertEquals("match:eq",
-                node.at("/collection/operands/0/operands/1/match").asText());
+                node.at("/collection/operands/0/operands/1/operands/0/match").asText());
         assertEquals("ACA.*",
-                node.at("/collection/operands/0/operands/1/value").asText());
+                node.at("/collection/operands/0/operands/1/operands/0/value").asText());
+        assertEquals("match:eq",
+                node.at("/collection/operands/0/operands/1/operands/1/match").asText());
+        assertEquals("QAO-NC",
+                node.at("/collection/operands/0/operands/1/operands/1/value").asText());
         assertEquals("operation:insertion",
                 node.at("/collection/rewrites/0/operation").asText());
         assertEquals("availability(PUB)",
@@ -94,12 +98,12 @@
                 node.at("/operands/0/value").asText());
 
         assertEquals("match:eq",
-                node.at("/operands/1/match").asText());
+                node.at("/operands/1/operands/0/match").asText());
         assertEquals("type:regex",
-                node.at("/operands/1/type").asText());
+                node.at("/operands/1/operands/0/type").asText());
         assertEquals("availability",
-                node.at("/operands/1/key").asText());
-        assertEquals("ACA.*", node.at("/operands/1/value").asText());
+                node.at("/operands/1/operands/0/key").asText());
+        assertEquals("ACA.*", node.at("/operands/1/operands/0/value").asText());
 
         
     }
@@ -162,9 +166,13 @@
         assertEquals("CC-BY.*",
                 node.at("/operands/0/value").asText());
         assertEquals("match:eq",
-                node.at("/operands/1/operands/1/match").asText());
+                node.at("/operands/1/operands/1/operands/0/match").asText());
+        assertEquals("QAO-NC",
+                node.at("/operands/1/operands/1/operands/0/value").asText());
+        assertEquals("match:eq",
+                node.at("/operands/1/operands/1/operands/1/match").asText());
         assertEquals("QAO.*",
-                node.at("/operands/1/operands/1/value").asText());
+                node.at("/operands/1/operands/1/operands/1/value").asText());
         
     }
 
diff --git a/full/src/test/resources/kustvakt-test.conf b/full/src/test/resources/kustvakt-test.conf
index 04e00b8..b16b08e 100644
--- a/full/src/test/resources/kustvakt-test.conf
+++ b/full/src/test/resources/kustvakt-test.conf
@@ -24,7 +24,7 @@
 
 ## availability regex
 availability.regex.free = CC-BY.*
-availability.regex.public = ACA.*
+availability.regex.public = ACA.* | QAO-NC
 availability.regex.all = QAO.*
 
 kustvakt.management.registration=enable
