diff --git a/jupyter-openbis-extension/static/dialog.js b/jupyter-openbis-extension/static/dialog.js
index 79ef32eecc71211ae7d9c2f26c10beed0b75e197..a64f341490772260ca96fd9c9507025176b2afac 100644
--- a/jupyter-openbis-extension/static/dialog.js
+++ b/jupyter-openbis-extension/static/dialog.js
@@ -9,120 +9,159 @@ define([
         var selectedPermId = null
         var currentSampleIdentifier = null
         var currentDownloadPath = null
+        var ds_type = document.createElement("SELECT")
+        ds_type.className = "select-xs"
+        ds_type.id = "dataset_type"
 
         function show_available_connections (data, conn_table) {
             if (!currentDownloadPath) {
                 currentDownloadPath = data.cwd
             }
 
-            var table = $('<table>').addClass('table-bordered table-striped table-condensed')
-            var thead = $('<thead>')
-            var title_row = $('<tr>')
-                 .append($('<th>')
-                     .text('')
-                 )
-                 .append($('<th>')
-                     .text('Name')
-                 )
-                 .append($('<th>')
-                     .text('URL')
-                 )
-                .append($('<th>')
-                    .text('Status')
-                )
-            title_row.appendTo(thead)
-            thead.appendTo(table)
+            var table = document.createElement("TABLE")
+            table.className = 'table-bordered table-striped table-condensed'
+            var thead = table.createTHead()
+            var thead_row = thead.insertRow(0)
+            var titles = ['', 'Name', 'URL', 'Status']
+            titles.forEach( function(item, index) {
+                thead_row.insertCell().textContent = item
+            })
 
+            tbody = table.createTBody()
             data.connections.forEach( function(item, index, arr) {
-                var conn = $('<input type="radio" name="connection_name">')
-                    .attr("value", item.name)
-                    .attr("url", item.url)
-                conn.change( function() {
+                //console.log(item)
+                var conn = document.createElement("INPUT")
+                conn.type = "radio"
+                conn.name = "connection_name"
+                conn.value = item.name
+                conn.setAttribute("url", item.url)
+
+                // Change the list of available dataset types
+                conn.onchange = function() {
                     currentConnection = item.name
-                })
+                    //ds_type.children().remove()
+                    while (ds_type.firstChild) {
+                        ds_type.removeChild(ds_type.firstChild);
+                    }
+                    if (item.ds_types != null) {
+                        for (ds_type in item.ds_types) {
+                            option = document.createElement("OPTION")
+                            option.textContent = ds_type.code
+                        }
+                    }
+                }
 
                 if (item.name === currentConnection) {
-                    conn.prop('checked', true)
+                    conn.checked = true
                 }
                 else {
-                    conn.prop('checked', false)
+                    conn.checked = false
                 }
-                var row = $('<tr>')
-                    .append(
-                        $('<td>').append(conn)
-                    )
-                    .append($('<td>')
-                        .text(item.name)
-                    )
-                    .append($('<td>')
-                        .text(item.url)
-                    )
-                    .append($('<td>')
-                        .text(item.status)
-                    )
-
-                table.append(row)
+
+                var row = tbody.insertRow()
+                row.insertCell().appendChild(conn)
+                row.insertCell().textContent = item.name
+                row.insertCell().textContent = item.url
+                row.insertCell().textContent = item.status
             })
 
-            conn_table.empty().append($('<strong>').text('Please choose a connection')).append(table)
+            conn_table.innerHTML = ""
+            table_title = document.createElement("STRONG")
+            table_title.textContent = "Please choose a connection"
+            conn_table.appendChild(table_title)
+            conn_table.appendChild(table)
         }
 
         function show_datasets_table( data, datasets_table) {
-            var table = $('<table>').addClass('table-bordered table-striped table-condensed text-nowrap')
-            var thead = $('<thead>')
-            var title_row = $('<tr>')
-                .append($('<th>')
-                    .text('permId')
-                )
-                .append($('<th>')
-                    .text('Type')
-                )
-                .append($('<th>')
-                    .text('Experiment')
-                )
-                .append($('<th>')
-                    .text('Registration Date')
-                )
-                .append($('<th>')
-                    .text('Status')
-                )
-                .append($('<th>')
-                    .text('Size')
-                )
-            title_row.appendTo(thead)
-            thead.appendTo(table)
+            var table = document.createElement("TABLE")
+            var thead = table.createTHead()
+            var t_row = thead.insertRow()
+            var titles = ['permId', 'Type', 'Experiment', 'Registration Date', 'Status', 'Size']
+            titles.forEach( function(title) {
+                t_row.insertCell().textContent = title
+            })
+
+            //var table = $('<table>').addClass('table-bordered table-striped table-condensed text-nowrap')
+            //var thead = $('<thead>')
+            //var title_row = $('<tr>')
+            //    .append($('<th>')
+            //        .text('permId')
+            //    )
+            //    .append($('<th>')
+            //        .text('Type')
+            //    )
+            //    .append($('<th>')
+            //        .text('Experiment')
+            //    )
+            //    .append($('<th>')
+            //        .text('Registration Date')
+            //    )
+            //    .append($('<th>')
+            //        .text('Status')
+            //    )
+            //    .append($('<th>')
+            //        .text('Size')
+            //    )
+            //title_row.appendTo(thead)
+            //thead.appendTo(table)
 
             data.dataSets.forEach( function(item, index, arr) {
-                var permId = $('<input type="radio" name="permId">').attr("value", item.permId)
-                permId.change(function() {
-                    if ($(this).is(':checked')) {
+                var permId = document.createElement("INPUT")
+                permId.type = "radio"
+                permId.name = "permId"
+                permId.value = item.permId
+
+                //var permId = $('<input type="radio" name="permId">').attr("value", item.permId)
+                permId.onchange = function() {
+                    if (this.checked) {
                         selectedPermId = this.value
                     }
-                })
-
-                var row = $('<tr>')
-                    .append(
-                        $('<td>').append(permId).append(' ' + item.permId)
-                    )
-                    .append($('<td>')
-                        .text(item.type)
-                    )
-                    .append($('<td>')
-                        .text(item.experiment)
-                    )
-                    .append($('<td>')
-                        .text(item.registrationDate)
-                    )
-                    .append($('<td>')
-                        .text(item.status)
-                    )
-                    .append($('<td>')
-                        .text(item.size)
-                    )
-                table.append(row)
+                }
+                //permId.change(function() {
+                //    if ($(this).is(':checked')) {
+                //        selectedPermId = this.value
+                //    }
+                //})
+
+                var tbody = table.createTBody()
+                var row = tbody.insertRow()
+                row.insertCell().appendChild(permId)
+                row.insertCell().textContent = item.type
+                row.insertCell().textContent = item.experiment
+                row.insertCell().textContent = item.registrationDate
+                row.insertCell().textContent = item.status
+                row.insertCell().textContent = item.size
+
+                //var row = $('<tr>')
+                //    .append(
+                //        $('<td>').append(permId).append(' ' + item.permId)
+                //    )
+                //    .append($('<td>')
+                //        .text(item.type)
+                //    )
+                //    .append($('<td>')
+                //        .text(item.experiment)
+                //    )
+                //    .append($('<td>')
+                //        .text(item.registrationDate)
+                //    )
+                //    .append($('<td>')
+                //        .text(item.status)
+                //    )
+                //    .append($('<td>')
+                //        .text(item.size)
+                //    )
+                //table.append(row)
             })
 
-            datasets_table.empty().append(table)
+            while (datasets_table.firstChild) {
+                datasets_table.removeChild(datasets_table.firstChild);
+            }
+            datasets_table.appendChild(table)
+
+            //datasets_table.innerHTML = ''
+            //datasets_table.innerHTML = table
+            //datasets_table.empty().append(table)
 
         }
 
@@ -143,7 +182,9 @@ define([
             icon: 'fa-download',
             help_index: '',
             handler: function (env) {
-                var conn_table = $('<div id="openbis_connections"/>')
+                //var conn_table = $('<div id="openbis_connections"/>')
+                var conn_table = document.createElement("DIV")
+                conn_table.id = "openbis_connections"
                 getOpenBisConnections(env, conn_table)
                     .done(function (data) {
                         show_available_connections(data, conn_table)
@@ -160,72 +201,120 @@ define([
                     // to make sure we can display the download path provided by the server.
 
                     // show DataSets for Sample identifier/permid
-                    var sample = $("<div>")
-                    sample.append($('<strong>').text('Sample identfier/permId: '))
-                    sample.css('margin-top', '10px')
-                    var sampleIdentifier = $('<input type="text" name="sampleIdentifier" size=40 placeholder="sample identifier">')
-                        .val(currentSampleIdentifier)
-                    var show_datasets_btn = $('<button type="button" class="btn-info btn-xs">show datasets</button>')
-                    var datasets_table = $('<div id="dataset_table">')
-                        .addClass("output output_scroll")
-                        .css('max-height', '10em')
-                    show_datasets_btn.click(function () {
-                        var connection_name = $('input[name="connection_name"]:checked').val()
-                        currentConnection = connection_name
-                        currentSampleIdentifier = sampleIdentifier.val()
-                        if (!connection_name) {
+                    var sample = document.createElement("DIV")
+                    var title = document.createElement("STRONG")
+                    title.textContent = "Sample identfier/permId: "
+                    sample.appendChild(title)
+                    sample.style.marginTop = '10px'
+
+                    var sampleIdentifier = document.createElement("INPUT")
+                    sampleIdentifier.type = "text"
+                    sampleIdentifier.name = "sampleIdentifier"
+                    sampleIdentifier.size = 40
+                    sampleIdentifier.placeholder = "sample identifier or permId"
+                    sampleIdentifier.value = currentSampleIdentifier
+
+                    var datasets_table = document.createElement("DIV")
+                    datasets_table.id = "dataset_table"
+                    datasets_table.className = "output output_scroll"
+                    datasets_table.style.maxHeight = "10em"
+
+                    var show_datasets_btn = document.createElement("BUTTON")
+                    show_datasets_btn.className = "btn-info btn-xs"
+                    show_datasets_btn.textContent = "show datasets"
+
+                    show_datasets_btn.onclick = function() {
+                        var selected_conn = document.querySelector('input[name=connection_name]:checked')
+                        if (!selected_conn) {
                             alert('Please choose a connection')
                             return false
                         }
+                        connection_name = selected_conn.value
+
+                        currentConnection = connection_name
+                        currentSampleIdentifier = sampleIdentifier.value
                         if (!currentSampleIdentifier) {
                             alert('Please specify a sample identifier/permId')
                             return false
                         }
-                        var settings = {
-                            url: env.notebook.base_url + 'openbis/sample/' + connection_name + '/' + encodeURIComponent(currentSampleIdentifier),
-                            processData: false,
-                            type: 'GET',
-                            dataType: 'json',
-                            contentType: 'application/json'
-                        }
-
-                        utils.ajax(settings)
-                            .done(function(data) {
+                        //var settings = {
+                        //    url: env.notebook.base_url + 'openbis/sample/' + connection_name + '/' + encodeURIComponent(currentSampleIdentifier),
+                        //    processData: false,
+                        //    type: 'GET',
+                        //    dataType: 'json',
+                        //    contentType: 'application/json'
+                        //}
+                        var url = env.notebook.base_url + 'openbis/sample/' + connection_name + '/' + encodeURIComponent(currentSampleIdentifier)
+
+                        var xhttp = new XMLHttpRequest()
+                        xhttp.onreadystatechange = function() {
+                            var data = JSON.parse(this.responseText)
+                            //if (this.readyState == 4 && this.status == 200) {
+                            if (this.status == 200) {
                                 show_datasets_table(data, datasets_table)
-                            })
-                            .fail(function(data) {
-                                alert('Error:' + data.statusText)
-                            })
-
-                    })
-                    sample.append(sampleIdentifier).append(show_datasets_btn).append(datasets_table)
+                            }
+                            else {
+                                alert("Error:" + data.statusText)
+                            }
+                        };
+                        xhttp.open("GET", url, true);
+                        xhttp.send();
+
+                        //utils.ajax(settings)
+                        //    .done(function(data) {
+                        //        show_datasets_table(data, datasets_table)
+                        //    })
+                        //    .fail(function(data) {
+                        //        alert('Error:' + data.statusText)
+                        //    })
+                    }
+                    sample.appendChild(sampleIdentifier)
+                    sample.appendChild(show_datasets_btn)
+                    //sample.appendChild(datasets_table)
 
                     // dataSetPermId only
-                    var dataset = $('<p>')
-                        .css('margin-top', '10px')
-                        .append($('<b>').text('... or enter DataSet permId directly: '))
-                    var datasetPermId = $('<input type="text" name="datasetPermId" size=40 placeholder="dataset permId">')
-                    dataset.append(datasetPermId)
-
-                    // download path
-                    var downloadPath =$('<input type="text" name="downloadPath" size=100>')
-                        .val(currentDownloadPath)
-                    var path = $('<div>')
-                        .append($('<strong>').text('download data to path: '))
-                        .append(downloadPath)
-
-                    var download_dialog_box = $('<div/>')
-                    download_dialog_box.append(conn_table).append(sample).append(dataset).append(path)
-
-                    function downloadDataset(permId, path) {
+                    var dataset_direct = document.createElement("P")
+                    dataset_direct.style.marginTop='10px'
+                    dataset_direct.innerHTML = '<strong>enter DataSet permId directly: </strong>'
+
+                    //var dataset = $('<p>')
+                    //    .css('margin-top', '10px')
+                    //    .append($('<b>').text('... or enter DataSet permId directly: '))
+                    var datasetPermId = document.createElement("INPUT")
+                    datasetPermId.type = "text"
+                    datasetPermId.name = "datasetPermId"
+                    datasetPermId.size = "40"
+                    datasetPermId.placeholder = "dataSet permId"
+
+                    dataset_direct.appendChild(datasetPermId)
+
+                    var downloadPath = document.createElement("INPUT")
+                    downloadPath.type = "text"
+                    downloadPath.name = "downloadPath"
+                    downloadPath.size = "90"
+                    downloadPath.value = currentDownloadPath
+
+                    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(conn_table)
+                    download_dialog_box.appendChild(dataset_direct)
+                    download_dialog_box.appendChild(path)
+
+                    function downloadDataset(selected_conn, permId, path) {
                         var notebook = IPython.notebook
-                        var connection_name = $('input[name="connection_name"]:checked').val()
-                        var connection_url = $('input[name="connection_name"]:checked').attr('url')
+                        var connection_name = selected_conn.value()
+                        var connection_url  = selected_conn.getAttribute("url")
+                        //var connection_name = $('input[name="connection_name"]:checked').val()
+                        //var connection_url = $('input[name="connection_name"]:checked').attr('url')
                         var downloadUrl = env.notebook.base_url + 'openbis/dataset/'
                             + connection_name + '/' + permId + '/' + encodeURIComponent(path)
 
                         // get the canvas for user feedback
-                        var container = $('#notebook-container')
+                        //var container = $('#notebook-container')
+                        var container = document.getElementById('notebook-container')
 
                         var settings = {
                             url: downloadUrl,
@@ -235,18 +324,42 @@ define([
                             contentType: 'application/json'
                         }
 
+                        var close = document.createElement("BUTTON")
+                        close.className = "close"
+                        close.setAttribute("data-dismiss", "alert")
+                        close.setAttribute("aria-label", "Close")
+
+                        var x = document.createElement("SPAN")
+                        x.setAttribute("aria-hidden", true)
+                        x.textContent = "&times;"
+
+                        // remove existing feedbacks
+                        for (element in document.getElementsByClassName("openbis-feedback")) {
+                            element.remove()
+                        }
+
                         // download the dataset files
                         utils.ajax(settings)
                             .done(function (data) {
                                 // display feedback to user
-                                var feedback = '<div class="openbis-feedback alert alert-success alert-dismissible" role="alert">' +
-                                    '<button type="button" class="close" data-dismiss="alert" aria-label="Close">' +
-                                    '<span aria-hidden="true">&times;</span></button>' +
-                                    data.statusText +
-                                    '</div>'
+                                var feedback = document.createElement( "DIV" )
+                                feedback.className = "openbis-feedback alert alert-success alert-dismissible"
+                                feedback.setAttribute("role","alert")
+                                feedback.append(data.statusText)
+
+                                close.appendChild(x)
+                                feedback.appendChild(close)
+
+
+                                //var feedback = '<div class="openbis-feedback alert alert-success alert-dismissible" role="alert">' +
+                                //    '<button type="button" class="close" data-dismiss="alert" aria-label="Close">' +
+                                //    '<span aria-hidden="true">&times;</span></button>' +
+                                //    data.statusText +
+                                //    '</div>'
 
                                 // display feedback
-                                $('.openbis-feedback').remove()
+                                //$('.openbis-feedback').remove()
+
                                 container.prepend(feedback)
 
                                 // write statusText from returned data to notebooks metadata
@@ -271,21 +384,29 @@ define([
                             })
                             .fail(function (data) {
                                 // display feedback to user
-                                var feedback =
-                                    '<div class="openbis-feedback alert alert-danger alert-dismissible" role="alert">' +
-                                    '<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>' +
-                                    '<strong>Error: </strong>Dataset was not downloaded.<div>' + data.statusText + '</div></div>'
-
-                                // display feedback
-                                $('.openbis-feedback').remove()
+                                var feedback = document.createElement( "DIV" )
+                                feedback.className = "openbis-feedback alert alert-danger alert-dismissible"
+                                feedback.setAttribute("role","alert")
+                                feedback.innerHTML = "<strong>Error: </strong>Dataset was not downloaded.<div>"
+                                                   + data.statusText
+                                                   + "</div>"
+
+                                //var feedback =
+                                //    '<div class="openbis-feedback alert alert-danger alert-dismissible" role="alert">' +
+                                //    '<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>' +
+                                //    '<strong>Error: </strong>Dataset was not downloaded.<div>' + data.statusText + '</div></div>'
+
+                                close.appendChild(x)
+                                feedback.appendChild(close)
                                 container.prepend(feedback)
                             })
                     }
 
                     function onDownloadClick() {
-                        connection_name = $('input[name="connection_name"]:checked').val()
-                        if (typeof connection_name === "undefined") {
-                            alert('please choose a connection')
+                        var selected_conn = document.querySelector('input[name=connection_name]:checked')
+                        //connection_name = $('input[name="connection_name"]:checked').val()
+                        if (! selected_conn) {
+                            alert('Please choose a connection')
                             return false
                         }
 
@@ -297,7 +418,9 @@ define([
                             alert('please select a dataset or provide a permId')
                             return false
                         }
-                        downloadDataset(selectedPermId, downloadPath.val())
+
+                        if (!downloadPath.value)
+                        downloadDataset(selected_conn, selectedPermId, downloadPath.val())
                     }
 
                     dialog.modal({
@@ -322,7 +445,8 @@ define([
             icon: 'fa-cloud-upload',
             help_index: '',
             handler: function (env) {
-                var conn_table = $('<div id="openbis_connections"/>')
+                var conn_table = document.createElement("DIV")
+                conn_table.id = "openbis_connections"
                 getOpenBisConnections(env, conn_table)
                     .done(function (data) {
                         show_available_connections(data, conn_table)
@@ -332,17 +456,17 @@ define([
                     })
                 var ds_name = $('<input type="text" name="ds_name" size=40 placeholder="name">')
                 var ds_description = $('<input type="text" name="ds_description" size=40 placeholder="description">')
-                var ds_type = $('<input type="text" name="ds_type" size=40 placeholder="type">')
+                //var ds_type = $('<input type="text" name="ds_type" size=40 placeholder="type">')
+                //var ds_type = $('<select class="form-control select-xs" id="dataset_type">')
                 var sampleIdentifier = $('<input type="text" name="sampleIdentifier" size=40 placeholder="sample identifier">')
                     .val(currentSampleIdentifier)
                 var ds_files = $('<input type="text" name="files" size=40 placeholder="filenames">')
 
-
                 var inputs = $('<div>')
                     .css('margin-top', '10px')
                     .append($('<p>').text('Name: ').append(ds_name))
                     .append($('<p>').text('Description: ').append(ds_description))
-                    .append($('<p>').text('Type: ').append(ds_type))
+                    .append($('<p>').text('DatasetType: ').append(ds_type))
                     .append($('<p>').text('Sample: ').append(sampleIdentifier))
                     .append($('<p>').text('Files: ').append(ds_files))
 
@@ -371,7 +495,7 @@ define([
                         "files"           : files,
                         "sampleIdentifier": sampleIdentifier.val()
                     }
-                    console.log(dataSetInfo);
+                    //console.log(dataSetInfo);
 
                     var settings = {
                         url: uploadUrl,