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
