diff --git a/src/client/epics/index.js b/src/client/epics/index.js
index 87c3867bee1796ad82d75e37c8e0bf452653504a..f660a123ca803ed6e2d8a0f349b7833e55457692 100644
--- a/src/client/epics/index.js
+++ b/src/client/epics/index.js
@@ -251,40 +251,36 @@ export const stateToUrl = ({
   if (sortBy !== null) { params.sortBy = sortBy; }
   if (sortDirection !== null) { params.sortDirection = sortDirection; }
   if (variant !== null) { params.variant = variant; }
-  let uriFilters = {};
-  let spatialFilters = {};
-  let textFilters = {};
-  let timespanFilters = {};
-  let activeUriFilters = false;
-  let activeSpatialFilters = false;
-  let activeTextFilters = false;
-  let activeTimespanFilters = false;
+  let constraints = {};
   for (const [key, value] of Object.entries(facets)) {
     if (has(value, 'uriFilter') && value.uriFilter !== null) {
-      activeUriFilters = true;
-      uriFilters[key] = Object.keys(value.uriFilter);
+      constraints[key] = {
+        filterType: value.filterType,
+        priority: value.priority,
+        values: Object.keys(value.uriFilter)
+      };
     } else if (has(value, 'spatialFilter') && value.spatialFilter !== null) {
-      activeSpatialFilters = true;
-      spatialFilters[key] = boundsToValues(value.spatialFilter._bounds);
+      constraints[key] = {
+        filterType: value.filterType,
+        priority: value.priority,
+        values: boundsToValues(value.spatialFilter._bounds)
+      };
     }  else if (has(value, 'textFilter') && value.textFilter !== null) {
-      activeTextFilters = true;
-      textFilters[key] = value.textFilter;
+      constraints[key] = {
+        filterType: value.filterType,
+        priority: value.priority,
+        values: value.textFilter
+      };
     } else if (has(value, 'timespanFilter') && value.timespanFilter !== null) {
-      activeTimespanFilters = true;
-      timespanFilters[key] = value.timespanFilter;
+      constraints[key] = {
+        filterType: value.filterType,
+        priority: value.priority,
+        values: value.timespanFilter
+      };
     }
   }
-  if (activeUriFilters) {
-    params.uriFilters = JSON.stringify(uriFilters);
-  }
-  if (activeSpatialFilters) {
-    params.spatialFilters = JSON.stringify(spatialFilters);
-  }
-  if (activeTextFilters) {
-    params.textFilters = JSON.stringify(textFilters);
-  }
-  if (activeTimespanFilters) {
-    params.timespanFilters = JSON.stringify(timespanFilters);
+  if (Object.keys(constraints).length > 0) {
+    params.constraints = JSON.stringify(constraints);
   }
   return querystring.stringify(params);
 };
diff --git a/src/client/reducers/eventsFacets.js b/src/client/reducers/eventsFacets.js
index 642cfd6d214e391c6486b0073ae651ff609ac3ce..e27f848dfe09e19aed27a92e1483d72d08d6d2e5 100644
--- a/src/client/reducers/eventsFacets.js
+++ b/src/client/reducers/eventsFacets.js
@@ -16,23 +16,6 @@ export const INITIAL_STATE = {
   facetUpdateID: 0,
   updatedFilter: null,
   facets: {
-    label: {
-      id: 'label',
-      label: 'Label',
-      // predicate: defined in backend
-      distinctValueCount: 0,
-      values: [],
-      flatValues: [],
-      //sortBy: 'instanceCount',
-      //sortDirection: 'desc',
-      sortButton: false,
-      spatialFilterButton: false,
-      isFetching: false,
-      searchField: false,
-      containerClass: 'one',
-      filterType: 'textFilter',
-      textFilter: null,
-    },
     type: {
       id: 'type',
       label: 'Type',
@@ -49,7 +32,8 @@ export const INITIAL_STATE = {
       containerClass: 'three',
       filterType: 'uriFilter',
       uriFilter: null,
-      spatialFilter: null
+      spatialFilter: null,
+      priority: 3
     },
     eventTimespan: {
       id: 'eventTimespan',
@@ -69,7 +53,8 @@ export const INITIAL_STATE = {
       min: null,
       max: null,
       timespanFilter: null,
-      type: 'timespan'
+      type: 'timespan',
+      priority: 2
     },
     place: {
       id: 'place',
@@ -88,7 +73,8 @@ export const INITIAL_STATE = {
       filterType: 'uriFilter',
       uriFilter: null,
       spatialFilter: null,
-      type: 'hierarchical'
+      type: 'hierarchical',
+      priority: 1
     },
   }
 };
diff --git a/src/server/index.js b/src/server/index.js
index bea6aa44f71ab02e2d2fd8daf9a01f3493cdf073..25a5ef437a3094fdf4d9684397e761247c414046 100644
--- a/src/server/index.js
+++ b/src/server/index.js
@@ -48,7 +48,8 @@ app.get(`${apiPath}/:resultClass/paginated`, async (req, res, next) => {
       textFilters: req.query.textFilters == null ? null : JSON.parse(req.query.textFilters),
       timespanFilters: req.query.timespanFilters == null ? null : JSON.parse(req.query.timespanFilters),
       sortBy: req.query.sortBy || null,
-      sortDirection: req.query.sortDirection || null
+      sortDirection: req.query.sortDirection || null,
+      constraints: req.query.constraints
     });
     res.json(data);
   } catch(error) {
diff --git a/src/server/sparql/FacetResults.js b/src/server/sparql/FacetResults.js
index c86a63326d88a914c809c8d2ede4093d9c3b56bf..68815fb9a7b4d95298ad94837dfece5069228bb8 100644
--- a/src/server/sparql/FacetResults.js
+++ b/src/server/sparql/FacetResults.js
@@ -206,7 +206,7 @@ const getPaginatedData = ({
       resultSetProperties = '';
   }
   q = q.replace('<RESULT_SET_PROPERTIES>', resultSetProperties);
-  // console.log(prefixes + q)
+  console.log(prefixes + q)
   return runSelectQuery(prefixes + q, endpoint, makeObjectList);
 };