diff --git a/src/App.css b/src/App.css
index b0f08dddfc38b5c27752c025dbfe8113491b93d2..a0c99fee8d065ca947e7f47aaf956d4d918bf6c2 100644
--- a/src/App.css
+++ b/src/App.css
@@ -51,7 +51,7 @@ div.header button:hover {
 div.fade-main {
   position: fixed;
   top: 0;
-  z-index: 1000;
+  z-index: 1020;
   height: 100vh;
   width: 100vw;
   margin: auto;
@@ -60,22 +60,22 @@ div.fade-main {
 }
 
 div.sticky {
-    position: fixed;
-    top: 0px;
-    right: 0px;
-    height: 100px;
-    width: 100px;
-    margin-right: 150px;
+  position: fixed;
+  top: 0px;
+  right: 0px;
+  height: 100px;
+  width: 100px;
+  margin-right: 150px;
 }
 
 .close {
-    position: fixed;
-    color: #f1f1f1;
-    height: 85px;
-    font-size: 100px;
-    font-weight: bold;
-    transition: transform 0.4s ease-in-out;
-    line-height: 70%;
+  position: fixed;
+  color: #f1f1f1;
+  height: 85px;
+  font-size: 100px;
+  font-weight: bold;
+  transition: transform 0.4s ease-in-out;
+  line-height: 70%;
 }
 
 .close:hover,
@@ -138,3 +138,61 @@ div.login button:hover {
   background-color: darkblue;
   cursor: pointer;
 }
+
+.login .formDate {
+  width: 30%;
+}
+
+.login label.formDate {
+  color: white;
+  width: 10%;
+  margin-left: 10%;
+  font-size: 180%;
+}
+
+.login .formTime {
+  width: 30%;
+  margin-right: 20%;
+}
+
+/* Editing text button in the toolbar */
+.leaflet-draw-toolbar .leaflet-draw-draw-textbox {
+  background-image: url("icons/button-textbox.png");
+  background-size: 30px 30px;
+}
+
+/* Editing tooltips */
+.leaflet-tooltip {
+  font-size: 18px;
+  /* Overriding tooltip layout by making it invisible */
+  background-color: transparent;
+  box-shadow: none;
+  border: none;
+  padding: 0;
+}
+
+/* remove the small triangle on tooltip */
+.leaflet-tooltip-bottom:before {
+  border: 0;
+}
+
+/* Editing editable tooltips */
+.editable {
+  cursor: text; /* the cursor icon doesn't change by default when hovering on top of the text; overriding */
+  min-width: 154px;
+  min-height: 18px;
+  color: #fff;
+  font-weight: bold;
+  /* text borders */
+  text-shadow: -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000,
+    1px 1px 0 #000;
+}
+
+/* placeholder text for tooltip */
+[contenteditable="true"]:empty:before {
+  content: attr(placeholder);
+  display: block; /* For Firefox */
+  color: #777;
+  text-shadow: none;
+  font-weight: normal;
+}
diff --git a/src/components/DrawTools.js b/src/components/DrawTools.js
index cad46ebc192b29ccec8321ab819882a32a767561..71e2db30aeb6f68315553bc84e1d060433a1deef 100644
--- a/src/components/DrawTools.js
+++ b/src/components/DrawTools.js
@@ -1,7 +1,66 @@
 import React, { Component } from "react";
 import { EditControl } from "react-leaflet-draw";
+import L from "leaflet";
+import "leaflet-draw";
 import { FeatureGroup, Marker, Polygon, Polyline } from "react-leaflet";
 
+// class for text field
+L.Draw.MarkerTextBox = L.Draw.Marker.extend({
+  options: {
+    icon: L.divIcon({
+      className: "", // empty class to override default styling
+      iconSize: [20, 20],
+      iconAnchor: [10, 20]
+    }),
+    repeatMode: false,
+    interactive: true
+  },
+  initialize: function(map, options) {
+    this.type = "textbox"; // important to have a unique type, so that it won't get mixed up with other elements
+    this.featureTypeCode = "textbox";
+    L.Draw.Feature.prototype.initialize.call(this, map, options);
+  }
+});
+
+// Overriding default toolbar
+// Just adding one new button though lol
+L.DrawToolbar.include({
+  getModeHandlers: function(map) {
+    return [
+      {
+        enabled: this.options.polyline,
+        handler: new L.Draw.Polyline(map, this.options.polyline),
+        title: L.drawLocal.draw.toolbar.buttons.polyline
+      },
+      {
+        enabled: this.options.polygon,
+        handler: new L.Draw.Polygon(map, this.options.polygon),
+        title: L.drawLocal.draw.toolbar.buttons.polygon
+      },
+      {
+        enabled: this.options.rectangle,
+        handler: new L.Draw.Rectangle(map, this.options.rectangle),
+        title: L.drawLocal.draw.toolbar.buttons.rectangle
+      },
+      {
+        enabled: this.options.circle,
+        handler: new L.Draw.Circle(map, this.options.circle),
+        title: L.drawLocal.draw.toolbar.buttons.circle
+      },
+      {
+        enabled: this.options.marker,
+        handler: new L.Draw.Marker(map, this.options.marker),
+        title: L.drawLocal.draw.toolbar.buttons.marker
+      },
+      {
+        enabled: this.options.marker,
+        handler: new L.Draw.MarkerTextBox(map, this.options.marker),
+        title: "Write text"
+      }
+    ];
+  }
+});
+
 class DrawTools extends Component {
   constructor(props) {
     super(props);
@@ -12,10 +71,54 @@ class DrawTools extends Component {
   }
 
   _onCreated = e => {
-    let type = e.layerType; // from the example; isn't used right now, but may be relevant in the future
-    let layer = e.layer;
+    // check if a drawn polyline has just one point in it
+    if (e.layerType === "polyline" && e.layer.getLatLngs().length === 1) {
+      e.layer.remove();
+      return;
+    }
+
+    if (e.layerType === "textbox") {
+      // have to create tooltip as a DOM element to allow text selecting. maybe
+      let tooltip = L.DomUtil.create("div", "editable");
+      tooltip.innerHTML =
+        '<div contenteditable="true" placeholder="Click here and type"></div>';
+
+      e.layer.bindTooltip(tooltip, {
+        permanent: true,
+        direction: "bottom",
+        interactive: true
+      });
+
+      // disable dragging when cursor is over marker (tooltip)
+      // clicking on tooltip fires the marker's click handler, hence e.layer.on
+      e.layer.on("mouseover", function() {
+        e.layer._map.dragging.disable();
+      });
+
+      // enable dragging again when cursor is out of marker (tooltip)
+      e.layer.on("mouseout", function() {
+        e.layer._map.dragging.enable();
+      });
+
+      // show placeholder text again upon emptying textbox
+      e.layer.on("keyup", function() {
+        // when the text area is emptied, a <br> appears
+        // manually removing it so that the placeholder text can show
+        if (
+          tooltip.innerHTML ===
+            '<div placeholder="Click here and type" contenteditable="true"><br></div>' ||
+          tooltip.innerHTML ===
+            '<div placeholder="Click here and type" contenteditable="true"><div><br></div></div>'
+        ) {
+          tooltip.innerHTML =
+            '<div placeholder="Click here and type" contenteditable="true"></div>';
+        }
+      });
+    } // end if (e.layerType === "textbox")
+
+    // turning layer data to GeoJSON
     this.makeGeoJSON(e.layer);
-  };
+  }; // end _onCreated
 
   _onEditMove = e => {
     console.log("_onEditMove e:");
@@ -36,13 +139,13 @@ class DrawTools extends Component {
     // this.props.sendGeoJSON(e.poly);
   };
 
-  _onEditDeleteStart = () => {
+  _onEditDeleteStart() {
     this.setState({ editModeActive: true });
-  };
+  }
 
-  _onEditDeleteStop = () => {
+  _onEditDeleteStop() {
     this.setState({ editModeActive: false });
-  };
+  }
 
   _onDeleted = e => {
     console.log(e.layers._layers);
@@ -114,7 +217,7 @@ class DrawTools extends Component {
               repeatMode: true, // allows using the tool again after finishing the previous shape
               shapeOptions: {
                 color: "#f9f10c",
-                opacity: 1
+                opacity: 1 // affects the outline only. for some reason it wasn't at full opacity, so this is needed for more clarity
               }
             },
             rectangle: {
@@ -140,13 +243,10 @@ class DrawTools extends Component {
               }
             },
             marker: {
-              repeatMode: true
+              repeatMode: false
             },
             circlemarker: false
           }}
-          edit={{
-            marker: true
-          }}
         />
 
         {/* iterate through every element fetched from back-end */}
diff --git a/src/icons/button-textbox.png b/src/icons/button-textbox.png
new file mode 100644
index 0000000000000000000000000000000000000000..e36a2872bdf8f68df996d35159335a77211ead7a
Binary files /dev/null and b/src/icons/button-textbox.png differ
diff --git a/src/icons/color-icon-2.png b/src/icons/color-icon-2.png
deleted file mode 100644
index 6623db24a39f19eb6f46f539c0eb3d7a0e9620bf..0000000000000000000000000000000000000000
Binary files a/src/icons/color-icon-2.png and /dev/null differ
diff --git a/src/icons/nil.png b/src/icons/nil.png
new file mode 100644
index 0000000000000000000000000000000000000000..ae058ee7bffad41634a20cd463fc94219f0de69b
Binary files /dev/null and b/src/icons/nil.png differ