diff --git a/src/atlasViewer/atlasViewer.style.css b/src/atlasViewer/atlasViewer.style.css
index b56b1579651b45235cf8f5cc43f5c4f5a2f05be9..f0f1b2e0550826934afbf5e032c96fb8c706714c 100644
--- a/src/atlasViewer/atlasViewer.style.css
+++ b/src/atlasViewer/atlasViewer.style.css
@@ -21,9 +21,10 @@ ui-nehuba-container
   height:100%;
 }
 
+/* zindex of banner wrapper needs to be lower than zindex of floating layer */
 div[bannerWrapper]
 {
-  z-index:1000;
+  z-index:12;
   position:absolute;
 
   width:100%;
diff --git a/src/atlasViewer/atlasViewer.template.html b/src/atlasViewer/atlasViewer.template.html
index aff1c05c70a4f41d8355a9d54188b323f47306af..c3828d3a89c7e36849915a581753ce76de76ac34 100644
--- a/src/atlasViewer/atlasViewer.template.html
+++ b/src/atlasViewer/atlasViewer.template.html
@@ -127,7 +127,7 @@
     </div>
   
     <layout-floating-container
-      zIndex = "9"
+      zIndex="13"
       #floatingOverlayContainer>
       <div floatingContainerDirective>
   
diff --git a/src/components/dropdown/dropdown.template.html b/src/components/dropdown/dropdown.template.html
index e448400b8324b98dcfc159263517856732694cfc..d40112b4cabbfe292a7bf9834dea71ad660a221f 100644
--- a/src/components/dropdown/dropdown.template.html
+++ b/src/components/dropdown/dropdown.template.html
@@ -1,8 +1,8 @@
 <!-- TODO remove dependency on ismobile -->
 <span
-  class = "btn btn-default"
-  [innerHTML] = "activeDisplay(selectedItem)"
-  hoverable
+  class="btn btn-default"
+  [innerHTML]="activeDisplay(selectedItem)"
+  [hoverable]="{translateY:-2}"
   #dropdownToggle
   dropdownToggle
               
@@ -23,7 +23,7 @@
   [selectedItem]="selectedItem"
   [inputArray]="inputArray"
   [@showState]="openState ? 'show' : 'hide'"
-  [isMobile] = "isMobile"
-  [darktheme] = "darktheme">
+  [isMobile]="isMobile"
+  [darktheme]="darktheme">
 
 </radio-list>
diff --git a/src/components/hoverableBlock.directive.ts b/src/components/hoverableBlock.directive.ts
index e05dc260d0f2693500c98318b5deb2c7350c56d3..bc0da29e43f6b99d73108d3db6f63633a659e922 100644
--- a/src/components/hoverableBlock.directive.ts
+++ b/src/components/hoverableBlock.directive.ts
@@ -1,4 +1,4 @@
-import { Directive, HostListener, HostBinding } from "@angular/core";
+import { Directive, HostListener, HostBinding, Input } from "@angular/core";
 import { DomSanitizer } from "@angular/platform-browser";
 
 @Directive({
@@ -15,6 +15,26 @@ import { DomSanitizer } from "@angular/platform-browser";
 
 export class HoverableBlockDirective{
 
+  @Input('hoverable')
+  config:any = {
+    disable: false,
+    translateY: -5
+  }
+
+  private _disable = false
+  private _translateY = -5
+
+  ngOnChanges(){
+    this._disable = this.config && !!this.config.disable
+    /**
+     * 0 is evaluated as falsy, but a valid number
+     * conditional tests for whether we need to fall back to default
+     */
+    this._translateY = this.config && this.config.translateY !== 0 && !!Number(this.config.translateY)
+      ? Number(this.config.translateY)
+      : -5
+  }
+
   @HostBinding('style.opacity')
   opacity : number = 0.9
 
@@ -26,13 +46,19 @@ export class HoverableBlockDirective{
 
   @HostListener('mouseenter')
   onMouseenter(){
+    if (this._disable) return
     this.opacity = 1.0
     this.boxShadow = this.sanitizer.bypassSecurityTrustStyle(`0 4px 6px 0 rgba(5,5,5,0.25)`)
-    this.transform = this.sanitizer.bypassSecurityTrustStyle(`translateY(-2%)`)
+    /**
+     * n.b. risk of XSS. But sincle translate Y is passed through Number, and corerced into a number,
+     * and using 5 as a fallback, it should be safe
+     */
+    this.transform = this.sanitizer.bypassSecurityTrustStyle(`translateY(${this._translateY}px)`)
   }
 
   @HostListener('mouseleave')
   onmouseleave(){
+    if (this._disable) return
     this.opacity = 0.9
     this.boxShadow = this.sanitizer.bypassSecurityTrustStyle(`0 4px 6px 0 rgba(5,5,5,0.1)`)
     this.transform = this.sanitizer.bypassSecurityTrustStyle(`translateY(0px)`)
diff --git a/src/components/panel/panel.template.html b/src/components/panel/panel.template.html
index a510270894b020794b9f010fc683d7c1ce27ab4c..d2c55e22b6daed1c0b223e86492e6429e34a143d 100644
--- a/src/components/panel/panel.template.html
+++ b/src/components/panel/panel.template.html
@@ -11,7 +11,7 @@
       *ngIf="showHeading"
       class="l-card-title"
       (click)="toggleCollapseBody($event)"
-      hoverable>
+      [hoverable]="{disable:!bodyCollapsable}">
       <ng-content select="[heading]">
       </ng-content>
     </div>
diff --git a/src/components/readmoore/readmore.template.html b/src/components/readmoore/readmore.template.html
index 8572b5e2e175f1d3e068a989f6c6ddd9f7e4c75f..20fdb98aeca3cfb760d23090d3cde70888b5c63c 100644
--- a/src/components/readmoore/readmore.template.html
+++ b/src/components/readmoore/readmore.template.html
@@ -9,7 +9,7 @@
 <div 
   (click)="toggle($event)" 
   sliver
-  hoverable>
+  [hoverable]="{translateY:-1}">
 
   <i 
     [ngClass] = "show ? 'fa-chevron-up' : 'fa-chevron-down'" 
diff --git a/src/res/css/extra_styles.css b/src/res/css/extra_styles.css
index 1f176a851b20e3cf30cd70b363cc1c2730eefa4c..ddf0340c7f957cbed2b213a2fcb14420b7f0d324 100644
--- a/src/res/css/extra_styles.css
+++ b/src/res/css/extra_styles.css
@@ -325,7 +325,13 @@ markdown-dom pre code
 {
   height:100%;
 }
+
 .overflow-x-hidden
 {
   overflow-x:hidden;
+}
+
+.muted
+{
+  opacity : 0.5!important;
 }
\ No newline at end of file
diff --git a/src/ui/databrowserModule/databrowser/databrowser.style.css b/src/ui/databrowserModule/databrowser/databrowser.style.css
index eb0ddb2feb9c3f789cbafbc75c3a7956455303e7..03c84492265b2bd08506129d0c16e782c60788e7 100644
--- a/src/ui/databrowserModule/databrowser/databrowser.style.css
+++ b/src/ui/databrowserModule/databrowser/databrowser.style.css
@@ -114,8 +114,6 @@ div[noSelectedRegion]
 dataset-viewer
 {
   display: block;
-  padding: 0.3em 1em;
-  background-color: rgba(128, 128, 128, 0.2);
 }
 
 div[regionsContainer]
diff --git a/src/ui/databrowserModule/datasetViewer/datasetViewer.component.ts b/src/ui/databrowserModule/datasetViewer/datasetViewer.component.ts
index d042842f54da23ceb81d56a4eca1ee3a9f398a0c..7be8d563234f7e854b1bda067e07a1a758471718 100644
--- a/src/ui/databrowserModule/datasetViewer/datasetViewer.component.ts
+++ b/src/ui/databrowserModule/datasetViewer/datasetViewer.component.ts
@@ -1,4 +1,4 @@
-import { Component, Input, Output, EventEmitter } from "@angular/core";
+import { Component, Input, Output, EventEmitter, ViewChild, ElementRef } from "@angular/core";
 import { DataEntry } from "src/services/stateStore.service";
 
 @Component({
@@ -11,15 +11,20 @@ export class DatasetViewerComponent{
   @Input() dataset : DataEntry
   
   @Output() showPreviewDataset: EventEmitter<{datasetName:string, event:MouseEvent}> = new EventEmitter()
-
+  @ViewChild('kgrRef', {read:ElementRef}) kgrRef: ElementRef
 
   previewDataset(event:MouseEvent){
+    if (!this.dataset.preview) return
     this.showPreviewDataset.emit({
       event,
       datasetName: this.dataset.name
     })
+    event.stopPropagation()
   }
 
+  clickMainCard(event:MouseEvent) {
+    if (this.kgrRef) this.kgrRef.nativeElement.click()
+  }
 
   get methods(): string[]{
     return this.dataset.activity.reduce((acc, act) => {
@@ -27,6 +32,10 @@ export class DatasetViewerComponent{
     }, [])
   }
 
+  get hasKgRef(): boolean{
+    return this.kgReference.length > 0
+  }
+
   get kgReference(): string[] {
     return this.dataset.kgReference.map(ref => `https://doi.org/${ref}`)
   }
diff --git a/src/ui/databrowserModule/datasetViewer/datasetViewer.style.css b/src/ui/databrowserModule/datasetViewer/datasetViewer.style.css
index 5c38860fd0db7140609c87ab55fb6039de22f32c..17836b855bb96876f0781e7a30e4974aca789d72 100644
--- a/src/ui/databrowserModule/datasetViewer/datasetViewer.style.css
+++ b/src/ui/databrowserModule/datasetViewer/datasetViewer.style.css
@@ -12,4 +12,15 @@ flat-tree-component
 .dataset-pill
 {
   font-size:80%;
+}
+
+.ds-container
+{
+
+  background-color: rgba(128, 128, 128, 0.2);
+}
+
+.preview-container
+{
+  flex: 0 0 2em;
 }
\ No newline at end of file
diff --git a/src/ui/databrowserModule/datasetViewer/datasetViewer.template.html b/src/ui/databrowserModule/datasetViewer/datasetViewer.template.html
index ec0e41cf8e078b5640e2fb16fd16975d0ae0e378..c1248259e4ac13b17b3395b63ef41d1d3396b277 100644
--- a/src/ui/databrowserModule/datasetViewer/datasetViewer.template.html
+++ b/src/ui/databrowserModule/datasetViewer/datasetViewer.template.html
@@ -1,42 +1,34 @@
-<div *ngIf = "dataset; else defaultDisplay">
-  <ng-content select="[regionTagsContainer]">
+<div class="d-flex">
+  <div
+    *ngIf="dataset; else defaultDisplay"
+    (click)="clickMainCard($event)"
+    [ngClass]="{'muted': !hasKgRef}"
+    class="p-2 ds-container main-container"
+    [hoverable]="{translateY:-2,disable:!hasKgRef}">
+    <ng-content select="[regionTagsContainer]">
 
-  </ng-content>
-  <div title>
-    {{ dataset.name }}
-  </div>
-
-  <div class="btn-group">
+    </ng-content>
+    <div title>
+      {{ dataset.name }}
+    </div>
 
     <a
       *ngFor="let kgr of kgReference"
-      class="btn btn-sm btn-outline-secondary"
+      class="btn btn-sm btn-link"
       target="_blank"
-      tooltip="show in knowledge graph"
-      [href]="kgr">
-      <i class="fas fa-brain"></i>
-    </a>
-  
-    <a
-      *ngIf="dataset.preview"
-      class="btn btn-sm btn-outline-secondary"
-      (click)="previewDataset($event)"
-      tooltip="preview dataset"
-      href="#">
-      <i class="fas fa-chart-pie"></i>
+      [href]="kgr"
+      hidden
+      #kgrRef>
+      Show more info on this dataset <i class="fas fa-external-link-alt"></i>
     </a>
   </div>
-  <!-- <kg-entry-viewer [dataset]="dataset">
-
-  </kg-entry-viewer> -->
-
-  <div *ngIf="false">
 
-    <hr />
-    <h5>
-      Preview Dataset
-    </h5>
-    <hr />
+  <div
+    *ngIf="dataset.preview"
+    (click)="previewDataset($event)"
+    class="ds-container ml-1 p-2 preview-container text-muted d-flex align-items-center"
+    [hoverable]="{translateY:-3}">
+    <i class="fas fa-eye"></i>
   </div>
 </div>
 
diff --git a/src/ui/databrowserModule/util/filterDataEntriesByRegion.pipe.ts b/src/ui/databrowserModule/util/filterDataEntriesByRegion.pipe.ts
index ac73e32cc06694bc8aaa0c5d179b002b6a5630a9..3f45fa9d105f4a34e47dd2d1e1f428670467aa13 100644
--- a/src/ui/databrowserModule/util/filterDataEntriesByRegion.pipe.ts
+++ b/src/ui/databrowserModule/util/filterDataEntriesByRegion.pipe.ts
@@ -1,7 +1,7 @@
 import { Pipe, PipeTransform } from "@angular/core";
 import { DataEntry } from "src/services/stateStore.service";
 
-const isSubRegion = (high, low) => high.name === low.name
+const isSubRegion = (high, low) => (high.id && low.id && high.id === low.id) || high.name === low.name
   ? true
   : high.children && high.children.some
     ? high.children.some(r => isSubRegion(r, low))
diff --git a/src/ui/layerbrowser/layerbrowser.component.ts b/src/ui/layerbrowser/layerbrowser.component.ts
index 8a8cdbd4a952a73e8e05a0b8cba3d2ac08e19cb5..2dd2a8aa0bcca320f72a2eeff7c1ac7b2c3ed72f 100644
--- a/src/ui/layerbrowser/layerbrowser.component.ts
+++ b/src/ui/layerbrowser/layerbrowser.component.ts
@@ -73,6 +73,7 @@ export class LayerBrowser implements OnDestroy{
         select('viewerState'),
         select('templateSelected'),
         distinctUntilChanged((o,n) => o.templateSelected.name === n.templateSelected.name),
+        filter(templateSelected => !!templateSelected),
         map(templateSelected => Object.keys(templateSelected.nehubaConfig.dataset.initialNgState.layers)),
         buffer(this.store.pipe(
           select('ngViewerState'),
diff --git a/src/ui/layerbrowser/layerbrowser.style.css b/src/ui/layerbrowser/layerbrowser.style.css
index dc597ad085a5b4f8f21dc3d786a49086a97a5dc5..83bf14bb66993088b1d86f607e24784f07926bd4 100644
--- a/src/ui/layerbrowser/layerbrowser.style.css
+++ b/src/ui/layerbrowser/layerbrowser.style.css
@@ -16,11 +16,6 @@ div[body]
   background-color:rgba(0, 0, 0, 0.1);
 }
 
-.muted
-{
-  opacity : 0.5;
-}
-
 .muted-text
 {
   text-decoration: line-through;