diff --git a/src/components/flatTree/flatTree.component.ts b/src/components/flatTree/flatTree.component.ts
index 25da07a20e49899d8cce9f75e013f4fb5fe68d8a..e3c19238b5b67a39bc91ba5e91277337d4fd5964 100644
--- a/src/components/flatTree/flatTree.component.ts
+++ b/src/components/flatTree/flatTree.component.ts
@@ -87,16 +87,24 @@ export class FlatTreeComponent implements AfterViewChecked, AfterViewInit, OnIni
   }
 
   collapsedLevels: Set<string> = new Set()
-  searchedVisibleSet: Set<string> = new Set()
+  uncollapsedLevels : Set<string> = new Set()
 
   toggleCollapse(flattenedItem:FlattenedTreeInterface){
-    this.collapsedLevels.has(flattenedItem.lvlId)
-      ? this.collapsedLevels.delete(flattenedItem.lvlId)
-      : this.collapsedLevels.add(flattenedItem.lvlId)
+    this.isCollapsed(flattenedItem)
+      ? (this.collapsedLevels.delete(flattenedItem.lvlId), this.uncollapsedLevels.add(flattenedItem.lvlId))
+      : (this.collapsedLevels.add(flattenedItem.lvlId), this.uncollapsedLevels.delete(flattenedItem.lvlId))
   }
 
   isCollapsed(flattenedItem:FlattenedTreeInterface):boolean{
-    return this.collapsedLevels.has(flattenedItem.lvlId)
+    return this.isCollapsedById(flattenedItem.lvlId)
+  }
+
+  isCollapsedById(id:string):boolean{
+    return this.collapsedLevels.has(id) 
+      ? true
+      : this.uncollapsedLevels.has(id)
+        ? false
+        : !this.childrenExpanded
   }
 
   collapseRow(flattenedItem:FlattenedTreeInterface):boolean{
@@ -106,9 +114,7 @@ export class FlatTreeComponent implements AfterViewChecked, AfterViewInit, OnIni
         .concat(acc.length === 0 
           ? curr 
           : acc[acc.length -1].concat(`_${curr}`)), [])
-      .find(id => this.collapsedLevels.has(id))
-        ? true
-        : false
+      .some(id => this.isCollapsedById(id))
   }
 
   private _currentPos : number = 0
