diff --git a/projects/grid-failure-information-app/src/app/shared/filters/ag-grid/set-filter/set-filter.component.ts b/projects/grid-failure-information-app/src/app/shared/filters/ag-grid/set-filter/set-filter.component.ts
index ea0f137..cb2e672 100644
--- a/projects/grid-failure-information-app/src/app/shared/filters/ag-grid/set-filter/set-filter.component.ts
+++ b/projects/grid-failure-information-app/src/app/shared/filters/ag-grid/set-filter/set-filter.component.ts
@@ -38,32 +38,28 @@
   protected _endSubscriptions$: Subject<boolean> = new Subject();
 
   filterCheckboxList(text: string) {
-    text
-      .trim()
-      .toLowerCase()
-      .split(' ')
-      .forEach(filterWord => {
-        const trimmedFilterWord = filterWord.trim();
-        if (Object.keys(this.setItems).length > 0) {
-          // setItems allready there ??
-          for (var itemKey in this.setItems) {
-            if (this._contains(itemKey, trimmedFilterWord)) {
-              // filtertext is in itemKey ??
-              this._extendFilteredItem(trimmedFilterWord);
-            } else {
-              this._filteredItems[itemKey] = this.setItems[itemKey];
-              delete this.setItems[itemKey];
-            }
-          }
-        } else {
+    var filterWord = text.trim().toLowerCase();
+    const trimmedFilterWord = filterWord.trim();
+    if (Object.keys(this.setItems).length > 0) {
+      // setItems allready there ??
+      for (var itemKey in this.setItems) {
+        if (this._contains(itemKey, trimmedFilterWord)) {
+          // filtertext is in itemKey ??
           this._extendFilteredItem(trimmedFilterWord);
-        }
-        if (this.filterText.length === 0) {
-          this.selectAll();
         } else {
-          this.selectAllChecked = false;
+          this._filteredItems[itemKey] = this.setItems[itemKey];
+          delete this.setItems[itemKey];
         }
-      });
+      }
+    } else {
+      this._extendFilteredItem(trimmedFilterWord);
+    }
+    if (this.filterText.length === 0) {
+      this.selectAll();
+    } else {
+      this.selectAllChecked = false;
+    }
+
     this._params.filterChangedCallback();
   }
 
