diff --git a/src/core/js/edit_mode.js b/src/core/js/edit_mode.js
index d1acf85f5f1a0241b8be0eb0b0941139d668b5a7..1e2557782274e888323384785144dbd7f1475f8f 100644
--- a/src/core/js/edit_mode.js
+++ b/src/core/js/edit_mode.js
@@ -585,6 +585,7 @@ var edit_mode = new function() {
 
         $(datatype).find("select").change(function () {
             const new_type = $(this).val();
+            logger.debug(`datatype changed to ${new_type}.`);
             edit_mode.on_datatype_change(form, new_type);
         });
 
@@ -593,24 +594,19 @@ var edit_mode = new function() {
     }
 
     this.on_datatype_change = function (form, new_type) {
-        console.log(`datatype changed to ${new_type}.`);
+        logger.trace('enter on_datatype_change', form, new_type);
 
         if (new_type === "REFERENCE") {
-            console.log("datatype is REFERENCE");
             form_elements.enable_name(form, "reference_target");
         } else {
-            console.log("datatype is not REFERENCE");
             form_elements.disable_name(form, "reference_target");
         }
 
         if (new_type === "DOUBLE" || new_type === "INTEGER") {
-            console.log("show unit");
             form_elements.enable_name(form, "unit");
         } else {
-            console.log("hide unit");
             form_elements.disable_name(form, "unit");
         }
-
     }
 
 
@@ -638,27 +634,31 @@ var edit_mode = new function() {
             "REFERENCE":false,
         };
 
-
+    /**
+     * @param {string} [datatype] - defaults to TEXT if undefined.
+     * @param {string} [unit] optional.
+     */
     this.make_datatype_input = function(datatype, unit) {
-        const is_list = edit_mode.isListDatatype(datatype);
+        var _datatype = datatype || "TEXT";
+        const is_list = edit_mode.isListDatatype(_datatype);
         if (is_list) {
-            datatype = edit_mode.unListDatatype(datatype);
+            _datatype = edit_mode.unListDatatype(_datatype);
         }
 
-        const datatypes = edit_mode._known_atomic_datatypes;
+        const known_atomic_datatypes = edit_mode._known_atomic_datatypes;
 
         // is reference?
         var reference = undefined;
-        if (typeof datatype !== undefined &&
-                typeof datatypes[datatype] === undefined) {
-            reference = datatype;
-            datatype = "REFERENCE";
+        if (typeof known_atomic_datatypes[_datatype] === "undefined") {
+            reference = _datatype;
+            _datatype = "REFERENCE";
         }
 
         var select = $('<select name="atomic_datatype" class="form-control"></select>');
-        for (const dt of Object.keys(datatypes)) {
-            select.append('<option data-has-refid="' + (dt == "REFERENCE") + '" data-has-unit="' + datatypes[dt] + '"  value="' + dt + '" ' + (dt == datatype ? 'selected="true"' : '') + '>' + dt + '</option>');
+        for (const dt of Object.keys(known_atomic_datatypes)) {
+            select.append(`<option value="${dt}">${dt}</option>`);
         }
+        select.val(_datatype)
 
         const datatype_config = {
             name: "atomic_datatype",
@@ -667,24 +667,26 @@ var edit_mode = new function() {
         const datatype_selector = $(form_elements
                 ._make_field_wrapper(datatype_config.name))
             .append(form_elements._make_input_label_str(datatype_config))
-            .append($('<div class="col-sm-9"/>').append(select));
+            .append($('<div class="col-sm-9"/>').append(select))[0];
 
         const reference_config = {
             name: "reference_target",
             label: "reference to",
+            value: reference,
             query: "SELECT name FROM RECORDTYPE",
             make_desc: getEntityName,
+            make_value: getEntityName,
         };
-        const refid_selector = $(form_elements
-                .make_reference_drop_down(reference_config));
+        const refid_selector = form_elements
+                .make_reference_drop_down(reference_config);
 
         const list_checkbox_config = {
             name: "is_list",
             label: "list",
             checked: is_list,
         }
-        const list_checkbox = $(form_elements
-                .make_checkbox_input(list_checkbox_config));
+        const list_checkbox = form_elements
+                .make_checkbox_input(list_checkbox_config);
 
         return [datatype_selector, refid_selector, list_checkbox,
             edit_mode.make_unit_input(unit)];
diff --git a/src/core/js/form_elements.js b/src/core/js/form_elements.js
index 31c608912f023b85a069d6ac623b45aaa1591aac..cdc4b54176c2c635f7482f1812622cb0064ac6ba 100644
--- a/src/core/js/form_elements.js
+++ b/src/core/js/form_elements.js
@@ -23,7 +23,10 @@
 'use strict';
 
 /**
- * caosdb_map module for reusable form elemenst which already have a basic css styling.
+ * form_elements module for reusable form elemenst which already have a basic
+ * css styling.
+ *
+ * @version 0.2
  *
  * IMPORTANCE CONCEPTS
  *
@@ -205,12 +208,17 @@ var form_elements = new function () {
          *      parameter.
          * @returns {HTMLElement} SELECT element with entity options.
          */
-        this.make_reference_select = async function (entities, make_desc, multiple = false) {
+        this.make_reference_select = async function (entities, make_desc,
+                make_value, multiple) {
             caosdb_utils.assert_array(entities, "param `entities`", false);
             if (typeof make_desc !== "undefined") {
                 caosdb_utils.assert_type(make_desc, "function",
                     "param `make_desc`");
             }
+            if (typeof make_value !== "undefined") {
+                caosdb_utils.assert_type(make_value, "function",
+                    "param `make_value`");
+            }
             const ret = $('<select class="selectpicker form-control" title="Nothing selected"/>');
             if (multiple) {
                 ret.attr("multiple", "");
@@ -222,7 +230,8 @@ var form_elements = new function () {
                 let entity_id = getEntityID(entity);
                 let desc = typeof make_desc == "function" ? await make_desc(entity) :
                     entity_id;
-                let option = this.make_reference_option(entity_id, desc);
+                let value = typeof make_value == "function" ? await make_value(entity) : entity_id;
+                let option = this.make_reference_option(value, desc);
                 ret.append(option);
             }
             return ret[0];
@@ -248,11 +257,12 @@ var form_elements = new function () {
             input_col.append(loading);
             this._query(config.query).then(async function (entities) {
                 let select = $(await form_elements.make_reference_select(
-                    entities, config.make_desc, config.multiple));
+                    entities, config.make_desc, config.make_value, config.multiple,
+                    config.value));
                 select.attr("name", config.name);
                 loading.remove();
                 input_col.append(select);
-                form_elements.init_select_picker(ret[0]);
+                form_elements.init_select_picker(ret[0], config.value);
                 ret[0].dispatchEvent(form_elements.field_ready_event);
                 select.change(function () {
                     ret[0].dispatchEvent(form_elements.field_changed_event);
@@ -268,7 +278,7 @@ var form_elements = new function () {
         }
 
 
-        this.init_select_picker = function (field) {
+        this.init_select_picker = function (field, value) {
             caosdb_utils.assert_html_element(field, "parameter `field`");
             const select = $(field).find("select")[0];
             const select_picker_options = {};
@@ -281,6 +291,7 @@ var form_elements = new function () {
                 select_picker_options["liveSearchPlaceholder"] = "search...";
             }
             $(select).selectpicker(select_picker_options);
+            $(select).selectpicker("val", value);
             this.init_actions_box(field);
         }
 
diff --git a/test/core/js/modules/edit_mode.js.js b/test/core/js/modules/edit_mode.js.js
index a39e1502681b7c6f3a34e7c3701ac9a50e6d2d61..0121ab55bf9b6ff377c3eaf6c85ccd5a692238a3 100644
--- a/test/core/js/modules/edit_mode.js.js
+++ b/test/core/js/modules/edit_mode.js.js
@@ -24,10 +24,11 @@
 
 /* SETUP ext_references module */
 QUnit.module("edit_mode.js", {
-    before: function(assert) {
+    before: function (assert) {
+        this.form_elements_query = form_elements._query;
         var done = assert.async();
         // overwrite query
-        edit_mode.query = async function(str) {
+        edit_mode.query = async function (str) {
             return [];
         }
         retrieveTestEntities("edit_mode/getProperties_1.xml").then(entities => {
@@ -39,9 +40,12 @@ QUnit.module("edit_mode.js", {
             done();
         });
     },
-    after: function(assert) {
+    after: function (assert) {
         $('.modal.fade').has(".dropzone").remove();
-    }
+    },
+    afterEach: function (assert) {
+        form_elements._query = this.form_elements_query;
+    },
 });
 
 /**
@@ -50,28 +54,28 @@ QUnit.module("edit_mode.js", {
  *
  * @return {HTMLElement[]}
  */
-async function retrieveTestEntities(testCase, transform=true) {
-    entities = await connection.get("xml/"+ testCase);
+async function retrieveTestEntities(testCase, transform = true) {
+    entities = await connection.get("xml/" + testCase);
     return transformation.transformEntities(entities);
 }
 
-QUnit.test("available", function(assert) {
+QUnit.test("available", function (assert) {
     assert.ok(edit_mode);
 });
 
-QUnit.test("init", function(assert){
+QUnit.test("init", function (assert) {
     assert.ok(edit_mode.init);
 });
 
-QUnit.test("dragstart", function(assert){
+QUnit.test("dragstart", function (assert) {
     assert.ok(edit_mode.dragstart);
 });
 
-QUnit.test("dragleave", function(assert){
+QUnit.test("dragleave", function (assert) {
     assert.ok(edit_mode.dragleave);
 });
 
-QUnit.test("dragover", function(assert){
+QUnit.test("dragover", function (assert) {
     assert.ok(edit_mode.dragover);
 });
 
@@ -85,7 +89,7 @@ function assert_throws(assert, cb, message, name, info) {
     }
 }
 
-QUnit.test("add_new_property", function(assert){
+QUnit.test("add_new_property", function (assert) {
     assert.ok(edit_mode.add_new_property);
     var done = assert.async(2);
 
@@ -111,7 +115,11 @@ QUnit.test("add_new_property", function(assert){
 
     // test good cases
     assert.equal($(entity).find("#test_new_prop").length, 0, "no property");
-    entity.addEventListener("caosdb.edit_mode.property_added", function(e){assert.ok(e.target === new_prop, "event fired on newprop"); assert.ok(this === entity, "event detected on entity"); done();}, true);
+    entity.addEventListener("caosdb.edit_mode.property_added", function (e) {
+        assert.ok(e.target === new_prop, "event fired on newprop");
+        assert.ok(this === entity, "event detected on entity");
+        done();
+    }, true);
     edit_mode.add_new_property(entity, new_prop, (x) => {
         assert.ok(x === new_prop,
             "make_property_editable_cb called");
@@ -124,56 +132,56 @@ QUnit.test("add_new_property", function(assert){
 
 });
 
-QUnit.test("property_added", function(assert){
+QUnit.test("property_added", function (assert) {
     assert.ok(edit_mode.property_added, "available");
     assert.ok(edit_mode.property_added instanceof Event, "is event");
 });
 
-QUnit.test("add_dropped_property", function(assert){
+QUnit.test("add_dropped_property", function (assert) {
     assert.ok(edit_mode.add_dropped_property);
 });
 
-QUnit.test("add_dropped_parent", function(assert){
+QUnit.test("add_dropped_parent", function (assert) {
     assert.ok(edit_mode.add_dropped_parent);
 });
 
-QUnit.test("set_entity_dropable", function(assert){
+QUnit.test("set_entity_dropable", function (assert) {
     assert.ok(edit_mode.set_entity_dropable);
 });
 
-QUnit.test("unset_entity_dropable", function(assert){
+QUnit.test("unset_entity_dropable", function (assert) {
     assert.ok(edit_mode.unset_entity_dropable);
 });
 
-QUnit.test("remove_save_button", function(assert){
+QUnit.test("remove_save_button", function (assert) {
     assert.ok(edit_mode.remove_save_button);
 });
 
-QUnit.test("add_save_button", function(assert){
+QUnit.test("add_save_button", function (assert) {
     assert.ok(edit_mode.add_save_button);
 });
 
-QUnit.test("add_trash_button", function(assert){
+QUnit.test("add_trash_button", function (assert) {
     assert.ok(edit_mode.add_trash_button);
 });
 
-QUnit.test("add_parent_trash_button", function(assert){
+QUnit.test("add_parent_trash_button", function (assert) {
     assert.ok(edit_mode.add_parent_trash_button);
 });
 
-QUnit.test("add_parent_delete_buttons", function(assert){
+QUnit.test("add_parent_delete_buttons", function (assert) {
     assert.ok(edit_mode.add_parent_delete_buttons);
 });
 
-QUnit.test("add_property_trash_button", function(assert){
+QUnit.test("add_property_trash_button", function (assert) {
     assert.ok(edit_mode.add_property_trash_button);
 });
 
-QUnit.test("insert_entity", function(assert){
+QUnit.test("insert_entity", function (assert) {
     assert.ok(edit_mode.insert_entity);
 });
 
-QUnit.test("getProperties", function(assert){
+QUnit.test("getProperties", function (assert) {
     assert.ok(edit_mode.getProperties);
 
     assert.equal(edit_mode.getProperties(undefined).length, 0, "undefined returns empty list");
@@ -194,11 +202,11 @@ QUnit.test("getProperties", function(assert){
 
 });
 
-QUnit.test("update_entity", function(assert){
+QUnit.test("update_entity", function (assert) {
     assert.ok(edit_mode.update_entity);
 });
 
-QUnit.test("add_edit_mode_button", function(assert){
+QUnit.test("add_edit_mode_button", function (assert) {
     assert.ok(edit_mode.add_edit_mode_button);
 
     var target = $(document.body)[0];
@@ -209,63 +217,169 @@ QUnit.test("add_edit_mode_button", function(assert){
     $(button).remove();
 });
 
-QUnit.test("toggle_edit_mode", function(assert){
+QUnit.test("toggle_edit_mode", function (assert) {
     assert.ok(edit_mode.toggle_edit_mode);
 });
 
-QUnit.test("leave_edit_mode", function(assert){
+QUnit.test("leave_edit_mode", function (assert) {
     assert.ok(edit_mode.leave_edit_mode);
 });
 
-QUnit.test("enter_edit_mode", function(assert){
+QUnit.test("enter_edit_mode", function (assert) {
     assert.ok(edit_mode.enter_edit_mode);
 });
 
-QUnit.test("make_header_editable", function(assert){
+QUnit.test("make_header_editable", function (assert) {
     assert.ok(edit_mode.make_header_editable);
 });
 
-QUnit.test("isListDatatype", function(assert){
+QUnit.test("isListDatatype", function (assert) {
     assert.ok(edit_mode.unListDatatype);
 });
 
-QUnit.test("make_dataype_input_logic", function(assert){
+QUnit.test("make_dataype_input_logic", function (assert) {
     assert.ok(edit_mode.make_dataype_input_logic);
 });
 
-QUnit.test("make_datatype_input", function(assert){
-    assert.ok(edit_mode.make_datatype_input);
+QUnit.test("make_datatype_input", function (assert) {
+    var done = assert.async(9);
+
+    // mock query response of server
+    form_elements._query = async function (q) {
+        console.log(q);
+        const entities = str2xml(`<Response>
+            <RecordType name="Person"/></Response>`);
+        return transformation.transformEntities(entities);
+    };
     const form_wrapper = "<form/>";
 
-    // test cases
+    const no_dt_input = edit_mode.make_datatype_input(undefined, undefined);
+    no_dt_input[1].addEventListener("caosdb.field.ready", function (e) {
+        var obj = form_elements
+            .form_to_object($(form_wrapper).append(no_dt_input)[0]);
+        assert.propEqual(obj, {
+            "atomic_datatype": "TEXT",
+            "unit": "",
+            "reference_target": null,
+        }, "No datatype (defaults to TEXT)");
+        done();
+    });
+
     const text_dt_input = edit_mode.make_datatype_input("TEXT", undefined);
-    const ref_dt_input = $(edit_mode.make_datatype_input("REFERENCE", undefined));
-    const file_dt_input = $(edit_mode.make_datatype_input("FILE", undefined));
-    const person_dt_input = $(edit_mode.make_datatype_input("Person", undefined));
-    const list_text_dt_input = $(edit_mode.make_datatype_input("LIST<TEXT>", undefined));
-    const list_ref_dt_input = $(edit_mode.make_datatype_input("LIST<REFERENCE>", undefined));
-    const list_file_dt_input = $(edit_mode.make_datatype_input("LIST<FILE>", undefined));
-    const list_per_dt_input = $(edit_mode.make_datatype_input("LIST<Person>", undefined));
+    text_dt_input[1].addEventListener("caosdb.field.ready", function (e) {
+        var obj = form_elements
+            .form_to_object($(form_wrapper).append(text_dt_input)[0]);
+        assert.propEqual(obj, {
+            "atomic_datatype": "TEXT",
+            "unit": "",
+            "reference_target": null,
+        }, "TEXT");
+        done();
+    });
 
-    assert.equal(text_dt_input.length, 4);
-    var obj = form_elements
-        .form_to_object($(form_wrapper).append(text_dt_input)[0]);
-    assert.propEqual(obj, {"atomic_datatype": "TEXT"});
+    const ref_dt_input = edit_mode.make_datatype_input("REFERENCE", undefined);
+    ref_dt_input[1].addEventListener("caosdb.field.ready", function (e) {
+        var obj = form_elements
+            .form_to_object($(form_wrapper).append(ref_dt_input)[0]);
+        assert.propEqual(obj, {
+            "atomic_datatype": "REFERENCE",
+            "unit": "",
+            "reference_target": null,
+        }, "REF");
+        done();
+    });
+
+    const file_dt_input = edit_mode.make_datatype_input("FILE", undefined);
+    file_dt_input[1].addEventListener("caosdb.field.ready", function (e) {
+        var obj = form_elements
+            .form_to_object($(form_wrapper).append(file_dt_input)[0]);
+        assert.propEqual(obj, {
+            "atomic_datatype": "FILE",
+            "unit": "",
+            "reference_target": null,
+        }, "FILE");
+        done();
+    });
+
+    const person_dt_input = edit_mode.make_datatype_input("Person", undefined);
+    person_dt_input[1].addEventListener("caosdb.field.ready", function (e) {
+        var obj = form_elements
+            .form_to_object($(form_wrapper).append(person_dt_input)[0]);
+        assert.propEqual(obj, {
+            "atomic_datatype": "REFERENCE",
+            "unit": "",
+            "reference_target": "Person",
+        }, "Person");
+        done();
+    });
+
+    const list_text_dt_input = edit_mode.make_datatype_input("LIST<TEXT>",
+        undefined);
+    list_text_dt_input[1].addEventListener("caosdb.field.ready", function (e) {
+        var obj = form_elements
+            .form_to_object($(form_wrapper).append(list_text_dt_input)[0]);
+        assert.propEqual(obj, {
+            "atomic_datatype": "TEXT",
+            "unit": "",
+            "reference_target": null,
+            "is_list": "on",
+        }, "LIST<TEXT>");
+        done();
+    });
+
+    const list_ref_dt_input = edit_mode.make_datatype_input("LIST<REFERENCE>",
+        undefined);
+    list_ref_dt_input[1].addEventListener("caosdb.field.ready", function (e) {
+        var obj = form_elements
+            .form_to_object($(form_wrapper).append(list_ref_dt_input)[0]);
+        assert.propEqual(obj, {
+            "atomic_datatype": "REFERENCE",
+            "unit": "",
+            "reference_target": null,
+            "is_list": "on",
+        }, "LIST<REFERENCE>");
+        done();
+    });
+
+    const list_file_dt_input = edit_mode.make_datatype_input("LIST<FILE>",
+        undefined);
+    list_file_dt_input[1].addEventListener("caosdb.field.ready", function (e) {
+        var obj = form_elements
+            .form_to_object($(form_wrapper).append(list_file_dt_input)[0]);
+        assert.propEqual(obj, {
+            "atomic_datatype": "FILE",
+            "unit": "",
+            "reference_target": null,
+            "is_list": "on",
+        }, "LIST<FILE>");
+        done();
+    });
+
+    const list_per_dt_input = edit_mode.make_datatype_input("LIST<Person>",
+        undefined);
+    list_per_dt_input[1].addEventListener("caosdb.field.ready", function (e) {
+        var obj = form_elements
+            .form_to_object($(form_wrapper).append(list_per_dt_input)[0]);
+        assert.propEqual(obj, {
+            "atomic_datatype": "REFERENCE",
+            "unit": "",
+            "reference_target": "Person",
+            "is_list": "on",
+        }, "LIST<Person>");
+        done();
+    });
 
-    obj = form_elements
-        .form_to_object($(form_wrapper).append(text_dt_input));
-    assert.propEqual(obj, {"atomic_datatype": "REFERENCE"});
 });
 
-QUnit.test("make_input", function(assert){
+QUnit.test("make_input", function (assert) {
     assert.ok(edit_mode.make_input);
 });
 
-QUnit.test("smooth_replace", function(assert){
+QUnit.test("smooth_replace", function (assert) {
     assert.ok(edit_mode.smooth_replace);
 });
 
-QUnit.test("make_property_editable", function(assert) {
+QUnit.test("make_property_editable", function (assert) {
     assert.ok(edit_mode.make_property_editable);
 
     assert.throws(() => edit_mode.make_property_editable(undefined), /param 'element' is expected to be an HTMLElement, was undefined/, "undefined");
@@ -280,212 +394,212 @@ QUnit.test("make_property_editable", function(assert) {
 
 });
 
-QUnit.test("create_new_record", function(assert){
+QUnit.test("create_new_record", function (assert) {
     assert.ok(edit_mode.create_new_record);
 });
 
-QUnit.test("init_edit_app", function(assert){
+QUnit.test("init_edit_app", function (assert) {
     assert.ok(edit_mode.init_edit_app);
 });
 
-QUnit.test("has_errors", function(assert){
+QUnit.test("has_errors", function (assert) {
     assert.ok(edit_mode.has_errors);
 });
 
-QUnit.test("freeze_but", function(assert){
+QUnit.test("freeze_but", function (assert) {
     assert.ok(edit_mode.freeze_but);
 });
 
-QUnit.test("unfreeze", function(assert){
+QUnit.test("unfreeze", function (assert) {
     assert.ok(edit_mode.unfreeze);
 });
 
-QUnit.test("retrieve_datatype_list", function(assert){
+QUnit.test("retrieve_datatype_list", function (assert) {
     assert.ok(edit_mode.retrieve_datatype_list);
 });
 
-QUnit.test("highlight", function(assert){
+QUnit.test("highlight", function (assert) {
     assert.ok(edit_mode.highlight);
 });
 
-QUnit.test("unhighlight", function(assert){
+QUnit.test("unhighlight", function (assert) {
     assert.ok(edit_mode.unhighlight);
 });
 
-QUnit.test("handle_error", function(assert){
+QUnit.test("handle_error", function (assert) {
     assert.ok(edit_mode.handle_error);
 });
 
-QUnit.test("get_edit_panel", function(assert){
+QUnit.test("get_edit_panel", function (assert) {
     assert.ok(edit_mode.get_edit_panel);
 });
 
-QUnit.test("add_wait_datamodel_info", function(assert){
+QUnit.test("add_wait_datamodel_info", function (assert) {
     assert.ok(edit_mode.add_wait_datamodel_info);
 });
 
-QUnit.test("toggle_edit_panel", function(assert){
+QUnit.test("toggle_edit_panel", function (assert) {
     assert.ok(edit_mode.toggle_edit_panel);
 });
 
-QUnit.test("leave_edit_mode_template", function(assert){
+QUnit.test("leave_edit_mode_template", function (assert) {
     assert.ok(edit_mode.leave_edit_mode_template);
 });
 
-QUnit.test("is_edit_mode", function(assert){
+QUnit.test("is_edit_mode", function (assert) {
     assert.ok(edit_mode.is_edit_mode);
 });
 
-QUnit.test("add_cancel_button", function(assert){
+QUnit.test("add_cancel_button", function (assert) {
     assert.ok(edit_mode.add_cancel_button);
 });
 
-QUnit.test("create_new_entity", function(assert){
+QUnit.test("create_new_entity", function (assert) {
     assert.ok(edit_mode.create_new_entity);
 });
 
-QUnit.test("remove_cancel_button", function(assert){
+QUnit.test("remove_cancel_button", function (assert) {
     assert.ok(edit_mode.remove_cancel_button);
 });
 
-QUnit.test("freeze_entity", function(assert){
+QUnit.test("freeze_entity", function (assert) {
     assert.ok(edit_mode.freeze_entity);
 });
 
-QUnit.test("unfreeze_entity", function(assert){
+QUnit.test("unfreeze_entity", function (assert) {
     assert.ok(edit_mode.unfreeze_entity);
 });
 
-QUnit.test("filter", function(assert){
+QUnit.test("filter", function (assert) {
     assert.ok(edit_mode.filter);
 });
 
-QUnit.test("add_start_edit_button", function(assert){
+QUnit.test("add_start_edit_button", function (assert) {
     assert.ok(edit_mode.add_start_edit_button);
 });
 
-QUnit.test("remove_start_edit_button", function(assert){
+QUnit.test("remove_start_edit_button", function (assert) {
     assert.ok(edit_mode.remove_start_edit_button);
 });
 
-QUnit.test("add_new_record_button", function(assert){
+QUnit.test("add_new_record_button", function (assert) {
     assert.ok(edit_mode.add_new_record_button);
 });
 
-QUnit.test("remove_new_record_button", function(assert){
+QUnit.test("remove_new_record_button", function (assert) {
     assert.ok(edit_mode.remove_new_record_button);
 });
 
-QUnit.test("add_delete_button", function(assert){
+QUnit.test("add_delete_button", function (assert) {
     assert.ok(edit_mode.add_delete_button);
 });
 
-QUnit.test("remove_delete_button", function(assert){
+QUnit.test("remove_delete_button", function (assert) {
     assert.ok(edit_mode.remove_delete_button);
 });
 
 
 {
-  const sleep = function sleep(ms) {
-    return new Promise(resolve => setTimeout(resolve, ms));
-  }
+    const sleep = function sleep(ms) {
+        return new Promise(resolve => setTimeout(resolve, ms));
+    }
 
-  const datamodel = `
+    const datamodel = `
 <div><div class=\"btn-group-vertical\"><button type=\"button\" class=\"btn btn-default caosdb-f-edit-panel-new-button new-property\">Create new Property</button><button type=\"button\" class=\"btn btn-default caosdb-f-edit-panel-new-button new-recordtype\">Create new RecordType</button></div><div title=\"Drag and drop Properties from this panel to the Entities on the left.\" class=\"panel panel-default\"><div class=\"panel-heading\"><h5>Existing Properties</h5></div><div class=\"panel-body\"><div class=\"input-group\" style=\"width: 100%;\"><input class=\"form-control\" placeholder=\"filter...\" title=\"Type a name (full or partial).\" oninput=\"edit_mode.filter('properties');\" id=\"caosdb-f-filter-properties\" type=\"text\" /><span class=\"input-group-btn\"><button class=\"btn btn-default caosdb-f-edit-panel-new-button new-property caosdb-f-hide-on-empty-input\" title=\"Create this Property.\"><span class=\"glyphicon glyphicon-plus\"></span></button></span></div><ul class=\"caosdb-v-edit-list\"><li class=\"caosdb-f-edit-drag list-group-item caosdb-v-edit-drag\" id=\"caosdb-f-edit-p-20\">name</li><li class=\"caosdb-f-edit-drag list-group-item caosdb-v-edit-drag\" id=\"caosdb-f-edit-p-21\">unit</li><li class=\"caosdb-f-edit-drag list-group-item caosdb-v-edit-drag\" id=\"caosdb-f-edit-p-24\">description</li></ul></div></div><div title=\"Drag and drop RecordTypes from this panel to the Entities on the left.\" class=\"panel panel-default\"><div class=\"panel-heading\"><h5>Existing RecordTypes</h5></div><div class=\"panel-body\"><div class=\"input-group\" style=\"width: 100%;\"><input class=\"form-control\" placeholder=\"filter...\" title=\"Type a name (full or partial).\" oninput=\"edit_mode.filter('recordtypes');\" id=\"caosdb-f-filter-recordtypes\" type=\"text\" /><span class=\"input-group-btn\"><button class=\"btn btn-default caosdb-f-edit-panel-new-button new-recordtype caosdb-f-hide-on-empty-input\" title=\"Create this RecordType\"><span class=\"glyphicon glyphicon-plus\"></span></button></span></div><ul class=\"caosdb-v-edit-list\"><li class=\"caosdb-f-edit-drag list-group-item caosdb-v-edit-drag\" id=\"caosdb-f-edit-rt-30992\">Test</li><li class=\"caosdb-f-edit-drag list-group-item caosdb-v-edit-drag\" id=\"caosdb-f-edit-rt-31015\">Test2</li></ul></div></div></div>`;
 
 
 
-  QUnit.test("test case 1 - insert property", async function(assert) {
+    QUnit.test("test case 1 - insert property", async function (assert) {
 
-    // here lives the test tool box
-    const test_tool_box = $('<div class="caosdb-f-edit-panel-body" />');
+        // here lives the test tool box
+        const test_tool_box = $('<div class="caosdb-f-edit-panel-body" />');
 
-    // here live the entities
-    const main_panel = $('<div class="caosdb-f-main-entities"/>');
-    assert.equal($(".caosdb-f-main-entities").length,0);
+        // here live the entities
+        const main_panel = $('<div class="caosdb-f-main-entities"/>');
+        assert.equal($(".caosdb-f-main-entities").length, 0);
 
-    $(document.body).append(test_tool_box).append(main_panel);
+        $(document.body).append(test_tool_box).append(main_panel);
 
 
-    // ENTER EDIT MODE
-    assert.equal(edit_mode.is_edit_mode(), false, "edit_mode should not be active");
-    // fake server response
-    edit_mode.retrieve_data_model = async function() {
-        return str2xml(datamodel);
-    }
-    var app = await edit_mode.enter_edit_mode();
-    assert.equal(edit_mode.is_edit_mode(), true, "now, edit_mode should be active");
+        // ENTER EDIT MODE
+        assert.equal(edit_mode.is_edit_mode(), false, "edit_mode should not be active");
+        // fake server response
+        edit_mode.retrieve_data_model = async function () {
+            return str2xml(datamodel);
+        }
+        var app = await edit_mode.enter_edit_mode();
+        assert.equal(edit_mode.is_edit_mode(), true, "now, edit_mode should be active");
 
 
-    // NEW PROPERTY
-    assert.equal($(".caosdb-f-edit-panel-new-button.new-property").length, 2, "two new-property buttons should be present");
-    assert.equal($(".caosdb-entity-panel").length, 0, "no entities");
-    assert.equal(app.state, "initial", "initial state");
-    // click on "new property"
-    $(".caosdb-f-edit-panel-new-button.new-property").first().click();
+        // NEW PROPERTY
+        assert.equal($(".caosdb-f-edit-panel-new-button.new-property").length, 2, "two new-property buttons should be present");
+        assert.equal($(".caosdb-entity-panel").length, 0, "no entities");
+        assert.equal(app.state, "initial", "initial state");
+        // click on "new property"
+        $(".caosdb-f-edit-panel-new-button.new-property").first().click();
 
-    while(app.state === "initial") {
-        await sleep(500);
-    }
+        while (app.state === "initial") {
+            await sleep(500);
+        }
 
-    // EDIT PROPERTY
-    assert.equal(app.state, "changed", "changed state");
-    var entity = $(".caosdb-entity-panel");
-    assert.equal(entity.length, 1, "entity added");
-    // set name
-    $(".caosdb-entity-panel .caosdb-f-entity-name").val("TestProperty");
-
-    // SAVE
-    var save_button = $(".caosdb-f-entity-save-button");
-    assert.equal(save_button.length, 1, "save button available");
-    // fake server response
-    connection.post = async function(uri, data) {
-        await sleep(500);
-        assert.equal(xml2str(data), "<Request><Property name=\"TestProperty\" datatype=\"TEXT\"/></Request>");
-        assert.equal(app.state, "wait", "in wait state");
-        return str2xml("<Response><Property id=\"newId\" name=\"TestProperty\" datatype=\"TEXT\"/></Response>");
-    }
-    // click save button
-    var updated_entity = main_panel.find(".caosdb-entity-panel .caosdb-id:contains('newId')");
-    assert.equal(updated_entity.length, 0, "entity with id not yet in main panel");
-    save_button.click();
+        // EDIT PROPERTY
+        assert.equal(app.state, "changed", "changed state");
+        var entity = $(".caosdb-entity-panel");
+        assert.equal(entity.length, 1, "entity added");
+        // set name
+        $(".caosdb-entity-panel .caosdb-f-entity-name").val("TestProperty");
+
+        // SAVE
+        var save_button = $(".caosdb-f-entity-save-button");
+        assert.equal(save_button.length, 1, "save button available");
+        // fake server response
+        connection.post = async function (uri, data) {
+            await sleep(500);
+            assert.equal(xml2str(data), "<Request><Property name=\"TestProperty\" datatype=\"TEXT\"/></Request>");
+            assert.equal(app.state, "wait", "in wait state");
+            return str2xml("<Response><Property id=\"newId\" name=\"TestProperty\" datatype=\"TEXT\"/></Response>");
+        }
+        // click save button
+        var updated_entity = main_panel.find(".caosdb-entity-panel .caosdb-id:contains('newId')");
+        assert.equal(updated_entity.length, 0, "entity with id not yet in main panel");
+        save_button.click();
 
-    while(app.state === "changed" || app.state === "wait" ) {
-        await sleep(500);
-    }
+        while (app.state === "changed" || app.state === "wait") {
+            await sleep(500);
+        }
 
-    // SEE RESPONSE
-    assert.equal(app.state, "initial", "initial state");
+        // SEE RESPONSE
+        assert.equal(app.state, "initial", "initial state");
 
-    var response = $("#newId");
-    assert.equal(response.length, 1, "entity added");
+        var response = $("#newId");
+        assert.equal(response.length, 1, "entity added");
 
-    // entity has been added to main panel
-    updated_entity = main_panel.find(".caosdb-entity-panel .caosdb-id:contains('newId')");
-    assert.equal(updated_entity.length, 1, "entity with new id now in main panel");
+        // entity has been added to main panel
+        updated_entity = main_panel.find(".caosdb-entity-panel .caosdb-id:contains('newId')");
+        assert.equal(updated_entity.length, 1, "entity with new id now in main panel");
 
-    // tests for closed issue https://gitlab.com/caosdb/caosdb-webui/issues/47
-    assert.equal(main_panel.find(".caosdb-entity-panel .caosdb-entity-actions-panel").length, 1, "general actions panel there");
-    assert.equal(main_panel.find(".caosdb-entity-panel .caosdb-f-edit-mode-entity-actions-panel").length, 1, "edit_mode actions panel there (BUG caosdb-webui#47)");
+        // tests for closed issue https://gitlab.com/caosdb/caosdb-webui/issues/47
+        assert.equal(main_panel.find(".caosdb-entity-panel .caosdb-entity-actions-panel").length, 1, "general actions panel there");
+        assert.equal(main_panel.find(".caosdb-entity-panel .caosdb-f-edit-mode-entity-actions-panel").length, 1, "edit_mode actions panel there (BUG caosdb-webui#47)");
 
-    main_panel.remove();
-    test_tool_box.remove();
+        main_panel.remove();
+        test_tool_box.remove();
 
-    edit_mode.leave_edit_mode();
-    assert.equal(edit_mode.is_edit_mode(), false, "edit_mode should not be active");
+        edit_mode.leave_edit_mode();
+        assert.equal(edit_mode.is_edit_mode(), false, "edit_mode should not be active");
 
-  });
+    });
 
 }
 
 
-var transformProperty = async function(xml_str) {
+var transformProperty = async function (xml_str) {
     var xml = str2xml(`<Response>${xml_str}</Response>`);
     return (await transformation.transformProperty(xml)).firstElementChild;
 }
 
 
-QUnit.test("createElementForProperty", async function(assert) {
+QUnit.test("createElementForProperty", async function (assert) {
     assert.timeout(100000);
     // unique dummy values for each data type
     var data = {
@@ -513,7 +627,7 @@ QUnit.test("createElementForProperty", async function(assert) {
     }
 });
 
-QUnit.test("getPropertyFromElement", async function(assert) {
+QUnit.test("getPropertyFromElement", async function (assert) {
     assert.timeout(100000);
     // unique dummy values for each data type
     var data = {
@@ -580,7 +694,7 @@ QUnit.test("getPropertyFromElement", async function(assert) {
  *
  * This test case performs a large set of different data types.
  */
-QUnit.test("_toggle_list_property_object", async function(assert) {
+QUnit.test("_toggle_list_property_object", async function (assert) {
 
     // unique dummy values for each data type
     var data = {
@@ -636,7 +750,9 @@ QUnit.test("_toggle_list_property_object", async function(assert) {
         assert.equal(list_inputs_property.listDatatype, dt, `single->list has correct listDatatype (${dt}).`);
 
 
-        assert.throws(() => {edit_mode._toggle_list_property_object(long_list_prop_html, false)}, /Could not toggle to list=false with value=/, "long list throws on list->single");
+        assert.throws(() => {
+            edit_mode._toggle_list_property_object(long_list_prop_html, false)
+        }, /Could not toggle to list=false with value=/, "long list throws on list->single");
 
     }
 });
@@ -648,7 +764,7 @@ QUnit.test("_toggle_list_property_object", async function(assert) {
  * _toggle_list_property_object: HTML -> JS Object -> Converted JS Object ->
  * Converted HTML.
  */
-QUnit.test("_toggle_list_property", async function(assert) {
+QUnit.test("_toggle_list_property", async function (assert) {
 
     // unique dummy values for each data type
     var data = {
@@ -690,13 +806,15 @@ QUnit.test("_toggle_list_property", async function(assert) {
         var list_inputs = edit_mode._toggle_list_property(non_list_prop_html, true);
         var single_input = edit_mode._toggle_list_property(list_prop_html, false);
 
-        assert.throws(() => {edit_mode._toggle_list_property(long_list_prop_html, false)}, /Could not toggle to list=false with value=/, "long list throws on list->single");
+        assert.throws(() => {
+            edit_mode._toggle_list_property(long_list_prop_html, false)
+        }, /Could not toggle to list=false with value=/, "long list throws on list->single");
 
         assert.equal($(list_inputs[0].parentElement).find("ol li :input:not(button)").is.length, 1, "one list input");
         assert.equal($(list_inputs[0].parentElement).find("ol li :input").val(), data[dt], `list ${dt} input has correct value`);
         assert.equal($(single_input.parentElement).find("ol :input").length, 0, "no list input");
         var val = $(single_input).val();
-        if(dt=="DATETIME") {
+        if (dt == "DATETIME") {
             val = $(single_input).find("[type='date']").val() + "T" + $(single_input).find("[type='time']").val();
         }
         assert.equal(val, data[`LIST<${dt}>`], `single ${dt} input has correct value`);
@@ -719,7 +837,7 @@ QUnit.test("_toggle_list_property", async function(assert) {
  * (from which the user would normally choose a reference and the old reference
  * was pre-selected), effectively deleting the old value of the reference.
  */
-QUnit.test("Bug #95", async function(assert) {
+QUnit.test("Bug #95", async function (assert) {
     var query_done;
     edit_mode.query = function (query) {
         var re = /^FIND (Record|File)\s*$/g;
@@ -736,7 +854,7 @@ QUnit.test("Bug #95", async function(assert) {
 
     // old option not deleted when options are empty
     var resolve_function;
-    var empty_options = new Promise(function(res, err) {
+    var empty_options = new Promise(function (res, err) {
         resolve_function = res;
     });
     var property = $("<div/>")
@@ -745,7 +863,7 @@ QUnit.test("Bug #95", async function(assert) {
             datatype: "REFERENCE",
             list: false,
             value: "1234"
-    }, empty_options));
+        }, empty_options));
     assert.equal($(property).find("select").val(), "1234", "old value before");
     assert.equal($(property).find("option").length, 1, "one option before");
     assert.equal($(property).find(":selected").text(), "1234", "old text before");
@@ -771,7 +889,7 @@ QUnit.test("Bug #95", async function(assert) {
     assert.equal(options.length, 3, "3 entities returned");
     var fill_method_done = assert.async();
     var proxied = edit_mode.fill_reference_drop_down;
-    edit_mode.fill_reference_drop_down = async function(arg1, arg2) {
+    edit_mode.fill_reference_drop_down = async function (arg1, arg2) {
         await proxied(arg1, arg2);
 
         assert.equal($(property).find("select").val(), "1234", "still old value after");
@@ -786,7 +904,7 @@ QUnit.test("Bug #95", async function(assert) {
             datatype: "REFERENCE",
             list: false,
             value: "1234"
-    }, options));
+        }, options));
 
 
     edit_mode.fill_reference_drop_down = proxied;
@@ -794,7 +912,7 @@ QUnit.test("Bug #95", async function(assert) {
 });
 
 
-QUnit.test("fill_reference_drop_down", async function(assert) {
+QUnit.test("fill_reference_drop_down", async function (assert) {
     var options = edit_mode._create_reference_options(await transformation
         .transformEntities(str2xml(`
         <Response>
@@ -823,9 +941,9 @@ QUnit.test("fill_reference_drop_down", async function(assert) {
 /**
  * Test the inner logic of retrieve_datatype_list.
  */
-QUnit.test("_create_reference_options", async function(assert) {
-  var entities = await transformation
-    .transformEntities(str2xml(`
+QUnit.test("_create_reference_options", async function (assert) {
+    var entities = await transformation
+        .transformEntities(str2xml(`
     <Response>
       <Record name="RName" id="RID"/>
     </Response>