diff --git a/src/components/tree/treeBase.directive.ts b/src/components/tree/treeBase.directive.ts
index 20869d5df68affcfa2336814ff92442773d75f24..01f3354064b51d36470c3dc8cf4e6d763051bc52 100644
--- a/src/components/tree/treeBase.directive.ts
+++ b/src/components/tree/treeBase.directive.ts
@@ -6,7 +6,7 @@ import { Subscription } from "rxjs";
   selector : '[treebase]',
   host :{
     'style' : `
-      background-color:red
+
     `
   },
   providers : [
diff --git a/src/services/stateStore.service.ts b/src/services/stateStore.service.ts
index 7d49498576165b98c3e70426ccfd0a67519c1f41..4bc28d1decaac6670d8299ebf1c156fa9e4e85aa 100644
--- a/src/services/stateStore.service.ts
+++ b/src/services/stateStore.service.ts
@@ -402,6 +402,7 @@ export interface DedicatedViewAction extends Action{
 export interface DataEntry{
   type : string
   name : string
+  kgID? : string
   regionName : {
     regionName : string,
     relationship : string
diff --git a/src/ui/databrowser/databrowser.component.ts b/src/ui/databrowser/databrowser.component.ts
index 8713fd29506dd28aef9da430ca1ee1b312c6a5c8..003a019511c6addb57fb61d34bca3adcfe891ab8 100644
--- a/src/ui/databrowser/databrowser.component.ts
+++ b/src/ui/databrowser/databrowser.component.ts
@@ -224,28 +224,27 @@ export class DataBrowserUI implements OnDestroy,OnInit{
 
   dataWindowRegistry: Set<string> = new Set()
 
-  handleTreeNodeClick(obj:{inputItem:any,node:TreeComponent},searchResult:any){
-    
-    const { properties, kgID } = searchResult
-    
-    obj.node.childrenExpanded = !obj.node.childrenExpanded
+  handleFlatTreeNodeClick(payload:{dataset:DataEntry, file:File}){
+    const { dataset, file } = payload
+    const { properties, kgID } = dataset
+    if(file.mimetype){
 
-    if(obj.inputItem.mimetype){
-      if(this.dataWindowRegistry.has(obj.inputItem.name)){
+      // TODO use KG id in future
+      if(this.dataWindowRegistry.has(file.name)){
         /* already open, will not open again */
-        return 
+        return
       }
       /* not yet open, add the name to registry */
-      this.dataWindowRegistry.add(obj.inputItem.name)
+      this.dataWindowRegistry.add(file.name)
 
       const component = this.fileViewerComponentFactory.create(this.injector)
-      component.instance.searchResultFile = Object.assign({}, obj.inputItem, { datasetProperties : properties }, kgID ? { kgID } : {})
-      const compref = this.widgetServices.addNewWidget(component,{title:obj.inputItem.name,exitable:true,state:'floating'})
+      component.instance.searchResultFile = Object.assign({}, file, { datasetProperties : properties }, kgID ? { kgID } : {})
+      const compref = this.widgetServices.addNewWidget(component,{title:file.name,exitable:true,state:'floating'})
 
       /* on destroy, removes name from registry */
-      compref.onDestroy(() => this.dataWindowRegistry.delete(obj.inputItem.name))
+      compref.onDestroy(() => this.dataWindowRegistry.delete(file.name))
     }else{
-      console.warn('the selected file has no mimetype defined')
+      /** no mime type  */
     }
   }
 
diff --git a/src/ui/databrowser/databrowser.style.css b/src/ui/databrowser/databrowser.style.css
index 15640d08dd89bcf8a6f128699eaee4f11e156720..88352b854fa20469bd1370c7c55d25f95666c954 100644
--- a/src/ui/databrowser/databrowser.style.css
+++ b/src/ui/databrowser/databrowser.style.css
@@ -114,4 +114,12 @@ div[noSelectedRegion]
 :host-context([darktheme="true"]) div[noSelectedRegion]
 {
   background-color: rgba(0,0,0,0.2);
+}
+
+dataset-viewer
+{
+  display: block;
+  margin: 1em;
+  padding: 1em;
+  background-color: rgba(128, 128, 128, 0.2);
 }
\ No newline at end of file
diff --git a/src/ui/databrowser/databrowser.template.html b/src/ui/databrowser/databrowser.template.html
index a6a46842be46513a51d282301dde48382f1bda3e..8daf3f2489500241f8c6a2b65360f9c33cb38ba6 100644
--- a/src/ui/databrowser/databrowser.template.html
+++ b/src/ui/databrowser/databrowser.template.html
@@ -112,28 +112,13 @@
         </div>
       </div>
       <div body>
-        <panel-component
-          *ngFor = "let searchResult of data.searchResults | filterDataEntriesByType : hideDataTypes"
-          [collapseBody] = "true"
-          [bodyCollapsable] = "true"
-          dataentry>
-  
-          <div heading>
-            {{ searchResult.type }}
-          </div>
-  
-          <div body>
-            <tree-component
-              *ngFor = "let item of searchResult.files | copyProperty : 'filename' : 'path' | pathToNestedChildren"
-              [childrenExpanded] = "false"
-              [renderNode] = "renderNode" 
-              (treeNodeClick) = "handleTreeNodeClick($event,searchResult)"
-              [inputItem] = " item "
-              treebase>
-  
-            </tree-component>
-          </div>
-        </panel-component>
+
+        <dataset-viewer
+          (launchFileViewer) = "handleFlatTreeNodeClick($event)"
+          [dataset] = "searchResult"
+          *ngFor = "let searchResult of data.searchResults">
+
+        </dataset-viewer>
       </div>
     </panel-component>
   </div>
diff --git a/src/ui/datasetViewer/datasetViewer.component.ts b/src/ui/datasetViewer/datasetViewer.component.ts
index 2d0ee15a05e387b76b29dc1d7881288d782c680d..cbd5b087aa54d053da76d65fe553a711d92f80d5 100644
--- a/src/ui/datasetViewer/datasetViewer.component.ts
+++ b/src/ui/datasetViewer/datasetViewer.component.ts
@@ -1,4 +1,4 @@
-import { Component, Input } from "@angular/core";
+import { Component, Input, Output, EventEmitter } from "@angular/core";
 import { DataEntry } from "../../services/stateStore.service";
 
 @Component({
@@ -9,4 +9,26 @@ import { DataEntry } from "../../services/stateStore.service";
 
 export class DatasetViewerComponent{
   @Input() dataset : DataEntry
+  @Output() launchFileViewer : EventEmitter<{dataset:DataEntry, file:any}> = new EventEmitter()
+
+  previewFileClick(ev, el){
+    
+    ev.event.preventDefault()
+    ev.event.stopPropagation()
+
+    if(ev.inputItem.children.length > 0){
+      el.toggleCollapse(ev.inputItem)
+    }else{
+      this.launchFileViewer.emit({
+        dataset : this.dataset,
+        file : ev.inputItem
+      })
+    }
+  }
+
+  renderNode(obj){
+    return obj.name
+      ? obj.name
+      : obj.path
+  }
 }
\ No newline at end of file
diff --git a/src/ui/datasetViewer/datasetViewer.style.css b/src/ui/datasetViewer/datasetViewer.style.css
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..59294f4b3947a97d6df29535ec13fd50c81c915d 100644
--- a/src/ui/datasetViewer/datasetViewer.style.css
+++ b/src/ui/datasetViewer/datasetViewer.style.css
@@ -0,0 +1,14 @@
+div[title]
+{
+  margin: 0.5rem;
+}
+
+flat-tree-component
+{
+  overflow: hidden;
+}
+
+:host-context([darktheme="true"]) hr
+{
+  border-color: rgba(0, 0, 0, 0.5);
+}
\ No newline at end of file
diff --git a/src/ui/datasetViewer/datasetViewer.template.html b/src/ui/datasetViewer/datasetViewer.template.html
index 357acc26b0c1a785537940f17c937c1e68aef0c6..eb385d627ca09acee655332d183ad792cd5b7bec 100644
--- a/src/ui/datasetViewer/datasetViewer.template.html
+++ b/src/ui/datasetViewer/datasetViewer.template.html
@@ -1,6 +1,29 @@
 <div *ngIf = "dataset; else defaultDisplay">
-  {{ dataset.name }}
+  <h4 title>
+    {{ dataset.name }}
+  </h4>
+  <kg-entry-viewer *ngIf = "dataset.kgID; else noKgID" [kgQueryString] = "dataset.kgID">
+
+  </kg-entry-viewer>
+
+  <hr />
+  <h5>
+    Preview Dataset
+  </h5>
+  <flat-tree-component
+    #flatTreeNode
+    *ngFor = "let item of dataset.files | copyProperty : 'filename' : 'path' | pathToNestedChildren"
+    [childrenExpanded] = "false"
+    [renderNode] = "renderNode"
+    [inputItem] = " item "
+    (treeNodeClick)= "previewFileClick($event, flatTreeNode)">
+
+  </flat-tree-component>
+  <hr />
 </div>
 <ng-template #defaultDisplay>
   Nothing to display ...
-</ng-template>
\ No newline at end of file
+</ng-template>
+<ng-template #noKgID>
+  kgID not specified.
+</ng-template>
diff --git a/src/ui/fileviewer/fileviewer.template.html b/src/ui/fileviewer/fileviewer.template.html
index b34b7668b20ebaea7d44d1b5d5c97d6eed10f508..1f2b7aa4c8096c370b59b20c9b2bebc1bb24d69e 100644
--- a/src/ui/fileviewer/fileviewer.template.html
+++ b/src/ui/fileviewer/fileviewer.template.html
@@ -3,7 +3,7 @@
 </div>
 
 <!-- KG Entry Viewer -->
-<kg-entry-viewer *ngIf = "searchResultFile.kgID" [kgQueryString] = "searchResultFile.kgID">
+<kg-entry-viewer *ngIf = "searchResultFile.kgID && false" [kgQueryString] = "searchResultFile.kgID">
 
 </kg-entry-viewer>
 
diff --git a/src/ui/kgEntryViewer/kgentry.style.css b/src/ui/kgEntryViewer/kgentry.style.css
index a1ee25a5d6620dc942c744265bdacfe7ba1d13d8..08aa2ff604ef4cb81be1dbfaf936c5df17aff5c5 100644
--- a/src/ui/kgEntryViewer/kgentry.style.css
+++ b/src/ui/kgEntryViewer/kgentry.style.css
@@ -16,3 +16,15 @@ div[body]
   overflow-y:auto;
   overflow-x:hidden;
 }
+
+div[container]
+{
+  overflow:hidden;
+}
+
+a[linkToKG]
+{
+  display: inline-block;
+  margin-top: 1rem;
+  white-space: nowrap;
+}
\ No newline at end of file
diff --git a/src/ui/kgEntryViewer/kgentry.template.html b/src/ui/kgEntryViewer/kgentry.template.html
index 8b6d77d208dfb4d81ab3cdbe340f22456bd30f8c..8f7e85d366d02bd8addaa6f050a281a9b599b9bd 100644
--- a/src/ui/kgEntryViewer/kgentry.template.html
+++ b/src/ui/kgEntryViewer/kgentry.template.html
@@ -1,4 +1,4 @@
-<div *ngIf = "kgData; else showDefault">
+<div *ngIf = "kgData; else showDefault" container>
 
   <readmore-component>
 
@@ -132,8 +132,8 @@
     </panel-component>
 
   </readmore-component>
-  <a target = "_blank" [href] = "kgHref">
-    See this dataset in the Knowledge Graph <i class = "glyphicon glyphicon-new-window"></i>
+  <a target = "_blank" [href] = "kgHref" linkToKG>
+    Open in Knowledge Graph <i class = "glyphicon glyphicon-new-window"></i>
   </a>
 
 </div>