diff --git a/src/components/components.module.ts b/src/components/components.module.ts
index 7125e8b0f63c309f2a4c985b7fedb0cce971ddd4..c03ce4ea93d2f1ab6f1954f0f75e50218462c21c 100644
--- a/src/components/components.module.ts
+++ b/src/components/components.module.ts
@@ -33,6 +33,7 @@ import { TreeComponent } from './tree/tree.component';
 import { TreeBaseDirective } from './tree/treeBase.directive';
 import { IAVVerticalButton } from './vButton/vButton.component';
 import { DynamicMaterialBtn } from './dynamicMaterialBtn/dynamicMaterialBtn.component';
+import { SpinnerCmp } from './spinner/spinner.component';
 
 @NgModule({
   imports : [
@@ -60,6 +61,7 @@ import { DynamicMaterialBtn } from './dynamicMaterialBtn/dynamicMaterialBtn.comp
     ConfirmDialogComponent,
     IAVVerticalButton,
     DynamicMaterialBtn,
+    SpinnerCmp,
 
     /* directive */
     HoverableBlockDirective,
@@ -94,6 +96,7 @@ import { DynamicMaterialBtn } from './dynamicMaterialBtn/dynamicMaterialBtn.comp
     ConfirmDialogComponent,
     IAVVerticalButton,
     DynamicMaterialBtn,
+    SpinnerCmp,
 
     SearchResultPaginationPipe,
     TreeSearchPipe,
diff --git a/src/components/spinner/spinner.component.ts b/src/components/spinner/spinner.component.ts
new file mode 100644
index 0000000000000000000000000000000000000000..f35c1edde4821ee2bd340a6d33bf98034d087c4a
--- /dev/null
+++ b/src/components/spinner/spinner.component.ts
@@ -0,0 +1,8 @@
+import { Component } from "@angular/core";
+
+@Component({
+  selector: 'spinner-cmp',
+  templateUrl: './spinner.template.html'
+})
+
+export class SpinnerCmp{}
diff --git a/src/components/spinner/spinner.template.html b/src/components/spinner/spinner.template.html
new file mode 100644
index 0000000000000000000000000000000000000000..ee3cb4a78cf02753d14a53ca12282435530bdd8a
--- /dev/null
+++ b/src/components/spinner/spinner.template.html
@@ -0,0 +1 @@
+<div class="spinnerAnimationCircle" aria-busy="true"></div>
diff --git a/src/ui/databrowserModule/databrowser.service.ts b/src/ui/databrowserModule/databrowser.service.ts
index 67ea743005e076fb9028bc676f193ac44058b6d5..8a31836a996a484a615e4aad726e124b6be23906 100644
--- a/src/ui/databrowserModule/databrowser.service.ts
+++ b/src/ui/databrowserModule/databrowser.service.ts
@@ -346,7 +346,7 @@ export class DatabrowserService implements OnDestroy {
 }
 
 export function reduceDataentry(accumulator: Array<{name: string, occurance: number}>, dataentry: IDataEntry) {
-  const methods = dataentry.methods
+  const methods = (dataentry.methods || [])
     .reduce((acc, item) => acc.concat(
       item.length > 0
         ? item
diff --git a/src/ui/databrowserModule/databrowser/databrowser.template.html b/src/ui/databrowserModule/databrowser/databrowser.template.html
index 0621b5e538c5e4b3f8afb84083b15331a9b2c991..7c684c6cdf0fbe4332c4488c551b4caf63c98e17 100644
--- a/src/ui/databrowserModule/databrowser/databrowser.template.html
+++ b/src/ui/databrowserModule/databrowser/databrowser.template.html
@@ -43,11 +43,9 @@
 </ng-content>
 
 <ng-template #loadingSpinner>
-  <mat-card-content class="h-100">
-    <div class="m-2 d-flex flex-row align-items-center justify-content star">
-      <div class="d-inline-block mr-2 spinnerAnimationCircle"></div>
-      <span>Fetching datasets...</span>
-    </div>
+  <mat-card-content class="h-100 d-flex justify-content-start p-2">
+    <spinner-cmp class="mr-2"></spinner-cmp>
+    <span>Fetching datasets...</span>
   </mat-card-content>
 </ng-template>
 
diff --git a/src/ui/databrowserModule/preview/datasetPreviews/datasetPreviewsList/datasetPreviewList.template.html b/src/ui/databrowserModule/preview/datasetPreviews/datasetPreviewsList/datasetPreviewList.template.html
index 3859c93453d7782a3affafbdf80d0cfb872a226e..5146c85cb1b26cdaf1cabc1f4f4b687edfd631e4 100644
--- a/src/ui/databrowserModule/preview/datasetPreviews/datasetPreviewsList/datasetPreviewList.template.html
+++ b/src/ui/databrowserModule/preview/datasetPreviews/datasetPreviewsList/datasetPreviewList.template.html
@@ -6,7 +6,7 @@
 
 </kg-dataset-list>
 
-<div *ngIf="loadingDatasetPreviewList; else datasetList" class="spinnerAnimationCircle"></div>
+<spinner-cmp *ngIf="loadingDatasetPreviewList; else datasetList"></spinner-cmp>
 
 <ng-template #datasetList>
 
diff --git a/src/ui/databrowserModule/singleDataset/detailedView/singleDataset.template.html b/src/ui/databrowserModule/singleDataset/detailedView/singleDataset.template.html
index ac830cd4fe151e232b2e4963ed661dccd5090257..d6ebc5aa1d406650a95e42f7bf40db960559b024 100644
--- a/src/ui/databrowserModule/singleDataset/detailedView/singleDataset.template.html
+++ b/src/ui/databrowserModule/singleDataset/detailedView/singleDataset.template.html
@@ -1,12 +1,9 @@
 
 <!-- title -->
 <mat-card-subtitle *ngIf="!hideTitle">
-  <span *ngIf="name; else nameLoading">
+  <span *ngIf="name; else isLoadingTmpl">
     {{ name }}
   </span>
-  <ng-template #nameLoading>
-    <div class="spinnerAnimationCircle"></div>
-  </ng-template>
 </mat-card-subtitle>
 
 <mat-card-content mat-dialog-content>
@@ -14,15 +11,11 @@
   <!-- description -->
   <small>
     <markdown-dom
-      *ngIf="description; else descriptionLoading"
+      *ngIf="description; else isLoadingTmpl"
       class="d-block"
       [markdown]="description">
 
     </markdown-dom>
-
-    <ng-template #descriptionLoading>
-      <div class="d-inline-block spinnerAnimationCircle"></div>
-    </ng-template>
   </small>
 
   <!-- publications -->
@@ -162,4 +155,8 @@
     </iav-dynamic-mat-button>
   </ng-template>
 
+</ng-template>
+
+<ng-template #isLoadingTmpl>
+  <spinner-cmp></spinner-cmp>
 </ng-template>
\ No newline at end of file
diff --git a/src/ui/databrowserModule/singleDataset/listView/singleDatasetListView.template.html b/src/ui/databrowserModule/singleDataset/listView/singleDatasetListView.template.html
index 926b4a5d855e64afbcc5df7b3408416b6855e0f5..2e05c56499b603d95d7cc38c03bd588c9630455e 100644
--- a/src/ui/databrowserModule/singleDataset/listView/singleDatasetListView.template.html
+++ b/src/ui/databrowserModule/singleDataset/listView/singleDatasetListView.template.html
@@ -11,7 +11,7 @@
       {{ name }}
     </small>
     <ng-template #loadingName>
-      <div class="spinnerAnimationCircle"></div>
+      <spinner-cmp></spinner-cmp>
     </ng-template>
   </div>
 
diff --git a/src/ui/databrowserModule/singleDataset/sideNavView/sDsSideNavView.template.html b/src/ui/databrowserModule/singleDataset/sideNavView/sDsSideNavView.template.html
index ba6354fc96315db3206186e7a152d01ffee08516..0a64ef91df8cf25d0f2c594298dd7f0511078285 100644
--- a/src/ui/databrowserModule/singleDataset/sideNavView/sDsSideNavView.template.html
+++ b/src/ui/databrowserModule/singleDataset/sideNavView/sDsSideNavView.template.html
@@ -12,7 +12,7 @@
     [style.backgroundColor]="'rgba(128,128,128, 0.2)'">
     <mat-card-title>
       <ng-content select="[region-of-interest]"></ng-content>
-      <div>
+      <div *ngIf="!fetchFlag; else isLoadingTmpl">
         {{ name }}
       </div>
     </mat-card-title>
@@ -56,20 +56,48 @@
   <mat-card-content class="mt-2 ml-15px-n mr-15px-n">
     <mat-accordion>
 
-      <!-- Details -->
+      <!-- Description -->
       <mat-expansion-panel hideToggle
         [expanded]="true">
         <mat-expansion-panel-header>
           <mat-panel-title>
-            Details
+            Description
           </mat-panel-title>
         </mat-expansion-panel-header>
-
-
         <ng-template matExpansionPanelContent>
-          <small class="m-1">
+          <small *ngIf="!fetchFlag; else isLoadingTmpl" class="m-1">
+
+            <!-- desc -->
             <markdown-dom [markdown]="description">
             </markdown-dom>
+
+            <mat-divider></mat-divider>
+
+            <!-- citations -->
+            <div class="d-block mb-2 "
+              [ngClass]="{'mt-2': first}"
+              *ngFor="let publication of publications; let first = first">
+              <a *ngIf="publication.doi; else plainText"
+                iav-stop="click mousedown"
+                [href]="publication.doi | doiParserPipe"
+                target="_blank">
+                {{ publication.cite }}
+              </a>
+              <ng-template #plainText>
+                {{ publication.cite }}
+              </ng-template>
+            </div>
+
+            <!-- contributors, if publications not available -->
+            <ng-container *ngIf="publications && publications.length == 0 && contributors && contributors.length > 0">
+              <ng-container *ngFor="let contributor of contributors; let lastFlag = last;">
+                <a [href]="contributor | getContributorKgLink" class="iv-custom-comp" target="_blank">
+                  {{ contributor['schema.org/shortName'] || contributor['shortName'] || contributor['name'] }}
+                </a>
+                <span *ngIf="!lastFlag">,</span>
+              </ng-container>
+            </ng-container>
+
           </small>
         </ng-template>
       </mat-expansion-panel>
@@ -82,23 +110,33 @@
         #rfGetAllFeatures="rfGetAllFeatures">
       </div>
 
-      <ng-container *ngFor="let feature of (rfGetAllFeatures.features | filterRegionFeaturesById : fullId)">
-        <mat-expansion-panel hideToggle
-          #matExpansionPanel>
-          <mat-expansion-panel-header>
-            <mat-panel-title>
-              {{ feature.type }}
-            </mat-panel-title>
-          </mat-expansion-panel-header>
-
-          <ng-template [ngIf]="matExpansionPanel.expanded">
-            <feature-container
-              [feature]="feature"
-              [region]="region$ | async">
-            </feature-container>
-          </ng-template>
-        </mat-expansion-panel>
-      </ng-container>
+      <!-- loading tmpl -->
+      <ng-template [ngIf]="rfGetAllFeatures.isLoading$ | async" [ngIfElse]="featureTmpl">
+        <div class="d-flex justify-content-center">
+          <ng-container *ngTemplateOutlet="isLoadingTmpl"></ng-container>
+        </div>
+      </ng-template>
+
+      <!-- feature tmpl -->
+      <ng-template #featureTmpl>
+        <ng-container *ngFor="let feature of (rfGetAllFeatures.features | filterRegionFeaturesById : fullId)">
+          <mat-expansion-panel hideToggle
+            #matExpansionPanel>
+            <mat-expansion-panel-header>
+              <mat-panel-title>
+                {{ feature.type }}
+              </mat-panel-title>
+            </mat-expansion-panel-header>
+  
+            <ng-template [ngIf]="matExpansionPanel.expanded">
+              <feature-container
+                [feature]="feature"
+                [region]="region$ | async">
+              </feature-container>
+            </ng-template>
+          </mat-expansion-panel>
+        </ng-container>
+      </ng-template>
     </mat-accordion>
 
   </mat-card-content>
@@ -121,3 +159,6 @@
   </ng-template>
 </ng-template>
 
+<ng-template #isLoadingTmpl>
+  <spinner-cmp></spinner-cmp>
+</ng-template>
\ No newline at end of file
diff --git a/src/ui/nehubaContainer/nehubaContainer.style.css b/src/ui/nehubaContainer/nehubaContainer.style.css
index 769f2ab231dfb056ba38112cf443bb597c6da101..956ab12378101e5faacc1e606db186e7a95c68e3 100644
--- a/src/ui/nehubaContainer/nehubaContainer.style.css
+++ b/src/ui/nehubaContainer/nehubaContainer.style.css
@@ -37,7 +37,7 @@ div.loadingIndicator
   flex-direction: row-reverse;
 }
 
-div.loadingIndicator div.spinnerAnimationCircle
+div.loadingIndicator >>> div.spinnerAnimationCircle
 {
   font-size:150%;
 }
diff --git a/src/ui/nehubaContainer/nehubaContainer.template.html b/src/ui/nehubaContainer/nehubaContainer.template.html
index 7cb435de9468301db8cb8fb32adb891d93bd7df0..8ced2dd4687ad88468f3a7e3103b4d907ae8bb1d 100644
--- a/src/ui/nehubaContainer/nehubaContainer.template.html
+++ b/src/ui/nehubaContainer/nehubaContainer.template.html
@@ -509,14 +509,26 @@
       #iavDbDirective="iavDatabrowserDirective">
     </div>
 
-    <!-- place holder content, if no regional features or connectivity or change ref space options are available -->
-    <ng-template [ngIf]="iavDbDirective?.dataentries?.length === 0
-      && !(selectedParcellation?.hasAdditionalViewMode?.includes('connectivity'))">
-      <div class="p-4">
-        {{ CONST.NO_ADDIONTAL_INFO_AVAIL }}
+    <!-- if dataset is loading -->
+    <ng-template [ngIf]="iavDbDirective?.fetchingFlag" [ngIfElse]="featureLoadedTmpl">
+      <div class="d-flex justify-content-center">
+        <spinner-cmp></spinner-cmp>
       </div>
     </ng-template>
 
+    <ng-template #featureLoadedTmpl>
+
+      <!-- place holder content, if no regional features or connectivity or change ref space options are available -->
+      <ng-template [ngIf]="iavDbDirective?.dataentries?.length === 0
+        && !(selectedParcellation?.hasAdditionalViewMode?.includes('connectivity'))">
+        <div class="p-4">
+          {{ CONST.NO_ADDIONTAL_INFO_AVAIL }}
+        </div>
+      </ng-template>
+
+    </ng-template>
+
+
     <ng-container *ngTemplateOutlet="ngMatAccordionTmpl; context: {
       title: CONST.REGIONAL_FEATURES,
       desc: iavDbDirective?.dataentries?.length,
@@ -576,8 +588,9 @@
       [attr.id]="ID_MESH_LOADING_STATUS"
       role="status">
 
-      <div [ngClass]="{spinnerAnimationCircle: !!(showPerpsectiveScreen$ | async)}">
-      </div>
+      <spinner-cmp *ngIf="showPerpsectiveScreen$ | async">
+      </spinner-cmp>
+      
       <mat-list>
         <mat-list-item>
           {{ showPerpsectiveScreen$ | async }}
@@ -595,7 +608,7 @@
     <!-- mesh loading is still weird -->
     <!-- if the precomputed server does not have the necessary fragment file, then the numberws will not collate -->
     <div *ngIf="false && (perspectiveViewLoading$ | async)" class="loadingIndicator">
-      <div class="spinnerAnimationCircle"></div>
+      <spinner-cmp></spinner-cmp>
 
       <div *ngIf="false" perspectiveLoadingText>
         {{ perspectiveViewLoading$ | async }}
@@ -642,9 +655,7 @@
     </ng-container>
 
     <div *ngIf="(sliceViewLoadingMain$ | async)[panelIndex]" class="loadingIndicator">
-      <div class="spinnerAnimationCircle">
-
-      </div>
+      <spinner-cmp></spinner-cmp>
     </div>
   </layout-floating-container>
 </ng-template>
diff --git a/src/ui/nehubaContainer/splashScreen/splashScreen.template.html b/src/ui/nehubaContainer/splashScreen/splashScreen.template.html
index 0b2b70ecd19e8cd9f81fdeb51da9adb9fc1d7793..41922dbfd31ffc03218ae3c13ca87c7af726ce82 100644
--- a/src/ui/nehubaContainer/splashScreen/splashScreen.template.html
+++ b/src/ui/nehubaContainer/splashScreen/splashScreen.template.html
@@ -23,7 +23,7 @@
     <ng-container *ngIf="stillLoadingAtlases$ | async as stillLoadingTemplates">
       <div class="d-flex align-items-center p-4 loadingIndicator" *ngFor="let t of stillLoadingTemplates">
         <h1 class="mat-h1">
-          <div class="spinnerAnimationCircle"></div>
+          <spinner-cmp></spinner-cmp>
         </h1>
       </div>
     </ng-container>
diff --git a/src/ui/regionalFeatures/singleFeatures/iEEGRecordings/iEEGRecordings/iEEGRecordings.template.html b/src/ui/regionalFeatures/singleFeatures/iEEGRecordings/iEEGRecordings/iEEGRecordings.template.html
index f1389020cd588b1c507aef061ef62464bb7cfcc1..64e66983c69b605a34b4a1fa918ed532cfc31fb1 100644
--- a/src/ui/regionalFeatures/singleFeatures/iEEGRecordings/iEEGRecordings/iEEGRecordings.template.html
+++ b/src/ui/regionalFeatures/singleFeatures/iEEGRecordings/iEEGRecordings/iEEGRecordings.template.html
@@ -49,5 +49,5 @@
 
 <!-- loading template -->
 <ng-template #loadingTmpl>
-  <div class="spinnerAnimationCircle"></div>
+  <spinner-cmp></spinner-cmp>
 </ng-template>
diff --git a/src/ui/regionalFeatures/singleFeatures/iEEGRecordings/module.ts b/src/ui/regionalFeatures/singleFeatures/iEEGRecordings/module.ts
index 6a099cad95c2c4500b8737f1a52f25e8ac12f626..ffb47e1b7916dacf843d41bf90f27fc25e8f8dc5 100644
--- a/src/ui/regionalFeatures/singleFeatures/iEEGRecordings/module.ts
+++ b/src/ui/regionalFeatures/singleFeatures/iEEGRecordings/module.ts
@@ -1,5 +1,6 @@
 import { CommonModule } from "@angular/common";
 import { NgModule } from "@angular/core";
+import { ComponentsModule } from "src/components";
 import { AngularMaterialModule } from "src/ui/sharedModules/angularMaterial.module";
 import { UtilModule } from "src/util";
 import { RegionalFeaturesService } from "../../regionalFeature.service";
@@ -10,6 +11,7 @@ import { IEEGRecordingsCmp } from "./iEEGRecordings/iEEGRecordings.component";
     CommonModule,
     UtilModule,
     AngularMaterialModule,
+    ComponentsModule,
   ],
   declarations: [
     IEEGRecordingsCmp