diff --git a/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataSetForm/widgets/DatasetViewerView.js b/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataSetForm/widgets/DatasetViewerView.js
index fbdcef9f46f9ab9a064fdd817367b139d073afb5..2c6208ab0c8c9b2c4feecff038280a1f15dc9f6c 100644
--- a/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataSetForm/widgets/DatasetViewerView.js
+++ b/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataSetForm/widgets/DatasetViewerView.js
@@ -20,16 +20,6 @@ function DataSetViewerView(dataSetViewerController, dataSetViewerModel) {
 	this.$listIcon = null;
 	this.$treeIcon = null;
 	
-	this.updateDirectoryView = function(code, path, isBack) {
-		var _this = this;
-		mainController.serverFacade.listFilesForDataSet(code, path, false, function(files) {
-			if(!isBack) {
-				_this._dataSetViewerModel.lastUsedPath.push(path);
-			}
-			_this.repaintFiles(code, files.result);
-		});
-	}
-	
 	this.repaintDatasets = function() {
 		var _this = this;
 		
@@ -75,7 +65,11 @@ function DataSetViewerView(dataSetViewerController, dataSetViewerModel) {
 			
 			var getDatasetLinkEvent = function(code) {
 				return function(event) {
-					_this.updateDirectoryView(code, "/");
+					var repaintEvent = function(code, files) {
+						_this.repaintFiles(code, files.result);
+					}
+					
+					_this.updateDirectoryView(code, "/", repaintEvent);
 				};
 			}
 			
@@ -169,9 +163,9 @@ function DataSetViewerView(dataSetViewerController, dataSetViewerModel) {
 		var $tree = $("<div>", { "id" : "tree" });
 		$container.append($tree);
 		
-		var treeModel = [{ title : datasetCode, key : datasetCode, menuData : datasetFiles, folder : true, children : [] }];
+		var treeModel = [{ title : datasetCode, key : "/", menuData : datasetFiles, folder : true, lazy : true }];
 		
-		glyph_opts = {
+		var glyph_opts = {
         	    map: {
         	      doc: "glyphicon glyphicon-file",
         	      docOpen: "glyphicon glyphicon-file",
@@ -191,23 +185,52 @@ function DataSetViewerView(dataSetViewerController, dataSetViewerModel) {
         };
 		
         var onActivate = function(event, data) {
-    		data.node.setExpanded(true);
+    		
     	};
     	
     	var onClick = function(event, data){
     		
     	};
     	
+    	var onLazyLoad = function(event, data){
+    		var pathToLoad = data.node.key;
+    		
+    	};
+    	
     	$tree.fancytree({
         	extensions: ["dnd", "edit", "glyph"], //, "wide"
         	glyph: glyph_opts,
         	source: treeModel,
         	activate: onActivate,
-        	click: onClick
+        	click: onClick,
+        	lazyLoad : onLazyLoad
         });
         
 	}
 	
+	this.updateDirectoryView = function(code, path, isBack, repaintEvent) {
+		var _this = this;
+		mainController.serverFacade.listFilesForDataSet(code, path, false, function(files) {
+			if(!isBack) {
+				_this._dataSetViewerModel.lastUsedPath.push(path);
+			}
+			
+			if(!repaintEvent) {
+				switch(_this._dataSetViewerModel.dataSetViewerMode) {
+					case DataSetViewerMode.LIST:
+						_this.repaintFiles(code, files.result);
+						break;
+					case DataSetViewerMode.TREE:
+						//
+						break;
+				}
+			} else {
+				repaintEvent(code, files);
+			}
+			
+		});
+	}
+	
 	this.repaintFilesAsList = function(datasetCode, datasetFiles, $container) {
 		$container.empty();
 		var _this = this;
@@ -230,7 +253,11 @@ function DataSetViewerView(dataSetViewerController, dataSetViewerModel) {
 		// Back
 		//
 		var $directoryLink = $("<a>").text("..").click(function(event) {
-			_this.updateDirectoryView(datasetCode, parent);
+			var repaintEvent = function(code, files) {
+				_this.repaintFiles(code, files.result);
+			};
+			
+			_this.updateDirectoryView(datasetCode, parent, repaintEvent);
 			event.stopPropagation();
 		});
 		
@@ -238,7 +265,11 @@ function DataSetViewerView(dataSetViewerController, dataSetViewerModel) {
 			if(_this._dataSetViewerModel.lastUsedPath.length === 1) {
 				_this.repaintDatasets();
 			} else {
-				_this.updateDirectoryView(datasetCode, _this._dataSetViewerModel.lastUsedPath[_this._dataSetViewerModel.lastUsedPath.length - 2], true);
+				var repaintEvent = function(code, files) {
+					_this.repaintFiles(code, files.result);
+				};
+				
+				_this.updateDirectoryView(datasetCode, _this._dataSetViewerModel.lastUsedPath[_this._dataSetViewerModel.lastUsedPath.length - 2], true, repaintEvent);
 			}
 			_this._dataSetViewerModel.lastUsedPath.pop();
 			event.stopPropagation();
@@ -269,7 +300,11 @@ function DataSetViewerView(dataSetViewerController, dataSetViewerModel) {
 			if(datasetFiles[i].isDirectory) {
 				var getDirectoyClickFuncion = function(datasetCode, pathInDataSet) {
 					return function() {
-						_this.updateDirectoryView(datasetCode, pathInDataSet);
+						var repaintEvent = function(code, files) {
+							_this.repaintFiles(code, files.result);
+						};
+						
+						_this.updateDirectoryView(datasetCode, pathInDataSet, repaintEvent);
 					};
 				};