diff --git a/src/atlasComponents/sapiViews/core/region/region/rich/region.rich.template.html b/src/atlasComponents/sapiViews/core/region/region/rich/region.rich.template.html
index 675927dfcbf690c93921fa1073db10b0faa60bb8..d4a9a79d17698288b49f115c83d895459327bd20 100644
--- a/src/atlasComponents/sapiViews/core/region/region/rich/region.rich.template.html
+++ b/src/atlasComponents/sapiViews/core/region/region/rich/region.rich.template.html
@@ -68,7 +68,7 @@
       <spinner-cmp *ngIf="rfDir.busy$ | async"></spinner-cmp>
 
       <sxplr-sapiviews-features-entry-list-item
-        *ngFor="let feat of rfDir.listOfFeatures$ | async"
+        *ngFor="let feat of rfDir.listOfFeatures$ | async | orderFilterFeatures"
         [sxplr-sapiviews-features-entry-list-item-feature]="feat"
         (click)="handleRegionalFeatureClicked(feat)">
       </sxplr-sapiviews-features-entry-list-item>
diff --git a/src/atlasComponents/sapiViews/features/entryListItem/entryListItem.component.ts b/src/atlasComponents/sapiViews/features/entryListItem/entryListItem.component.ts
index 3b915ff248a21b0cf19d3dc5fbac8131b2d21643..8008affe34a6b783fd1b93ed14ee527279e36d04 100644
--- a/src/atlasComponents/sapiViews/features/entryListItem/entryListItem.component.ts
+++ b/src/atlasComponents/sapiViews/features/entryListItem/entryListItem.component.ts
@@ -1,4 +1,4 @@
-import { Component, Input } from "@angular/core";
+import { ChangeDetectionStrategy, Component, Input } from "@angular/core";
 import { SapiFeatureModel } from "src/atlasComponents/sapi";
 import { CleanedIeegDataset, CLEANED_IEEG_DATASET_TYPE, SapiDatasetModel, SapiParcellationFeatureMatrixModel, SapiRegionalFeatureReceptorModel, SapiSerializationErrorModel, SapiVOIDataResponse, SxplrCleanedFeatureModel } from "src/atlasComponents/sapi/type";
 
@@ -7,7 +7,8 @@ import { CleanedIeegDataset, CLEANED_IEEG_DATASET_TYPE, SapiDatasetModel, SapiPa
   templateUrl: `./entryListItem.template.html`,
   styleUrls: [
     `./entryListItem.style.css`
-  ]
+  ],
+  changeDetection: ChangeDetectionStrategy.OnPush,
 })
 
 export class SapiViewsFeaturesEntryListItem{
diff --git a/src/atlasComponents/sapiViews/features/module.ts b/src/atlasComponents/sapiViews/features/module.ts
index cbf7aeacaeccaf721bb6ca55108b01366f3fa685..3df348c72f79be4b53c3050e30627c896e8b93f2 100644
--- a/src/atlasComponents/sapiViews/features/module.ts
+++ b/src/atlasComponents/sapiViews/features/module.ts
@@ -11,6 +11,7 @@ import * as ieeg from "./ieeg"
 import * as receptor from "./receptors"
 import {SapiViewsFeatureConnectivityModule} from "src/atlasComponents/sapiViews/features/connectivity";
 import * as voi from "./voi"
+import { OrderFilterFeaturesPipe } from "./orderFilterFeatureList.pipe"
 
 const {
   SxplrSapiViewsFeaturesIeegModule
@@ -35,6 +36,7 @@ const { SapiViewsFeaturesVoiModule } = voi
     FeatureBadgeColourPipe,
     FeatureBadgeFlagPipe,
     SapiViewsFeaturesEntryListItem,
+    OrderFilterFeaturesPipe,
   ],
   providers: [
     {
@@ -48,6 +50,7 @@ const { SapiViewsFeaturesVoiModule } = voi
     SapiViewsFeaturesEntryListItem,
     SapiViewsFeaturesVoiModule,
     SapiViewsFeatureConnectivityModule,
+    OrderFilterFeaturesPipe,
   ]
 })
 export class SapiViewsFeaturesModule{}
diff --git a/src/atlasComponents/sapiViews/features/orderFilterFeatureList.pipe.ts b/src/atlasComponents/sapiViews/features/orderFilterFeatureList.pipe.ts
new file mode 100644
index 0000000000000000000000000000000000000000..382862b0300f4bdaffadce20aeb4e28274a8bef6
--- /dev/null
+++ b/src/atlasComponents/sapiViews/features/orderFilterFeatureList.pipe.ts
@@ -0,0 +1,37 @@
+import { Pipe, PipeTransform } from "@angular/core";
+import { CLEANED_IEEG_DATASET_TYPE, SapiFeatureModel, SxplrCleanedFeatureModel } from "src/atlasComponents/sapi/type";
+import { environment } from "src/environments/environment"
+
+type PipableFeatureType = SapiFeatureModel | SxplrCleanedFeatureModel
+
+type ArrayOperation<T extends boolean | number> = (input: PipableFeatureType) => T
+
+const FILTER_FN: ArrayOperation<boolean> = feature => {
+  return feature["@type"] !== "siibra/features/cells"
+}
+
+const ORDER_LIST: ArrayOperation<number> = feature => {
+  if (feature["@type"] === "siibra/features/receptor") return -4
+  if (feature["@type"] === CLEANED_IEEG_DATASET_TYPE) return -3
+  if (feature['@type'] === "https://openminds.ebrains.eu/core/DatasetVersion") return 2
+  return 0
+}
+
+@Pipe({
+  name: 'orderFilterFeatures',
+  pure: true
+})
+
+export class OrderFilterFeaturesPipe implements PipeTransform{
+  public transform(inputFeatures: PipableFeatureType[]): PipableFeatureType[] {
+    return inputFeatures
+      .filter(f => {
+        /**
+         * if experimental flag is set, do not filter out anything
+         */
+        if (environment.EXPERIMENTAL_FEATURE_FLAG) return true
+        return FILTER_FN(f)
+      })
+      .sort((a, b) => ORDER_LIST(a) - ORDER_LIST(b))
+  }
+}