diff --git a/jupyter-openbis-extension/static/downloadDialog.js b/jupyter-openbis-extension/static/downloadDialog.js
index 08f0f92bc1ceef0a65347f64fe032689fe8bd4b3..4525d737edeaa38fc39a717fa2d51b7c7ab4471d 100644
--- a/jupyter-openbis-extension/static/downloadDialog.js
+++ b/jupyter-openbis-extension/static/downloadDialog.js
@@ -5,6 +5,16 @@ define([
     ],
     function (dialog, common, state) {
 
+        var spinner = document.createElement("IMG")
+        spinner.className="openbis-feedback"
+        spinner.src=""
+        function showSpinner() {
+            spinner.src="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.5.8/ajax-loader.gif"
+        }
+        function hideSpinner() {
+            spinner.src=""
+        }
+
         function writeMetaData(data) {
             var notebook = IPython.notebook
             if (typeof notebook.metadata.datasets === 'undefined') {
@@ -23,7 +33,7 @@ define([
             }
         }
 
-        function show_datasets_table(env, data, datasets_table, downloadPath, entityIdentifier) {
+        function show_datasets_table(env, data, datasets_table, pagingContainer, downloadPath, entityIdentifier) {
             if (downloadPath.value === '') {
                 downloadPath.value = data.cwd
             }
@@ -34,7 +44,7 @@ define([
 
             var thead = table.createTHead()
             var t_row = thead.insertRow()
-            var titles = ['', 'permId', 'Type', 'Experiment', 'Registration Date', 'Status', 'Size']
+            var titles = ['', 'permId', 'Name', 'Type', 'Registration Date', 'Status', 'Size']
             titles.forEach(function (title) {
                 t_row.insertCell().textContent = title
             })
@@ -52,8 +62,8 @@ define([
                 var row = tbody.insertRow()
                 row.insertCell().appendChild(permId)
                 row.insertCell().textContent = dataSet.permId
+                row.insertCell().textContent = dataSet.properties['$NAME']
                 row.insertCell().textContent = dataSet.type
-                row.insertCell().textContent = dataSet.experiment
                 row.insertCell().textContent = dataSet.registrationDate
                 row.insertCell().textContent = dataSet.status
                 row.insertCell().textContent = dataSet.size
@@ -63,14 +73,16 @@ define([
                 datasets_table.removeChild(datasets_table.firstChild);
             }
             datasets_table.appendChild(table)
+            datasets_table.style.overflow="auto"
+
 
             const totalCount = parseInt(data.totalCount)
             const count = parseInt(data.count)
             const startWith = parseInt(data.start_with)
             const hasNext = startWith + count < totalCount
             const hasPrevious = startWith > 0
-            const nextCmd = () => getDatasets(env, startWith+5, 5, entityIdentifier, datasets_table, downloadPath)
-            const previousCmd = () => getDatasets(env, startWith-5, 5, entityIdentifier, datasets_table, downloadPath)
+            const nextCmd = () => getDatasets(env, startWith+5, 5, entityIdentifier, datasets_table, pagingContainer, downloadPath)
+            const previousCmd = () => getDatasets(env, startWith-5, 5, entityIdentifier, datasets_table, pagingContainer, downloadPath)
 
             var previous = document.createElement("A")
             var linkText = document.createTextNode("<<< Previous")
@@ -94,10 +106,13 @@ define([
                 paging.appendChild(next)
             }
 
-            datasets_table.appendChild(paging)
+            while (pagingContainer.firstChild) {
+                pagingContainer.removeChild(pagingContainer.firstChild);
+            }
+            pagingContainer.appendChild(paging)
         }
 
-        function getDatasets(env, startWith, count, entityIdentifier, datasets_table, downloadPath) {
+        function getDatasets(env, startWith, count, entityIdentifier, datasets_table, pagingContainer, downloadPath) {
             var connection_name = state.connection.name
             if (!connection_name) {
                 alert('Please choose a connection')
@@ -124,7 +139,7 @@ define([
                     if (response.ok) {
                         response.json()
                             .then(function (data) {
-                                show_datasets_table(env, data, datasets_table, downloadPath, entityIdentifier)
+                                show_datasets_table(env, data, datasets_table, pagingContainer, downloadPath, entityIdentifier)
                             })
                     } else {
                         response.json()
@@ -161,9 +176,10 @@ define([
                 entityIdentifier.name = "entityIdentifier"
                 entityIdentifier.size = 40
                 entityIdentifier.placeholder = "Sample or Experiment identifier/permId"
-                entityIdentifier.value = ''
+                entityIdentifier.value = state.entityIdentifier
 
                 var datasets_table = document.createElement("DIV")
+                var pagingContainer = document.createElement("DIV")
 
                 var show_datasets_btn = document.createElement("BUTTON")
                 show_datasets_btn.className = "btn-info btn-xs"
@@ -173,6 +189,7 @@ define([
                 showDataSets.appendChild(entityIdentifier)
                 showDataSets.appendChild(show_datasets_btn)
                 showDataSets.appendChild(datasets_table)
+                showDataSets.appendChild(pagingContainer)
 
                 var dataset_direct = document.createElement("P")
                 dataset_direct.style.marginTop = '10px'
@@ -190,29 +207,43 @@ define([
                 downloadPath.type = "text"
                 downloadPath.name = "downloadPath"
                 downloadPath.size = "90"
-                downloadPath.value = ''
+                downloadPath.value = state.workingDirectory
 
                 show_datasets_btn.onclick = 
-                    () => getDatasets(env, 0, 5, entityIdentifier, datasets_table, downloadPath)
+                    () => getDatasets(env, 0, 5, entityIdentifier, datasets_table, pagingContainer, downloadPath)
                 
                 var path = document.createElement("DIV")
                 path.innerHTML = "<strong>download data to path: </strong>"
                 path.appendChild(downloadPath)
 
                 var download_dialog_box = document.createElement("DIV")
+                download_dialog_box.appendChild(spinner)
                 download_dialog_box.appendChild(conn_table)
                 download_dialog_box.appendChild(showDataSets)
                 download_dialog_box.appendChild(dataset_direct)
                 download_dialog_box.appendChild(path)
 
+                function saveState() {
+                    state.entityIdentifier = entityIdentifier.value
+                    state.directPermId = datasetPermId.value
+                    state.workingDirectory = downloadPath.value
+                }
+
                 function downloadDataset(connection_name, selectedPermIds, downloadPath) {
 
+                    var spinnerCounter = selectedPermIds.length
                     for (permId of selectedPermIds) {
                         var downloadUrl = env.notebook.base_url + 'openbis/dataset/' +
                             connection_name + '/' + permId + '/' + encodeURIComponent(downloadPath)
 
                         fetch(downloadUrl)
                             .then(function (response) {
+                                spinnerCounter = spinnerCounter - 1
+                                if (spinnerCounter === 0) {
+                                    hideSpinner()
+                                    $('div.modal').remove()
+                                    $('div.modal-backdrop').remove()
+                                }
                                 if (response.ok) {
                                     response.json()
                                         .then(function (data) {
@@ -264,13 +295,18 @@ define([
                     }
 
                     downloadDataset(selected_conn, selectedPermIds, downloadPath.value)
+                    showSpinner()
+                    saveState()
+                    return false
                 }
 
                 dialog.modal({
                     body: download_dialog_box,
                     title: 'Download openBIS DataSets',
                     buttons: {
-                        'Cancel': {},
+                        'Cancel': {
+                            click: () => saveState()
+                        },
                         'Download': {
                             class: 'btn-primary btn-large',
                             click: onDownloadClick,
diff --git a/jupyter-openbis-extension/static/state.js b/jupyter-openbis-extension/static/state.js
index 6f05b5ebad6619aec67d781bb7f43fe00a17e155..70671d691bb7413b22f2248d438ded2da7c94235 100644
--- a/jupyter-openbis-extension/static/state.js
+++ b/jupyter-openbis-extension/static/state.js
@@ -17,7 +17,9 @@ define([],
             unselectedDatasets: [],
 
             // download dialog
-            selectedDatasets: new Set([])
+            selectedDatasets: new Set([]),
+            entityIdentifier: '',
+            workingDirectory: ''
         }
     }
 )
\ No newline at end of file
diff --git a/vagrant/files/console.properties b/vagrant/files/console.properties
index faa327b56b38bcb8352771ef160acba48fddf193..c728029e3a41ae83aa54cced2d053fd36f283cc0 100644
--- a/vagrant/files/console.properties
+++ b/vagrant/files/console.properties
@@ -36,27 +36,27 @@ KEY_STORE_PASSWORD = changeit
 KEY_PASSWORD = changeit
 
 # Standard technology PROTEOMICS is disabled by default
-#PROTEOMICS = true
+PROTEOMICS = true
 
 # Standard technology SCREENING is disabled by default
-#SCREENING = true
+SCREENING = true
 
 # Standard technology ILLUMINA-NGS (ETH BSSE Setup) is disabled by default
-#ILLUMINA-NGS = true
+ILLUMINA-NGS = true
 
 # Standard technology ELN-LIMS is disabled by default
-#ELN-LIMS = true
+ELN-LIMS = true
 
 # Standard technology MICROSCOPY is disabled by default
-#MICROSCOPY = true
+MICROSCOPY = true
 
 # Standard technology FLOW CYTOMETRY is disabled by default
-#FLOW = true
+FLOW = true
 
 # Full ELN/LIMS master data is enabled by default. This setting is meaningful only if ELN-LIMS is enabled
-ELN-LIMS-MASTER-DATA = false
+#ELN-LIMS-MASTER-DATA = false
 
 #
 # Comma-separated list of databases to backup. If the list is empty or undefined all databases
 # will be backauped.
-#DATABASES_TO_BACKUP =
\ No newline at end of file
+#DATABASES_TO_BACKUP =