diff --git a/src/core/js/edit_mode.js b/src/core/js/edit_mode.js
index a9597126d772bca026c384cf618624e505bece19..ef531dcfd69ca5d9d704c08e21ba188a2841b28a 100644
--- a/src/core/js/edit_mode.js
+++ b/src/core/js/edit_mode.js
@@ -526,7 +526,7 @@ var edit_mode = new function() {
 
 
     /**
-     * Todo: Documentation missing
+     * Initializes the edit mode and loads the tool box.
      */
     this.enter_edit_mode = function(editApp = undefined) {
         window.localStorage.edit_mode = "true";
@@ -559,21 +559,41 @@ var edit_mode = new function() {
      * Reload the toolbox, e.g. when new Properties or RecordTypes have been added.
      */
     this.reload_edit_mode_toolbox = async function() {
-        model = edit_mode.retrieve_data_model();
-        edit_mode.init_tool_box(model);
+        var model = await edit_mode.retrieve_data_model();
+        edit_mode.load_tool_box(model);
     }
 
-    this.retrieve_data_model = retrieve_data_model;
+    /**
+     * Make all draggable elements in this model (as defined by the css class
+     * caosdb-f-edit-drag draggable by adding the html attribute draggable and
+     * setting it to true
+     */
+    this.add_draggable_property_to_model = function (model) {
+        var props = model.querySelectorAll(".caosdb-f-edit-drag");
+        for (var pel of props) {
+            pel.setAttribute("draggable", true);
+        }
+    }
 
+    this.retrieve_data_model = retrieve_data_model;
 
     /**
-     * Todo: Documentation missing
+     * Load the tool box and make it draggable.
      */
     this.init_tool_box = function(model) {
+        edit_mode.load_tool_box(model);
+        edit_mode.init_dragable();
+    }
+
+    /**
+     * Remove all warnings and set the HTML of the toolbox panel to
+     * the model given by model.
+     */
+    this.load_tool_box = function(model) {
+        edit_mode.add_draggable_property_to_model(model);
         var editPanel = edit_mode.get_edit_panel();
         removeAllWaitingNotifications(editPanel);
         editPanel.innerHTML = xml2str(model);
-        edit_mode.init_dragable();
     }
 
 
@@ -1169,6 +1189,13 @@ var edit_mode = new function() {
         edit_mode.add_property_trash_button($(element).find(".caosdb-property-edit")[0],element);
     }
 
+
+    /**
+     * Create a new Record using an existing RecordType.
+     * The RecordType can be specified using recordtype_id.
+     *
+     * Currently name is ignored. TODO: check whether that behavior is intended.
+     */
     this.create_new_record = async function(recordtype_id, name = undefined) {
         var rt = await retrieve(recordtype_id);
         var newrecord = createEntityXML("Record", undefined, undefined,
@@ -1191,7 +1218,7 @@ var edit_mode = new function() {
      */
     this.init_dragable = function() {
         // The old approach, clumsy - use bubbling instead.
-        // var props = document.getElementsByClassName("caosdb-f-edit-drag");
+        //var props = document.getElementsByClassName("caosdb-f-edit-drag");
         // for (var pel of props) {
         //     pel.addEventListener("dragstart", edit_mode.dragstart);
         //     pel.setAttribute("draggable", true);
@@ -1202,7 +1229,7 @@ var edit_mode = new function() {
             if (event.target.classList.contains("caosdb-f-edit-drag")) {
                 edit_mode.dragstart(event);
             }
-        }
+        });
     }
 
     /**
@@ -1558,6 +1585,7 @@ var edit_mode = new function() {
             edit_mode.unfreeze();
             resolve_references.init();
             preview.init();
+            edit_mode.reload_edit_mode_toolbox();
         }
         app.waiting = createWaitingNotification("Please wait.");
         $(app.waiting).hide();