diff --git a/index.html b/index.html
index 299ea68289be6d18a28ab9e5f9fbe2235fb63bff..51cc5181b2ad799a5f229e13b77ff54fed9a885c 100644
--- a/index.html
+++ b/index.html
@@ -11,6 +11,27 @@
   <title>Main</title>
   <script src="out/main.js"></script>
   <style>
+    .MonsterIcon:hover {
+        fill: grey-darker;
+        opacity:0.5;
+        fill-opacity:0.5;
+	width:30px;
+	height:30px;
+    }
+    .PlayerIcon:hover {
+        fill: grey-darker;
+        opacity:0.5;
+        fill-opacity:0.5;
+	width:25px;
+	height:25px;
+    }
+    .ObjectIcon:hover {
+        fill: grey-darker;
+        opacity:0.5;
+        fill-opacity:0.5;
+	width:25px;
+	height:25px;
+    }
   </style>
 </head>
 
diff --git a/out/main.js b/out/main.js
index d174dc77529a50d5639c27e045c4cbc4ec9f7ce5..2c8fa2ba96f35c329e464d858226e1b9784c1854 100644
--- a/out/main.js
+++ b/out/main.js
@@ -5632,6 +5632,7 @@ var $avh4$elm_color$Color$rgb = F3(
 var $author$project$Model$init = function (_v0) {
 	return _Utils_Tuple2(
 		{
+			activeTooltip: 'Tooltip',
 			addCharacterIcon: $author$project$Model$DrawingInactive,
 			bonusDamage: 0,
 			characterId: 0,
@@ -5644,9 +5645,11 @@ var $author$project$Model$init = function (_v0) {
 			dieFaces: _List_Nil,
 			enemy: $elm$core$Array$empty,
 			enemyHero: 'Enemy',
+			highlightedTableRow: 0,
 			hover: false,
 			iconText: '',
 			maxFace: 6,
+			mouseInIcon: false,
 			myDrop1State: $rundis$elm_bootstrap$Bootstrap$Dropdown$initialState,
 			objectIconList: _List_Nil,
 			previews: _List_Nil,
@@ -6249,17 +6252,17 @@ var $author$project$Model$GotFiles = F2(
 var $author$project$Model$GotPreviews = function (a) {
 	return {$: 'GotPreviews', a: a};
 };
-var $author$project$Model$MonsterIcon = F3(
-	function (a, b, c) {
-		return {$: 'MonsterIcon', a: a, b: b, c: c};
+var $author$project$Model$MonsterIcon = F4(
+	function (a, b, c, d) {
+		return {$: 'MonsterIcon', a: a, b: b, c: c, d: d};
 	});
-var $author$project$Model$ObjectIcon = F5(
-	function (a, b, c, d, e) {
-		return {$: 'ObjectIcon', a: a, b: b, c: c, d: d, e: e};
+var $author$project$Model$ObjectIcon = F6(
+	function (a, b, c, d, e, f) {
+		return {$: 'ObjectIcon', a: a, b: b, c: c, d: d, e: e, f: f};
 	});
-var $author$project$Model$PlayerIcon = F3(
-	function (a, b, c) {
-		return {$: 'PlayerIcon', a: a, b: b, c: c};
+var $author$project$Model$PlayerIcon = F4(
+	function (a, b, c, d) {
+		return {$: 'PlayerIcon', a: a, b: b, c: c, d: d};
 	});
 var $elm$core$List$sum = function (numbers) {
 	return A3($elm$core$List$foldl, $elm$core$Basics$add, 0, numbers);
@@ -6813,6 +6816,25 @@ var $elm$core$List$filter = F2(
 			_List_Nil,
 			list);
 	});
+var $author$project$Main$generateObjectIdents = function (list) {
+	return A2(
+		$elm$core$List$indexedMap,
+		F2(
+			function (id, _char) {
+				if (_char.$ === 'ObjectIcon') {
+					var typeID = _char.a;
+					var x = _char.b;
+					var y = _char.c;
+					var t = _char.d;
+					var c = _char.e;
+					var ident = _char.f;
+					return A6($author$project$Model$ObjectIcon, typeID, x, y, t, c, id + 1);
+				} else {
+					return A6($author$project$Model$ObjectIcon, 0, '', '', '', $elm$core$Maybe$Nothing, 0);
+				}
+			}),
+		list);
+};
 var $author$project$Model$NewRandomList = function (a) {
 	return {$: 'NewRandomList', a: a};
 };
@@ -7178,8 +7200,8 @@ var $author$project$Main$isNotId = F2(
 				var i = s.a;
 				return !_Utils_eq(id, i);
 			default:
-				var i = s.a;
-				return !_Utils_eq(id, i);
+				var ident = s.f;
+				return !_Utils_eq(id, ident);
 		}
 	});
 var $elm$json$Json$Decode$field = _Json_decodeField;
@@ -8146,13 +8168,14 @@ var $author$project$Main$update = F2(
 					var y = _v4.c;
 					var t = _v4.d;
 					var c = _v4.e;
+					var ident = _v4.f;
 					if (id === 3) {
 						return _Utils_Tuple2(
 							_Utils_update(
 								model,
 								{
 									addCharacterIcon: $author$project$Model$DrawIcon(
-										A5($author$project$Model$ObjectIcon, id, x, y, t, c)),
+										A6($author$project$Model$ObjectIcon, id, x, y, t, c, ident)),
 									radioCheckedID: id
 								}),
 							$elm$core$Platform$Cmd$none);
@@ -8162,7 +8185,7 @@ var $author$project$Main$update = F2(
 								model,
 								{
 									addCharacterIcon: $author$project$Model$DrawIcon(
-										A5($author$project$Model$ObjectIcon, id, x, y, t, $elm$core$Maybe$Nothing)),
+										A6($author$project$Model$ObjectIcon, id, x, y, t, $elm$core$Maybe$Nothing, ident)),
 									radioCheckedID: id
 								}),
 							$elm$core$Platform$Cmd$none);
@@ -8236,6 +8259,7 @@ var $author$project$Main$update = F2(
 							var i = characterIcon.a;
 							var x = characterIcon.b;
 							var y = characterIcon.c;
+							var n = characterIcon.d;
 							return _Utils_eq(
 								$elm$core$List$length(model.characterList),
 								$elm$core$List$length(
@@ -8261,6 +8285,7 @@ var $author$project$Main$update = F2(
 							var i = characterIcon.a;
 							var x = characterIcon.b;
 							var y = characterIcon.c;
+							var n = characterIcon.d;
 							return _Utils_eq(
 								$elm$core$List$length(model.characterList),
 								$elm$core$List$length(
@@ -8288,24 +8313,27 @@ var $author$project$Main$update = F2(
 							var y = characterIcon.c;
 							var t = characterIcon.d;
 							var c = characterIcon.e;
+							var ident = characterIcon.f;
 							return _Utils_Tuple2(
 								_Utils_update(
 									model,
 									{
 										addCharacterIcon: $author$project$Model$DrawingInactive,
 										iconText: '',
-										objectIconList: _Utils_ap(
-											model.objectIconList,
-											_List_fromArray(
-												[
-													A5(
-													$author$project$Model$ObjectIcon,
-													i,
-													x,
-													y,
-													model.iconText,
-													$elm$core$Maybe$Just(model.colour))
-												])),
+										objectIconList: $author$project$Main$generateObjectIdents(
+											_Utils_ap(
+												model.objectIconList,
+												_List_fromArray(
+													[
+														A6(
+														$author$project$Model$ObjectIcon,
+														i,
+														x,
+														y,
+														model.iconText,
+														$elm$core$Maybe$Just(model.colour),
+														ident)
+													]))),
 										radioCheckedID: 0,
 										showObjectIconModal: $rundis$elm_bootstrap$Bootstrap$Modal$hidden
 									}),
@@ -8318,6 +8346,7 @@ var $author$project$Main$update = F2(
 							var i = characterIcon.a;
 							var x = characterIcon.b;
 							var y = characterIcon.c;
+							var name = characterIcon.d;
 							return (_Utils_cmp(
 								$elm$core$List$length(model.characterList),
 								$elm$core$List$length(
@@ -8339,13 +8368,14 @@ var $author$project$Main$update = F2(
 									model,
 									{
 										addCharacterIcon: $author$project$Model$DrawIcon(
-											A3($author$project$Model$PlayerIcon, i, x, y))
+											A4($author$project$Model$PlayerIcon, i, x, y, name))
 									}),
 								$elm$core$Platform$Cmd$none);
 						case 'MonsterIcon':
 							var i = characterIcon.a;
 							var x = characterIcon.b;
 							var y = characterIcon.c;
+							var name = characterIcon.d;
 							return (_Utils_cmp(
 								$elm$core$List$length(model.characterList),
 								$elm$core$List$length(
@@ -8367,7 +8397,7 @@ var $author$project$Main$update = F2(
 									model,
 									{
 										addCharacterIcon: $author$project$Model$DrawIcon(
-											A3($author$project$Model$MonsterIcon, i, x, y))
+											A4($author$project$Model$MonsterIcon, i, x, y, name))
 									}),
 								$elm$core$Platform$Cmd$none);
 						default:
@@ -8376,12 +8406,13 @@ var $author$project$Main$update = F2(
 							var y = characterIcon.c;
 							var t = characterIcon.d;
 							var c = characterIcon.e;
+							var ident = characterIcon.f;
 							return _Utils_Tuple2(
 								_Utils_update(
 									model,
 									{
 										addCharacterIcon: $author$project$Model$DrawIcon(
-											A5($author$project$Model$ObjectIcon, i, x, y, t, c))
+											A6($author$project$Model$ObjectIcon, i, x, y, t, c, ident))
 									}),
 								$elm$core$Platform$Cmd$none);
 					}
@@ -8445,7 +8476,10 @@ var $author$project$Main$update = F2(
 						return _Utils_Tuple2(
 							_Utils_update(
 								model,
-								{showObjectIconModal: $rundis$elm_bootstrap$Bootstrap$Modal$shown}),
+								{
+									mouseInIcon: false,
+									showObjectIconModal: model.mouseInIcon ? $rundis$elm_bootstrap$Bootstrap$Modal$hidden : $rundis$elm_bootstrap$Bootstrap$Modal$shown
+								}),
 							$elm$core$Platform$Cmd$none);
 				}
 			case 'ShowAttackModal':
@@ -8506,7 +8540,7 @@ var $author$project$Main$update = F2(
 						model,
 						{previews: urls}),
 					$elm$core$Platform$Cmd$none);
-			default:
+			case 'ColorPickerMsg':
 				var cpMsg = msg.a;
 				var _v11 = model.addCharacterIcon;
 				if ((_v11.$ === 'DrawIcon') && (_v11.a.$ === 'ObjectIcon')) {
@@ -8516,6 +8550,7 @@ var $author$project$Main$update = F2(
 					var y = _v12.c;
 					var t = _v12.d;
 					var c = _v12.e;
+					var ident = _v12.f;
 					var _v13 = A3($simonh1000$elm_colorpicker$ColorPicker$update, cpMsg, model.colour, model.colorPicker);
 					var m = _v13.a;
 					var colour = _v13.b;
@@ -8530,6 +8565,68 @@ var $author$project$Main$update = F2(
 				} else {
 					return _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);
 				}
+			case 'ToolTipMsg':
+				var tooltip = msg.a;
+				if (tooltip === '') {
+					return _Utils_Tuple2(
+						_Utils_update(
+							model,
+							{
+								activeTooltip: 'Beschreibung',
+								mouseInIcon: (tooltip === 'Beschreibung') ? false : true
+							}),
+						$elm$core$Platform$Cmd$none);
+				} else {
+					return _Utils_Tuple2(
+						_Utils_update(
+							model,
+							{
+								activeTooltip: tooltip,
+								mouseInIcon: (tooltip === 'Beschreibung') ? false : true
+							}),
+						$elm$core$Platform$Cmd$none);
+				}
+			case 'HighlightTableRow':
+				var id = msg.a;
+				var name = msg.b;
+				return _Utils_Tuple2(
+					_Utils_update(
+						model,
+						{
+							activeTooltip: name,
+							highlightedTableRow: id,
+							mouseInIcon: (!id) ? false : true
+						}),
+					$elm$core$Platform$Cmd$none);
+			default:
+				var iconType = msg.a;
+				var id = msg.b;
+				if (iconType === 'object') {
+					return _Utils_Tuple2(
+						_Utils_update(
+							model,
+							{
+								activeTooltip: 'Beschreibung',
+								objectIconList: A2(
+									$elm$core$List$filter,
+									$author$project$Main$isNotId(id),
+									model.objectIconList)
+							}),
+						$elm$core$Platform$Cmd$none);
+				} else {
+					return _Utils_Tuple2(
+						_Utils_update(
+							model,
+							{
+								activeTooltip: 'Beschreibung',
+								characterList: A2(
+									$elm$core$List$filter,
+									$author$project$Main$isNotId(id),
+									model.characterList),
+								highlightedTableRow: 0
+							}),
+						$elm$core$Platform$Cmd$none);
+				}
 		}
 	});
 var $author$project$Model$TabMsg = function (a) {
@@ -11953,6 +12050,8 @@ var $rundis$elm_bootstrap$Bootstrap$Grid$col = F2(
 		return $rundis$elm_bootstrap$Bootstrap$Grid$Column(
 			{children: children, options: options});
 	});
+var $rundis$elm_bootstrap$Bootstrap$Form$Textarea$Disabled = {$: 'Disabled'};
+var $rundis$elm_bootstrap$Bootstrap$Form$Textarea$disabled = $rundis$elm_bootstrap$Bootstrap$Form$Textarea$Disabled;
 var $rundis$elm_bootstrap$Bootstrap$Table$Bordered = {$: 'Bordered'};
 var $rundis$elm_bootstrap$Bootstrap$Table$bordered = $rundis$elm_bootstrap$Bootstrap$Table$Bordered;
 var $author$project$Model$AddCharacterIcon = function (a) {
@@ -11961,6 +12060,24 @@ var $author$project$Model$AddCharacterIcon = function (a) {
 var $author$project$Model$MouseDraw = function (a) {
 	return {$: 'MouseDraw', a: a};
 };
+<<<<<<< HEAD
+=======
+var $rundis$elm_bootstrap$Bootstrap$Table$RowAttr = function (a) {
+	return {$: 'RowAttr', a: a};
+};
+var $rundis$elm_bootstrap$Bootstrap$Table$rowAttr = function (attr_) {
+	return $rundis$elm_bootstrap$Bootstrap$Table$RowAttr(attr_);
+};
+var $rundis$elm_bootstrap$Bootstrap$Table$Roled = function (a) {
+	return {$: 'Roled', a: a};
+};
+var $rundis$elm_bootstrap$Bootstrap$Table$RoledRow = function (a) {
+	return {$: 'RoledRow', a: a};
+};
+var $rundis$elm_bootstrap$Bootstrap$Internal$Role$Secondary = {$: 'Secondary'};
+var $rundis$elm_bootstrap$Bootstrap$Table$rowSecondary = $rundis$elm_bootstrap$Bootstrap$Table$RoledRow(
+	$rundis$elm_bootstrap$Bootstrap$Table$Roled($rundis$elm_bootstrap$Bootstrap$Internal$Role$Secondary));
+>>>>>>> dev
 var $author$project$DungeonMap$stopBubbling = function (msg) {
 	return A2(
 		$elm$html$Html$Events$stopPropagationOn,
@@ -11972,93 +12089,100 @@ var $author$project$DungeonMap$stopBubbling = function (msg) {
 			},
 			$elm$json$Json$Decode$succeed(msg)));
 };
-var $author$project$DungeonMap$characters2rows = function (chars) {
-	return A2(
-		$elm$core$List$indexedMap,
-		F2(
-			function (i, c) {
-				if (c.$ === 'Enemy') {
-					var name = c.a;
-					var health = c.b;
-					return A2(
-						$rundis$elm_bootstrap$Bootstrap$Table$tr,
-						_List_fromArray(
-							[
-								$rundis$elm_bootstrap$Bootstrap$Table$rowAttr(
-								$author$project$DungeonMap$stopBubbling(
-									$author$project$Model$AddCharacterIcon(
-										$author$project$Model$MouseDraw(
-											A3($author$project$Model$MonsterIcon, i + 1, '-100', '-100')))))
-							]),
-						_List_fromArray(
-							[
-								A2(
-								$rundis$elm_bootstrap$Bootstrap$Table$td,
-								_List_Nil,
-								_List_fromArray(
-									[
-										$elm$html$Html$text(
-										$elm$core$String$fromInt(i + 1))
-									])),
-								A2(
-								$rundis$elm_bootstrap$Bootstrap$Table$td,
-								_List_Nil,
-								_List_fromArray(
-									[
-										$elm$html$Html$text(name)
-									])),
-								A2(
-								$rundis$elm_bootstrap$Bootstrap$Table$td,
-								_List_Nil,
-								_List_fromArray(
-									[
-										$elm$html$Html$text(
-										$elm$core$String$fromInt(health))
-									]))
-							]));
-				} else {
-					var name = c.a;
-					var health = c.b;
-					return A2(
-						$rundis$elm_bootstrap$Bootstrap$Table$tr,
-						_List_fromArray(
-							[
-								$rundis$elm_bootstrap$Bootstrap$Table$rowAttr(
-								$author$project$DungeonMap$stopBubbling(
-									$author$project$Model$AddCharacterIcon(
-										$author$project$Model$MouseDraw(
-											A3($author$project$Model$PlayerIcon, i + 1, '-100', '-100')))))
-							]),
-						_List_fromArray(
-							[
-								A2(
-								$rundis$elm_bootstrap$Bootstrap$Table$td,
-								_List_Nil,
-								_List_fromArray(
-									[
-										$elm$html$Html$text(
-										$elm$core$String$fromInt(i + 1))
-									])),
-								A2(
-								$rundis$elm_bootstrap$Bootstrap$Table$td,
-								_List_Nil,
+var $author$project$DungeonMap$characters2rows = F2(
+	function (chars, highlighted) {
+		return A2(
+			$elm$core$List$indexedMap,
+			F2(
+				function (i, c) {
+					if (c.$ === 'Enemy') {
+						var name = c.a;
+						var health = c.b;
+						return A2(
+							$rundis$elm_bootstrap$Bootstrap$Table$tr,
+							_Utils_ap(
 								_List_fromArray(
 									[
-										$elm$html$Html$text(name)
-									])),
-								A2(
-								$rundis$elm_bootstrap$Bootstrap$Table$td,
-								_List_Nil,
+										$rundis$elm_bootstrap$Bootstrap$Table$rowAttr(
+										$author$project$DungeonMap$stopBubbling(
+											$author$project$Model$AddCharacterIcon(
+												$author$project$Model$MouseDraw(
+													A4($author$project$Model$MonsterIcon, i + 1, '-100', '-100', name)))))
+									]),
+								_Utils_eq(highlighted, i + 1) ? _List_fromArray(
+									[$rundis$elm_bootstrap$Bootstrap$Table$rowSecondary]) : _List_Nil),
+							_List_fromArray(
+								[
+									A2(
+									$rundis$elm_bootstrap$Bootstrap$Table$td,
+									_List_Nil,
+									_List_fromArray(
+										[
+											$elm$html$Html$text(
+											$elm$core$String$fromInt(i + 1))
+										])),
+									A2(
+									$rundis$elm_bootstrap$Bootstrap$Table$td,
+									_List_Nil,
+									_List_fromArray(
+										[
+											$elm$html$Html$text(name)
+										])),
+									A2(
+									$rundis$elm_bootstrap$Bootstrap$Table$td,
+									_List_Nil,
+									_List_fromArray(
+										[
+											$elm$html$Html$text(
+											$elm$core$String$fromInt(health))
+										]))
+								]));
+					} else {
+						var name = c.a;
+						var health = c.b;
+						return A2(
+							$rundis$elm_bootstrap$Bootstrap$Table$tr,
+							_Utils_ap(
 								_List_fromArray(
 									[
-										$elm$html$Html$text(
-										$elm$core$String$fromInt(health))
-									]))
-							]));
-				}
-			}),
-		$elm$core$Array$toList(chars));
-};
+										$rundis$elm_bootstrap$Bootstrap$Table$rowAttr(
+										$author$project$DungeonMap$stopBubbling(
+											$author$project$Model$AddCharacterIcon(
+												$author$project$Model$MouseDraw(
+													A4($author$project$Model$PlayerIcon, i + 1, '-100', '-100', name)))))
+									]),
+								_Utils_eq(highlighted, i + 1) ? _List_fromArray(
+									[$rundis$elm_bootstrap$Bootstrap$Table$rowSecondary]) : _List_Nil),
+							_List_fromArray(
+								[
+									A2(
+									$rundis$elm_bootstrap$Bootstrap$Table$td,
+									_List_Nil,
+									_List_fromArray(
+										[
+											$elm$html$Html$text(
+											$elm$core$String$fromInt(i + 1))
+										])),
+									A2(
+									$rundis$elm_bootstrap$Bootstrap$Table$td,
+									_List_Nil,
+									_List_fromArray(
+										[
+											$elm$html$Html$text(name)
+										])),
+									A2(
+									$rundis$elm_bootstrap$Bootstrap$Table$td,
+									_List_Nil,
+									_List_fromArray(
+										[
+											$elm$html$Html$text(
+											$elm$core$String$fromInt(health))
+										]))
+								]));
+					}
+				}),
+			$elm$core$Array$toList(chars));
+	});
 var $rundis$elm_bootstrap$Bootstrap$Table$Responsive = function (a) {
 	return {$: 'Responsive', a: a};
 };
@@ -12077,11 +12201,11 @@ var $author$project$DungeonMap$dungeonMap_MonsterList = function (model) {
 				$rundis$elm_bootstrap$Bootstrap$Table$table(
 				{
 					options: _List_fromArray(
-						[$rundis$elm_bootstrap$Bootstrap$Table$striped, $rundis$elm_bootstrap$Bootstrap$Table$hover, $rundis$elm_bootstrap$Bootstrap$Table$bordered, $rundis$elm_bootstrap$Bootstrap$Table$responsive]),
+						[$rundis$elm_bootstrap$Bootstrap$Table$hover, $rundis$elm_bootstrap$Bootstrap$Table$bordered, $rundis$elm_bootstrap$Bootstrap$Table$responsive]),
 					tbody: A2(
 						$rundis$elm_bootstrap$Bootstrap$Table$tbody,
 						_List_Nil,
-						$author$project$DungeonMap$characters2rows(model.enemy)),
+						A2($author$project$DungeonMap$characters2rows, model.enemy, model.highlightedTableRow)),
 					thead: $rundis$elm_bootstrap$Bootstrap$Table$simpleThead(
 						_List_fromArray(
 							[
@@ -12112,7 +12236,6 @@ var $author$project$DungeonMap$dungeonMap_MonsterList = function (model) {
 };
 var $author$project$Model$DragEnter = {$: 'DragEnter'};
 var $author$project$Model$DragLeave = {$: 'DragLeave'};
-var $author$project$Model$ObjectIconModal = {$: 'ObjectIconModal'};
 var $author$project$Model$Pick = {$: 'Pick'};
 var $elm$file$File$decoder = _File_decoder;
 var $elm$json$Json$Decode$list = _Json_decodeList;
@@ -12166,6 +12289,7 @@ var $elm$svg$Svg$image = $elm$svg$Svg$trustedNode('image');
 var $author$project$Model$MouseClick = function (a) {
 	return {$: 'MouseClick', a: a};
 };
+var $author$project$Model$ObjectIconModal = {$: 'ObjectIconModal'};
 var $elm$svg$Svg$Events$onClick = function (msg) {
 	return A2(
 		$elm$html$Html$Events$on,
@@ -12196,37 +12320,41 @@ var $author$project$DungeonMap$onMouseMove = function (mapMousePositionToMsg) {
 		'mousemoveWithCoordinates',
 		A2($elm$json$Json$Decode$map, mapMousePositionToMsg, $author$project$DungeonMap$mousePosition));
 };
-var $author$project$DungeonMap$positionToCircleCenter = F2(
-	function (i, position) {
-		return $author$project$Model$AddCharacterIcon(
-			$author$project$Model$MouseDraw(
-				A3(
-					$author$project$Model$PlayerIcon,
-					i,
-					$elm$core$String$fromFloat(position.x),
-					$elm$core$String$fromFloat(position.y))));
-	});
-var $author$project$DungeonMap$positionToIconCenter = F2(
-	function (i, position) {
-		return $author$project$Model$AddCharacterIcon(
-			$author$project$Model$MouseDraw(
-				A5(
-					$author$project$Model$ObjectIcon,
-					i,
-					$elm$core$String$fromFloat(position.x),
-					$elm$core$String$fromFloat(position.y),
-					'',
-					$elm$core$Maybe$Nothing)));
-	});
-var $author$project$DungeonMap$positionToRectangleCorner = F2(
-	function (i, position) {
-		return $author$project$Model$AddCharacterIcon(
-			$author$project$Model$MouseDraw(
-				A3(
-					$author$project$Model$MonsterIcon,
-					i,
-					$elm$core$String$fromFloat(position.x),
-					$elm$core$String$fromFloat(position.y))));
+var $author$project$DungeonMap$positionToIconCenter = F4(
+	function (icon, name, i, position) {
+		switch (icon) {
+			case 'player':
+				return $author$project$Model$AddCharacterIcon(
+					$author$project$Model$MouseDraw(
+						A4(
+							$author$project$Model$PlayerIcon,
+							i,
+							$elm$core$String$fromFloat(position.x),
+							$elm$core$String$fromFloat(position.y),
+							name)));
+			case 'monster':
+				return $author$project$Model$AddCharacterIcon(
+					$author$project$Model$MouseDraw(
+						A4(
+							$author$project$Model$MonsterIcon,
+							i,
+							$elm$core$String$fromFloat(position.x),
+							$elm$core$String$fromFloat(position.y),
+							name)));
+			case 'object':
+				return $author$project$Model$AddCharacterIcon(
+					$author$project$Model$MouseDraw(
+						A6(
+							$author$project$Model$ObjectIcon,
+							i,
+							$elm$core$String$fromFloat(position.x),
+							$elm$core$String$fromFloat(position.y),
+							'',
+							$elm$core$Maybe$Nothing,
+							0)));
+			default:
+				return $author$project$Model$DoNothing;
+		}
 	});
 var $author$project$DungeonMap$mouseDrawEvents = function (addCharacterIcon) {
 	if (addCharacterIcon.$ === 'DrawIcon') {
@@ -12236,25 +12364,27 @@ var $author$project$DungeonMap$mouseDrawEvents = function (addCharacterIcon) {
 				var i = characterIcon.a;
 				var x = characterIcon.b;
 				var y = characterIcon.c;
+				var n = characterIcon.d;
 				return _List_fromArray(
 					[
 						$elm$svg$Svg$Events$onClick(
 						$author$project$Model$AddCharacterIcon(
 							$author$project$Model$MouseClick(characterIcon))),
 						$author$project$DungeonMap$onMouseMove(
-						$author$project$DungeonMap$positionToCircleCenter(i))
+						A3($author$project$DungeonMap$positionToIconCenter, 'player', n, i))
 					]);
 			case 'MonsterIcon':
 				var i = characterIcon.a;
 				var x = characterIcon.b;
 				var y = characterIcon.c;
+				var n = characterIcon.d;
 				return _List_fromArray(
 					[
 						$elm$svg$Svg$Events$onClick(
 						$author$project$Model$AddCharacterIcon(
 							$author$project$Model$MouseClick(characterIcon))),
 						$author$project$DungeonMap$onMouseMove(
-						$author$project$DungeonMap$positionToRectangleCorner(i))
+						A3($author$project$DungeonMap$positionToIconCenter, 'monster', n, i))
 					]);
 			default:
 				var i = characterIcon.a;
@@ -12262,22 +12392,34 @@ var $author$project$DungeonMap$mouseDrawEvents = function (addCharacterIcon) {
 				var y = characterIcon.c;
 				var t = characterIcon.d;
 				var c = characterIcon.e;
+				var ident = characterIcon.f;
 				return _List_fromArray(
 					[
 						$elm$svg$Svg$Events$onClick(
 						$author$project$Model$ShowModal($author$project$Model$ObjectIconModal)),
 						$author$project$DungeonMap$onMouseMove(
-						$author$project$DungeonMap$positionToIconCenter(i))
+						A3($author$project$DungeonMap$positionToIconCenter, 'object', '', i))
 					]);
 		}
 	} else {
 		return _List_fromArray(
 			[
 				$author$project$DungeonMap$onMouseMove(
-				$author$project$DungeonMap$positionToIconCenter(0))
+				A3($author$project$DungeonMap$positionToIconCenter, 'object', '', 0))
 			]);
 	}
 };
+var $author$project$Model$DeleteIcon = F2(
+	function (a, b) {
+		return {$: 'DeleteIcon', a: a, b: b};
+	});
+var $author$project$Model$HighlightTableRow = F2(
+	function (a, b) {
+		return {$: 'HighlightTableRow', a: a, b: b};
+	});
+var $author$project$Model$ToolTipMsg = function (a) {
+	return {$: 'ToolTipMsg', a: a};
+};
 var $avh4$elm_color$Color$black = A4($avh4$elm_color$Color$RgbaSpace, 0 / 255, 0 / 255, 0 / 255, 1.0);
 var $elm$core$String$concat = function (strings) {
 	return A2($elm$core$String$join, '', strings);
@@ -12317,18 +12459,26 @@ var $author$project$DungeonMap$buildCustomObjectIconStyle = function (color) {
 		A2($elm$core$Maybe$withDefault, $avh4$elm_color$Color$black, color));
 };
 var $elm$svg$Svg$circle = $elm$svg$Svg$trustedNode('circle');
+var $elm$svg$Svg$Attributes$class = _VirtualDom_attribute('class');
 var $elm$svg$Svg$Attributes$cx = _VirtualDom_attribute('cx');
 var $elm$svg$Svg$Attributes$cy = _VirtualDom_attribute('cy');
 var $elm$svg$Svg$Attributes$dominantBaseline = _VirtualDom_attribute('dominant-baseline');
-var $author$project$DungeonMap$getIconPath = function (id) {
-	switch (id) {
-		case 1:
-			return 'res/icons/chest.png';
-		case 2:
-			return 'res/icons/key.png';
-		case 3:
-			return 'custom';
+var $author$project$DungeonMap$getColor = function (object) {
+	switch (object.$) {
+		case 'MonsterIcon':
+			var i = object.a;
+			var x = object.b;
+			var y = object.c;
+			var n = object.d;
+			return $elm$core$Maybe$Nothing;
+		case 'PlayerIcon':
+			var i = object.a;
+			var x = object.b;
+			var y = object.c;
+			var n = object.d;
+			return $elm$core$Maybe$Nothing;
 		default:
+<<<<<<< HEAD
 			return '';
 	}
 };
@@ -12586,11 +12736,17 @@ var $author$project$DungeonMap$getColor = function (object) {
 			var y = object.c;
 			return $elm$core$Maybe$Nothing;
 		default:
+=======
+>>>>>>> dev
 			var i = object.a;
 			var x = object.b;
 			var y = object.c;
 			var t = object.d;
 			var c = object.e;
+<<<<<<< HEAD
+=======
+			var ident = object.f;
+>>>>>>> dev
 			return c;
 	}
 };
@@ -12600,11 +12756,13 @@ var $author$project$DungeonMap$getCoord = function (object) {
 			var i = object.a;
 			var x = object.b;
 			var y = object.c;
+			var n = object.d;
 			return x + (',' + y);
 		case 'PlayerIcon':
 			var i = object.a;
 			var x = object.b;
 			var y = object.c;
+			var n = object.d;
 			return x + (',' + y);
 		default:
 			var i = object.a;
@@ -12612,6 +12770,7 @@ var $author$project$DungeonMap$getCoord = function (object) {
 			var y = object.c;
 			var t = object.d;
 			var c = object.e;
+			var ident = object.f;
 			return x + (',' + y);
 	}
 };
@@ -12621,11 +12780,13 @@ var $author$project$DungeonMap$getID = function (object) {
 			var i = object.a;
 			var x = object.b;
 			var y = object.c;
+			var n = object.d;
 			return i;
 		case 'PlayerIcon':
 			var i = object.a;
 			var x = object.b;
 			var y = object.c;
+			var n = object.d;
 			return i;
 		default:
 			var i = object.a;
@@ -12633,7 +12794,20 @@ var $author$project$DungeonMap$getID = function (object) {
 			var y = object.c;
 			var t = object.d;
 			var c = object.e;
-			return i;
+			var ident = object.f;
+			return ident;
+	}
+};
+var $author$project$DungeonMap$getIconPath = function (id) {
+	switch (id) {
+		case 1:
+			return 'res/icons/chest.png';
+		case 2:
+			return 'res/icons/key.png';
+		case 3:
+			return 'custom';
+		default:
+			return '';
 	}
 };
 var $author$project$DungeonMap$getIconType = function (object) {
@@ -12642,11 +12816,13 @@ var $author$project$DungeonMap$getIconType = function (object) {
 			var i = object.a;
 			var x = object.b;
 			var y = object.c;
+			var n = object.d;
 			return 'monster';
 		case 'PlayerIcon':
 			var i = object.a;
 			var x = object.b;
 			var y = object.c;
+			var n = object.d;
 			return 'player';
 		default:
 			var i = object.a;
@@ -12654,6 +12830,7 @@ var $author$project$DungeonMap$getIconType = function (object) {
 			var y = object.c;
 			var t = object.d;
 			var c = object.e;
+			var ident = object.f;
 			return 'object';
 	}
 };
@@ -12663,23 +12840,67 @@ var $author$project$DungeonMap$getObjectText = function (object) {
 			var i = object.a;
 			var x = object.b;
 			var y = object.c;
-			return '';
+			var name = object.d;
+			return name;
 		case 'PlayerIcon':
 			var i = object.a;
 			var x = object.b;
 			var y = object.c;
-			return '';
+			var name = object.d;
+			return name;
 		default:
 			var i = object.a;
 			var x = object.b;
 			var y = object.c;
 			var t = object.d;
 			var c = object.e;
+			var ident = object.f;
 			return t;
 	}
 };
-var $author$project$DungeonMap$getAreaParam = function (s) {
-	var yCor = A2(
+var $author$project$DungeonMap$getTypeID = function (object) {
+	if (object.$ === 'ObjectIcon') {
+		var i = object.a;
+		var x = object.b;
+		var y = object.c;
+		var t = object.d;
+		var c = object.e;
+		var ident = object.f;
+		return i;
+	} else {
+		return 0;
+	}
+};
+var $elm$svg$Svg$Attributes$id = _VirtualDom_attribute('id');
+var $elm$svg$Svg$Events$onMouseOut = function (msg) {
+	return A2(
+		$elm$html$Html$Events$on,
+		'mouseout',
+		$elm$json$Json$Decode$succeed(msg));
+};
+var $elm$svg$Svg$Events$onMouseOver = function (msg) {
+	return A2(
+		$elm$html$Html$Events$on,
+		'mouseover',
+		$elm$json$Json$Decode$succeed(msg));
+};
+var $elm$svg$Svg$Attributes$r = _VirtualDom_attribute('r');
+var $elm$svg$Svg$Attributes$style = _VirtualDom_attribute('style');
+var $elm$svg$Svg$text = $elm$virtual_dom$VirtualDom$text;
+var $elm$svg$Svg$Attributes$textAnchor = _VirtualDom_attribute('text-anchor');
+var $elm$svg$Svg$text_ = $elm$svg$Svg$trustedNode('text');
+var $elm$core$String$toFloat = _String_toFloat;
+var $elm$svg$Svg$Attributes$x = _VirtualDom_attribute('x');
+var $elm$svg$Svg$Attributes$xlinkHref = function (value) {
+	return A3(
+		_VirtualDom_attributeNS,
+		'http://www.w3.org/1999/xlink',
+		'xlink:href',
+		_VirtualDom_noJavaScriptUri(value));
+};
+var $elm$svg$Svg$Attributes$y = _VirtualDom_attribute('y');
+var $author$project$DungeonMap$placeIcon = function (s) {
+	var y = A2(
 		$elm$core$Maybe$withDefault,
 		'0',
 		$elm$core$List$head(
@@ -12690,7 +12911,7 @@ var $author$project$DungeonMap$getAreaParam = function (s) {
 					$elm$core$String$split,
 					',',
 					$author$project$DungeonMap$getCoord(s)))));
-	var xCor = A2(
+	var x = A2(
 		$elm$core$Maybe$withDefault,
 		'0',
 		$elm$core$List$head(
@@ -12698,17 +12919,258 @@ var $author$project$DungeonMap$getAreaParam = function (s) {
 				$elm$core$String$split,
 				',',
 				$author$project$DungeonMap$getCoord(s))));
-	var objectText = $author$project$DungeonMap$getObjectText(s);
+	var typeID = $author$project$DungeonMap$getTypeID(s);
+	var text = $author$project$DungeonMap$getObjectText(s);
 	var id = $author$project$DungeonMap$getID(s);
+	var iconType = $author$project$DungeonMap$getIconType(s);
 	var color = $author$project$DungeonMap$getColor(s);
-	return A5(
-		$author$project$DungeonMap$placeIcon,
-		$author$project$DungeonMap$getIconType(s),
-		id,
-		xCor,
-		yCor,
-		color);
+	switch (iconType) {
+		case 'monster':
+			return _List_fromArray(
+				[
+					A2(
+					$elm$svg$Svg$text_,
+					_List_fromArray(
+						[
+							$elm$svg$Svg$Attributes$textAnchor('middle'),
+							$elm$svg$Svg$Attributes$x(
+							$elm$core$String$fromFloat(
+								A2(
+									$elm$core$Maybe$withDefault,
+									0,
+									$elm$core$String$toFloat(x)) - 3)),
+							$elm$svg$Svg$Attributes$y(
+							$elm$core$String$fromFloat(
+								A2(
+									$elm$core$Maybe$withDefault,
+									0,
+									$elm$core$String$toFloat(y)) - 0.5)),
+							$elm$svg$Svg$Attributes$dominantBaseline('middle')
+						]),
+					_List_fromArray(
+						[
+							$elm$svg$Svg$text(
+							$elm$core$String$fromInt(id))
+						])),
+					A2(
+					$elm$svg$Svg$image,
+					_List_fromArray(
+						[
+							$elm$svg$Svg$Attributes$style('width:30px;height:30px;'),
+							$elm$svg$Svg$Attributes$x(
+							$elm$core$String$fromFloat(
+								A2(
+									$elm$core$Maybe$withDefault,
+									0,
+									$elm$core$String$toFloat(x)) - 17.5)),
+							$elm$svg$Svg$Attributes$y(
+							$elm$core$String$fromFloat(
+								A2(
+									$elm$core$Maybe$withDefault,
+									0,
+									$elm$core$String$toFloat(y)) - 17.5)),
+							$elm$svg$Svg$Attributes$xlinkHref('res/icons/enemy.png'),
+							$elm$svg$Svg$Attributes$class('MonsterIcon'),
+							$elm$svg$Svg$Events$onMouseOver(
+							A2($author$project$Model$HighlightTableRow, id, text)),
+							$elm$svg$Svg$Events$onMouseOut(
+							A2($author$project$Model$HighlightTableRow, 0, 'Beschreibung')),
+							$elm$svg$Svg$Events$onClick(
+							A2($author$project$Model$DeleteIcon, iconType, id))
+						]),
+					_List_Nil)
+				]);
+		case 'player':
+			return _List_fromArray(
+				[
+					A2(
+					$elm$svg$Svg$text_,
+					_List_fromArray(
+						[
+							$elm$svg$Svg$Attributes$textAnchor('middle'),
+							$elm$svg$Svg$Attributes$x(
+							$elm$core$String$fromFloat(
+								A2(
+									$elm$core$Maybe$withDefault,
+									0,
+									$elm$core$String$toFloat(x)) + 1)),
+							$elm$svg$Svg$Attributes$y(
+							$elm$core$String$fromFloat(
+								A2(
+									$elm$core$Maybe$withDefault,
+									0,
+									$elm$core$String$toFloat(y)) + 2.5)),
+							$elm$svg$Svg$Attributes$dominantBaseline('middle')
+						]),
+					_List_fromArray(
+						[
+							$elm$svg$Svg$text(
+							$elm$core$String$fromInt(id))
+						])),
+					A2(
+					$elm$svg$Svg$image,
+					_List_fromArray(
+						[
+							$elm$svg$Svg$Attributes$style('width:25px;height:25px;'),
+							$elm$svg$Svg$Attributes$x(
+							$elm$core$String$fromFloat(
+								A2(
+									$elm$core$Maybe$withDefault,
+									0,
+									$elm$core$String$toFloat(x)) - 11.5)),
+							$elm$svg$Svg$Attributes$y(
+							$elm$core$String$fromFloat(
+								A2(
+									$elm$core$Maybe$withDefault,
+									0,
+									$elm$core$String$toFloat(y)) - 11.5)),
+							$elm$svg$Svg$Attributes$xlinkHref('res/icons/hero.png'),
+							$elm$svg$Svg$Attributes$class('PlayerIcon'),
+							$elm$svg$Svg$Events$onMouseOver(
+							A2($author$project$Model$HighlightTableRow, id, text)),
+							$elm$svg$Svg$Events$onMouseOut(
+							A2($author$project$Model$HighlightTableRow, 0, 'Beschreibung')),
+							$elm$svg$Svg$Events$onClick(
+							A2($author$project$Model$DeleteIcon, iconType, id))
+						]),
+					_List_Nil)
+				]);
+		case 'object':
+			var _v1 = $author$project$DungeonMap$getIconPath(typeID);
+			if (_v1 === 'custom') {
+				return _List_fromArray(
+					[
+						A2(
+						$elm$svg$Svg$circle,
+						_List_fromArray(
+							[
+								$elm$svg$Svg$Attributes$id(
+								$elm$core$String$fromInt(id)),
+								$elm$svg$Svg$Attributes$cx(x),
+								$elm$svg$Svg$Attributes$cy(y),
+								$elm$svg$Svg$Attributes$r('10'),
+								$elm$svg$Svg$Attributes$style(
+								$author$project$DungeonMap$buildCustomObjectIconStyle(color)),
+								$elm$svg$Svg$Events$onMouseOver(
+								$author$project$Model$ToolTipMsg(text)),
+								$elm$svg$Svg$Events$onMouseOut(
+								$author$project$Model$ToolTipMsg('Beschreibung')),
+								$elm$svg$Svg$Attributes$class('ObjectIcon'),
+								$elm$svg$Svg$Events$onClick(
+								A2($author$project$Model$DeleteIcon, iconType, id))
+							]),
+						_List_Nil)
+					]);
+			} else {
+				return _List_fromArray(
+					[
+						A2(
+						$elm$svg$Svg$image,
+						_List_fromArray(
+							[
+								$elm$svg$Svg$Attributes$style('width:25px;height:25px;'),
+								$elm$svg$Svg$Attributes$x(
+								$elm$core$String$fromFloat(
+									A2(
+										$elm$core$Maybe$withDefault,
+										0,
+										$elm$core$String$toFloat(x)) - 11.5)),
+								$elm$svg$Svg$Attributes$y(
+								$elm$core$String$fromFloat(
+									A2(
+										$elm$core$Maybe$withDefault,
+										0,
+										$elm$core$String$toFloat(y)) - 11.5)),
+								$elm$svg$Svg$Attributes$xlinkHref(
+								$author$project$DungeonMap$getIconPath(typeID)),
+								$elm$svg$Svg$Events$onMouseOver(
+								$author$project$Model$ToolTipMsg(text)),
+								$elm$svg$Svg$Events$onMouseOut(
+								$author$project$Model$ToolTipMsg('Beschreibung')),
+								$elm$svg$Svg$Attributes$class('ObjectIcon'),
+								$elm$svg$Svg$Events$onClick(
+								A2($author$project$Model$DeleteIcon, iconType, id))
+							]),
+						_List_Nil)
+					]);
+			}
+		default:
+			return _List_Nil;
+	}
+};
+var $elm$svg$Svg$rect = $elm$svg$Svg$trustedNode('rect');
+var $elm$svg$Svg$Attributes$width = _VirtualDom_attribute('width');
+var $author$project$DungeonMap$newIconsView = function (addCharacterIcon) {
+	if (addCharacterIcon.$ === 'DrawIcon') {
+		var characterIcon = addCharacterIcon.a;
+		switch (characterIcon.$) {
+			case 'ObjectIcon':
+				var i = characterIcon.a;
+				var x = characterIcon.b;
+				var y = characterIcon.c;
+				var t = characterIcon.d;
+				var c = characterIcon.e;
+				var ident = characterIcon.f;
+				return _List_Nil;
+			case 'PlayerIcon':
+				var i = characterIcon.a;
+				var x = characterIcon.b;
+				var y = characterIcon.c;
+				var n = characterIcon.d;
+				return _Utils_ap(
+					$author$project$DungeonMap$placeIcon(characterIcon),
+					_List_fromArray(
+						[
+							A2(
+							$elm$svg$Svg$rect,
+							_List_fromArray(
+								[
+									$elm$svg$Svg$Attributes$width('800'),
+									$elm$svg$Svg$Attributes$height('600'),
+									$elm$svg$Svg$Attributes$x('0'),
+									$elm$svg$Svg$Attributes$y('0'),
+									$elm$svg$Svg$Attributes$style('fill:blue;stroke:pink;stroke-width:5;fill-opacity:0.1;stroke-opacity:0.9')
+								]),
+							_List_Nil)
+						]));
+			default:
+				var i = characterIcon.a;
+				var x = characterIcon.b;
+				var y = characterIcon.c;
+				var n = characterIcon.d;
+				return _Utils_ap(
+					$author$project$DungeonMap$placeIcon(characterIcon),
+					_List_fromArray(
+						[
+							A2(
+							$elm$svg$Svg$rect,
+							_List_fromArray(
+								[
+									$elm$svg$Svg$Attributes$width('800'),
+									$elm$svg$Svg$Attributes$height('600'),
+									$elm$svg$Svg$Attributes$x('0'),
+									$elm$svg$Svg$Attributes$y('0'),
+									$elm$svg$Svg$Attributes$style('fill:blue;stroke:pink;stroke-width:5;fill-opacity:0.1;stroke-opacity:0.9')
+								]),
+							_List_Nil)
+						]));
+		}
+	} else {
+		return _List_Nil;
+	}
 };
+var $rundis$elm_bootstrap$Bootstrap$Button$onClick = function (message) {
+	return $rundis$elm_bootstrap$Bootstrap$Button$attrs(
+		_List_fromArray(
+			[
+				A2(
+				$elm$html$Html$Events$preventDefaultOn,
+				'click',
+				$elm$json$Json$Decode$succeed(
+					_Utils_Tuple2(message, true)))
+			]));
+};
+var $elm$svg$Svg$svg = $elm$svg$Svg$trustedNode('svg');
 var $author$project$DungeonMap$svgIconList = function (model) {
 	return A3(
 		$elm$core$List$foldl,
@@ -12716,9 +13178,10 @@ var $author$project$DungeonMap$svgIconList = function (model) {
 		_List_Nil,
 		A2(
 			$elm$core$List$map,
-			$author$project$DungeonMap$getAreaParam,
+			$author$project$DungeonMap$placeIcon,
 			_Utils_ap(model.characterList, model.objectIconList)));
 };
+var $elm$svg$Svg$Attributes$title = _VirtualDom_attribute('title');
 var $elm$svg$Svg$Attributes$version = _VirtualDom_attribute('version');
 var $elm$svg$Svg$Attributes$viewBox = _VirtualDom_attribute('viewBox');
 var $author$project$DungeonMap$dungeonMap_Svg = function (model) {
@@ -12774,13 +13237,7 @@ var $author$project$DungeonMap$dungeonMap_Svg = function (model) {
 									$elm$svg$Svg$Attributes$viewBox('0 0 800 600'),
 									$elm$svg$Svg$Attributes$version('1.1')
 								]),
-							_Utils_ap(
-								$author$project$DungeonMap$mouseDrawEvents(model.addCharacterIcon),
-								_Utils_eq(model.addCharacterIcon, $author$project$Model$DrawingInactive) ? _List_fromArray(
-									[
-										$elm$svg$Svg$Events$onClick(
-										$author$project$Model$ShowModal($author$project$Model$ObjectIconModal))
-									]) : _List_Nil)),
+							$author$project$DungeonMap$mouseDrawEvents(model.addCharacterIcon)),
 						_Utils_ap(
 							_List_fromArray(
 								[
@@ -12833,7 +13290,7 @@ var $author$project$DungeonMap$getCharIcon = function (state) {
 		var charIcon = state.a;
 		return charIcon;
 	} else {
-		return A5($author$project$Model$ObjectIcon, 0, '', '', '', $elm$core$Maybe$Nothing);
+		return A6($author$project$Model$ObjectIcon, 0, '', '', '', $elm$core$Maybe$Nothing, 0);
 	}
 };
 var $rundis$elm_bootstrap$Bootstrap$Form$Radio$Inline = {$: 'Inline'};
@@ -12898,7 +13355,6 @@ var $simonh1000$elm_colorpicker$ColorPicker$OnMouseMove = F2(
 	function (a, b) {
 		return {$: 'OnMouseMove', a: a, b: b};
 	});
-var $elm$svg$Svg$Attributes$class = _VirtualDom_attribute('class');
 var $elm$svg$Svg$defs = $elm$svg$Svg$trustedNode('defs');
 var $elm$svg$Svg$Attributes$fill = _VirtualDom_attribute('fill');
 var $elm$svg$Svg$linearGradient = $elm$svg$Svg$trustedNode('linearGradient');
@@ -14261,7 +14717,119 @@ var $rundis$elm_bootstrap$Bootstrap$Grid$row = F2(
 			$rundis$elm_bootstrap$Bootstrap$Grid$Internal$rowAttributes(options),
 			A2($elm$core$List$map, $rundis$elm_bootstrap$Bootstrap$Grid$renderCol, cols));
 	});
+var $rundis$elm_bootstrap$Bootstrap$Form$Textarea$Rows = function (a) {
+	return {$: 'Rows', a: a};
+};
+var $rundis$elm_bootstrap$Bootstrap$Form$Textarea$rows = function (rows_) {
+	return $rundis$elm_bootstrap$Bootstrap$Form$Textarea$Rows(rows_);
+};
 var $elm$html$Html$section = _VirtualDom_node('section');
+var $rundis$elm_bootstrap$Bootstrap$Form$Textarea$Textarea = function (a) {
+	return {$: 'Textarea', a: a};
+};
+var $rundis$elm_bootstrap$Bootstrap$Form$Textarea$create = function (options) {
+	return $rundis$elm_bootstrap$Bootstrap$Form$Textarea$Textarea(
+		{options: options});
+};
+var $elm$html$Html$textarea = _VirtualDom_node('textarea');
+var $rundis$elm_bootstrap$Bootstrap$Form$Textarea$applyModifier = F2(
+	function (modifier, options) {
+		switch (modifier.$) {
+			case 'Id':
+				var id_ = modifier.a;
+				return _Utils_update(
+					options,
+					{
+						id: $elm$core$Maybe$Just(id_)
+					});
+			case 'Rows':
+				var rows_ = modifier.a;
+				return _Utils_update(
+					options,
+					{
+						rows: $elm$core$Maybe$Just(rows_)
+					});
+			case 'Disabled':
+				return _Utils_update(
+					options,
+					{disabled: true});
+			case 'Value':
+				var value_ = modifier.a;
+				return _Utils_update(
+					options,
+					{
+						value: $elm$core$Maybe$Just(value_)
+					});
+			case 'OnInput':
+				var onInput_ = modifier.a;
+				return _Utils_update(
+					options,
+					{
+						onInput: $elm$core$Maybe$Just(onInput_)
+					});
+			case 'Validation':
+				var validation = modifier.a;
+				return _Utils_update(
+					options,
+					{
+						validation: $elm$core$Maybe$Just(validation)
+					});
+			default:
+				var attrs_ = modifier.a;
+				return _Utils_update(
+					options,
+					{
+						attributes: _Utils_ap(options.attributes, attrs_)
+					});
+		}
+	});
+var $rundis$elm_bootstrap$Bootstrap$Form$Textarea$defaultOptions = {attributes: _List_Nil, disabled: false, id: $elm$core$Maybe$Nothing, onInput: $elm$core$Maybe$Nothing, rows: $elm$core$Maybe$Nothing, validation: $elm$core$Maybe$Nothing, value: $elm$core$Maybe$Nothing};
+var $elm$html$Html$Attributes$rows = function (n) {
+	return A2(
+		_VirtualDom_attribute,
+		'rows',
+		$elm$core$String$fromInt(n));
+};
+var $rundis$elm_bootstrap$Bootstrap$Form$Textarea$validationAttribute = function (validation) {
+	return $elm$html$Html$Attributes$class(
+		$rundis$elm_bootstrap$Bootstrap$Form$FormInternal$validationToString(validation));
+};
+var $rundis$elm_bootstrap$Bootstrap$Form$Textarea$toAttributes = function (modifiers) {
+	var options = A3($elm$core$List$foldl, $rundis$elm_bootstrap$Bootstrap$Form$Textarea$applyModifier, $rundis$elm_bootstrap$Bootstrap$Form$Textarea$defaultOptions, modifiers);
+	return _Utils_ap(
+		_List_fromArray(
+			[
+				$elm$html$Html$Attributes$class('form-control'),
+				$elm$html$Html$Attributes$disabled(options.disabled)
+			]),
+		_Utils_ap(
+			A2(
+				$elm$core$List$filterMap,
+				$elm$core$Basics$identity,
+				_List_fromArray(
+					[
+						A2($elm$core$Maybe$map, $elm$html$Html$Attributes$id, options.id),
+						A2($elm$core$Maybe$map, $elm$html$Html$Attributes$rows, options.rows),
+						A2($elm$core$Maybe$map, $elm$html$Html$Attributes$value, options.value),
+						A2($elm$core$Maybe$map, $elm$html$Html$Events$onInput, options.onInput),
+						A2($elm$core$Maybe$map, $rundis$elm_bootstrap$Bootstrap$Form$Textarea$validationAttribute, options.validation)
+					])),
+			options.attributes));
+};
+var $rundis$elm_bootstrap$Bootstrap$Form$Textarea$view = function (_v0) {
+	var options = _v0.a.options;
+	return A2(
+		$elm$html$Html$textarea,
+		$rundis$elm_bootstrap$Bootstrap$Form$Textarea$toAttributes(options),
+		_List_Nil);
+};
+var $rundis$elm_bootstrap$Bootstrap$Form$Textarea$textarea = A2($elm$core$Basics$composeL, $rundis$elm_bootstrap$Bootstrap$Form$Textarea$view, $rundis$elm_bootstrap$Bootstrap$Form$Textarea$create);
+var $rundis$elm_bootstrap$Bootstrap$Form$Textarea$Value = function (a) {
+	return {$: 'Value', a: a};
+};
+var $rundis$elm_bootstrap$Bootstrap$Form$Textarea$value = function (value_) {
+	return $rundis$elm_bootstrap$Bootstrap$Form$Textarea$Value(value_);
+};
 var $rundis$elm_bootstrap$Bootstrap$Grid$Internal$Col4 = {$: 'Col4'};
 var $rundis$elm_bootstrap$Bootstrap$Grid$Internal$ColWidth = function (a) {
 	return {$: 'ColWidth', a: a};
@@ -14299,6 +14867,14 @@ var $author$project$DungeonMap$dungeonMapView = function (model) {
 								_List_Nil,
 								_List_fromArray(
 									[
+										$rundis$elm_bootstrap$Bootstrap$Form$Textarea$textarea(
+										_List_fromArray(
+											[
+												$rundis$elm_bootstrap$Bootstrap$Form$Textarea$rows(1),
+												$rundis$elm_bootstrap$Bootstrap$Form$Textarea$disabled,
+												$rundis$elm_bootstrap$Bootstrap$Form$Textarea$value(model.activeTooltip)
+											])),
+										A2($elm$html$Html$br, _List_Nil, _List_Nil),
 										$author$project$DungeonMap$dungeonMap_Svg(model)
 									])),
 								A2(
diff --git a/src/DungeonMap.elm b/src/DungeonMap.elm
index 2131be07dd7c325961ba6e3c7630a1978c2d5091..29f952e8ada1ce864dc3065d2d96499b6600501f 100644
--- a/src/DungeonMap.elm
+++ b/src/DungeonMap.elm
@@ -16,6 +16,7 @@ import Bootstrap.Button as Button
 import Bootstrap.Modal as Modal
 import Bootstrap.Form.Input as Input
 import Bootstrap.Form.Radio as Radio
+import Bootstrap.Form.Textarea as Textarea
 import Array exposing (Array)
 import File
 import ColorPicker
@@ -30,7 +31,13 @@ dungeonMapView model =
             [ div [ class "section" ]
                   [ Grid.row []
                              [ Grid.col []
-                                        [ dungeonMap_Svg model
+                                        [ Textarea.textarea
+                                            [ Textarea.rows 1
+                                            , Textarea.disabled
+                                            , Textarea.value model.activeTooltip
+                                            ]
+                                        , Html.br [] []
+                                        , dungeonMap_Svg model
                                         ]
                              , Grid.col [ Col.xs4 ]
                                         [ dungeonMap_MonsterList model
@@ -44,7 +51,7 @@ dungeonMapView model =
 dungeonMap_MonsterList : Model -> Html Msg
 dungeonMap_MonsterList model =
     div [ class "container" ]
-        [ Table.table { options = [ Table.striped, Table.hover, Table.bordered, Table.responsive ]
+        [ Table.table { options = [ Table.hover, Table.bordered, Table.responsive ]
                       , thead =  Table.simpleThead
                           [ Table.th [] [ Html.text "ID" ]
                           , Table.th [] [ Html.text "Name" ]
@@ -52,24 +59,26 @@ dungeonMap_MonsterList model =
                           ]
                       , tbody =
                           Table.tbody []
-                            <| characters2rows model.enemy
+                            <| characters2rows model.enemy model.highlightedTableRow
                       }
         ]
 
-characters2rows : Array.Array Character -> List (Table.Row Msg)
-characters2rows chars =
+characters2rows : Array.Array Character -> Int -> List (Table.Row Msg)
+characters2rows chars highlighted =
     List.indexedMap
         (\i c ->
             case c of
                 Enemy name health _ _ _ ->
-                    Table.tr [ Table.rowAttr (stopBubbling (AddCharacterIcon (MouseDraw (MonsterIcon (i+1) "-100" "-100")))) ]
+                    Table.tr ([ Table.rowAttr (stopBubbling (AddCharacterIcon (MouseDraw (MonsterIcon (i+1) "-100" "-100" name)))) ]
+                             ++ if highlighted==i+1 then [ Table.rowSecondary ] else [])
                         [ Table.td [] [Html.text <| String.fromInt (i+1)]
                         , Table.td [] [Html.text name]
                         , Table.td [] [Html.text <| String.fromInt health]
                         ]
 
                 Hero name health ->
-                    Table.tr [ Table.rowAttr (stopBubbling (AddCharacterIcon (MouseDraw (PlayerIcon (i+1) "-100" "-100")))) ]
+                    Table.tr ([ Table.rowAttr (stopBubbling (AddCharacterIcon (MouseDraw (PlayerIcon (i+1) "-100" "-100" name)))) ]
+                             ++ if highlighted==i+1 then [ Table.rowSecondary ] else [])
                         [ Table.td [] [Html.text <| String.fromInt (i+1)]
                         , Table.td [] [Html.text name]
                         , Table.td [] [Html.text <| String.fromInt health]
@@ -93,10 +102,6 @@ dungeonMap_Svg model =
            [ Svg.svg
                 ([ SvgAtt.width "100%", SvgAtt.viewBox "0 0 800 600", SvgAtt.version "1.1" ]
                     ++ mouseDrawEvents model.addCharacterIcon
-                    ++  if model.addCharacterIcon==DrawingInactive
-                        then [ Svg.Events.onClick (ShowModal ObjectIconModal)
-                             ]
-                        else []
                 )
                 ([ Svg.image [ SvgAtt.width "800", SvgAtt.height "600", SvgAtt.title "DungeonMap", SvgAtt.xlinkHref (Maybe.withDefault "" (List.head model.previews)) ] [] ]
                     ++ svgIconList model
@@ -152,7 +157,7 @@ getCharIcon state =
         DrawIcon charIcon ->
             charIcon
 
-        _ -> ObjectIcon 0 "" "" "" Nothing
+        _ -> ObjectIcon 0 "" "" "" Nothing 0
 
 stopBubbling : msg -> Svg.Attribute msg
 stopBubbling msg =
@@ -162,28 +167,99 @@ stopBubbling msg =
 
 svgIconList : Model -> List (Svg.Svg Msg)
 svgIconList model =
-    List.foldl (++) [] (List.map getAreaParam (model.characterList ++ model.objectIconList))
+    List.foldl (++) [] (List.map placeIcon (model.characterList ++ model.objectIconList))
 
-getAreaParam : CharacterIcon -> List (Svg.Svg Msg)
-getAreaParam s =
+placeIcon : CharacterIcon -> List (Svg.Svg Msg)
+placeIcon s =
     let
-      xCor = Maybe.withDefault "0" (List.head (String.split "," (getCoord s)))
-      yCor = Maybe.withDefault "0" (List.head (List.drop 1 (String.split "," (getCoord s))))
+      x = Maybe.withDefault "0" (List.head (String.split "," (getCoord s)))
+      y = Maybe.withDefault "0" (List.head (List.drop 1 (String.split "," (getCoord s))))
       id = getID s
-      objectText = getObjectText s      --Text of an ObjectIcon, for other Icons empty
-      color = getColor s                --Color of a custom ObjectIcon, for others Nothing
+      text = getObjectText s        --Text of an ObjectIcon, for other Icons empty
+      color = getColor s            --Color of a custom ObjectIcon, for others Nothing
+      iconType = getIconType s
+      typeID = getTypeID s
     in
-    placeIcon (getIconType s) id xCor yCor color
+    case iconType of
+        "monster" ->
+            [ Svg.text_ [ SvgAtt.textAnchor "middle"
+                , SvgAtt.x (String.fromFloat (Maybe.withDefault 0 (String.toFloat x) - 3))
+                , SvgAtt.y (String.fromFloat (Maybe.withDefault 0 (String.toFloat y) - 0.5))
+                , SvgAtt.dominantBaseline "middle"
+                ]
+                [ Svg.text (String.fromInt id) ]
+            , Svg.image
+                [ SvgAtt.style "width:30px;height:30px;"
+                , SvgAtt.x (String.fromFloat (Maybe.withDefault 0 (String.toFloat x) - 17.5))
+                , SvgAtt.y (String.fromFloat (Maybe.withDefault 0 (String.toFloat y) - 17.5))
+                , SvgAtt.xlinkHref ("res/icons/enemy.png")
+                , SvgAtt.class "MonsterIcon"
+                , Svg.Events.onMouseOver (HighlightTableRow id text)
+                , Svg.Events.onMouseOut (HighlightTableRow 0 "Beschreibung")
+                , Svg.Events.onClick (DeleteIcon iconType id)
+                ] []
+            ]
+
+        "player" ->
+            [ Svg.text_ [ SvgAtt.textAnchor "middle"
+                , SvgAtt.x (String.fromFloat (Maybe.withDefault 0 (String.toFloat x) + 1))
+                , SvgAtt.y (String.fromFloat (Maybe.withDefault 0 (String.toFloat y) + 2.5))
+                , SvgAtt.dominantBaseline "middle"
+                ]
+                [ Svg.text (String.fromInt id) ]
+            , Svg.image
+                [ SvgAtt.style "width:25px;height:25px;"
+                , SvgAtt.x (String.fromFloat (Maybe.withDefault 0 (String.toFloat x) - 11.5))
+                , SvgAtt.y (String.fromFloat (Maybe.withDefault 0 (String.toFloat y) - 11.5))
+                , SvgAtt.xlinkHref ("res/icons/hero.png")
+                , SvgAtt.class "PlayerIcon"
+                , Svg.Events.onMouseOver (HighlightTableRow id text)
+                , Svg.Events.onMouseOut (HighlightTableRow 0 "Beschreibung")
+                , Svg.Events.onClick (DeleteIcon iconType id)
+                ] []
+            ]
+
+        "object" ->
+            case getIconPath typeID of
+                "custom" -> [ Svg.circle
+                                [ SvgAtt.id (String.fromInt id)
+                                , SvgAtt.cx x
+                                , SvgAtt.cy y
+                                , SvgAtt.r "10"
+                                , SvgAtt.style (buildCustomObjectIconStyle color)
+                                , Svg.Events.onMouseOver (ToolTipMsg text)
+                                , Svg.Events.onMouseOut (ToolTipMsg "Beschreibung")
+                                , SvgAtt.class "ObjectIcon"
+                                , Svg.Events.onClick (DeleteIcon iconType id)
+                                ]
+                                []
+                            ]
+
+
+                _ -> [ Svg.image
+                         [ SvgAtt.style "width:25px;height:25px;"
+                         , SvgAtt.x (String.fromFloat (Maybe.withDefault 0 (String.toFloat x) - 11.5))
+                         , SvgAtt.y (String.fromFloat (Maybe.withDefault 0 (String.toFloat y) - 11.5))
+                         , SvgAtt.xlinkHref (getIconPath typeID)
+                         , Svg.Events.onMouseOver (ToolTipMsg text)
+                         , Svg.Events.onMouseOut (ToolTipMsg "Beschreibung")
+                         , SvgAtt.class "ObjectIcon"
+                         , Svg.Events.onClick (DeleteIcon iconType id)
+                         ] []
+                     ]
+
+        _ ->
+            []
 
 getColor object =
     case object of
-        MonsterIcon i x y ->
+        MonsterIcon i x y n ->
             Nothing
 
-        PlayerIcon i x y ->
+        PlayerIcon i x y n ->
             Nothing
 
-        ObjectIcon i x y t c ->
+        ObjectIcon i x y t c ident ->
             c
 
 getIconPath : Int -> String
@@ -196,46 +272,53 @@ getIconPath id =
 
 getIconType object =
     case object of
-        MonsterIcon i x y ->
+        MonsterIcon i x y n ->
             "monster"
 
-        PlayerIcon i x y ->
+        PlayerIcon i x y n ->
             "player"
 
-        ObjectIcon i x y t c ->
+        ObjectIcon i x y t c ident ->
             "object"
 
 getCoord object =
     case object of
-        MonsterIcon i x y ->
+        MonsterIcon i x y n ->
             x ++ "," ++ y
 
-        PlayerIcon i x y ->
+        PlayerIcon i x y n ->
             x ++ "," ++ y
 
-        ObjectIcon i x y t c ->
+        ObjectIcon i x y t c ident ->
             x ++ "," ++ y
 
 getID object =
     case object of
-        MonsterIcon i x y ->
+        MonsterIcon i x y n ->
             i
 
-        PlayerIcon i x y ->
+        PlayerIcon i x y n ->
             i
 
-        ObjectIcon i x y t c ->
+        ObjectIcon i x y t c ident ->
+            ident
+
+getTypeID object =
+    case object of
+        ObjectIcon i x y t c ident ->
             i
 
+        _ ->
+            0
+
 getObjectText object =
     case object of
-        MonsterIcon i x y ->
-            ""
+        MonsterIcon i x y name ->
+            name
 
-        PlayerIcon i x y ->
-            ""
-
-        ObjectIcon i x y t c ->
+        PlayerIcon i x y name ->
+            name
+        ObjectIcon i x y t c ident ->
             t
 
 
@@ -311,23 +394,23 @@ mouseDrawEvents addCharacterIcon =
     case addCharacterIcon of
         DrawIcon characterIcon ->
             case characterIcon of
-                PlayerIcon i x y ->
+                PlayerIcon i x y n ->
                     [ Svg.Events.onClick (AddCharacterIcon (MouseClick characterIcon))
-                    , onMouseMove (positionToCircleCenter i)
+                    , onMouseMove (positionToIconCenter "player" n i)
                     ]
 
-                MonsterIcon i x y ->
+                MonsterIcon i x y n ->
                     [ Svg.Events.onClick (AddCharacterIcon (MouseClick characterIcon))
-                    , onMouseMove (positionToRectangleCorner i)
+                    , onMouseMove (positionToIconCenter "monster" n i)
                     ]
 
-                ObjectIcon i x y t c ->
+                ObjectIcon i x y t c ident ->
                     [ Svg.Events.onClick (ShowModal ObjectIconModal)
-                    , onMouseMove (positionToIconCenter i)
+                    , onMouseMove (positionToIconCenter "object" "" i)
                     ]
 
         DrawingInactive ->
-                [ onMouseMove (positionToIconCenter 0)
+                [ onMouseMove (positionToIconCenter "object" "" 0)
                 ]
 
 
@@ -342,29 +425,31 @@ mousePosition =
         (Json.Decode.at [ "detail", "x" ] Json.Decode.float)
         (Json.Decode.at [ "detail", "y" ] Json.Decode.float)
 
-positionToCircleCenter : Int -> MousePosition -> Msg
-positionToCircleCenter i position =
-    AddCharacterIcon (MouseDraw (PlayerIcon i (String.fromFloat position.x) (String.fromFloat position.y)))
+positionToIconCenter : String -> String -> Int -> MousePosition -> Msg
+positionToIconCenter icon name i position =
+    case icon of
+        "player" ->
+            AddCharacterIcon (MouseDraw (PlayerIcon i (String.fromFloat position.x) (String.fromFloat position.y) name))
 
+        "monster" ->
+            AddCharacterIcon (MouseDraw (MonsterIcon i (String.fromFloat position.x) (String.fromFloat position.y) name))
 
-positionToRectangleCorner : Int -> MousePosition -> Msg
-positionToRectangleCorner i position =
-    AddCharacterIcon (MouseDraw (MonsterIcon i (String.fromFloat position.x) (String.fromFloat position.y)))
+        "object" ->
+            AddCharacterIcon (MouseDraw (ObjectIcon i (String.fromFloat position.x) (String.fromFloat position.y) "" Nothing 0 ))
 
-positionToIconCenter : Int -> MousePosition -> Msg
-positionToIconCenter i position =
-    AddCharacterIcon (MouseDraw (ObjectIcon i (String.fromFloat position.x) (String.fromFloat position.y) "" Nothing ))
+        _ ->
+            DoNothing
 
 newIconsView : AddCharacterIconState -> List (Svg.Svg Msg)
 newIconsView addCharacterIcon =
     case addCharacterIcon of
         DrawIcon characterIcon ->
             case characterIcon of
-                ObjectIcon i x y t c ->
+                ObjectIcon i x y t c ident ->
                     []
 
-                PlayerIcon i x y ->
-                    (placeIcon "player" i x y Nothing)
+                PlayerIcon i x y n ->
+                    (placeIcon characterIcon)
                         ++  [ Svg.rect
                                 [ SvgAtt.width "800"
                                 , SvgAtt.height "600"
@@ -375,8 +460,8 @@ newIconsView addCharacterIcon =
                                 []
                             ]
 
-                MonsterIcon i x y ->
-                    (placeIcon "monster" i x y Nothing)
+                MonsterIcon i x y n ->
+                    (placeIcon characterIcon)
                         ++  [ Svg.rect
                                 [ SvgAtt.width "800"
                                 , SvgAtt.height "600"
diff --git a/src/Main.elm b/src/Main.elm
index 97f512f1fe2e2eae889c8bc5291bc9ea09cd5798..7fb4bf196b18ef0b51e86612e0cb12ec455b7a47 100644
--- a/src/Main.elm
+++ b/src/Main.elm
@@ -103,14 +103,14 @@ update msg model =
 
         ChangeIcon id ->
             case model.addCharacterIcon of
-                DrawIcon (ObjectIcon i x y t c) ->
+                DrawIcon (ObjectIcon i x y t c ident) ->
                     case id of
-                        3 -> ( { model | addCharacterIcon = DrawIcon (ObjectIcon id x y t c)
+                        3 -> ( { model | addCharacterIcon = DrawIcon (ObjectIcon id x y t c ident)
                                        , radioCheckedID = id }
                              , Cmd.none
                              )
 
-                        _ -> ( { model | addCharacterIcon = DrawIcon (ObjectIcon id x y t Nothing)
+                        _ -> ( { model | addCharacterIcon = DrawIcon (ObjectIcon id x y t Nothing ident)
                                        , radioCheckedID = id }
                              , Cmd.none
                              )
@@ -148,18 +148,18 @@ update msg model =
             case addCharacterIconMsg of
                 MouseClick characterIcon ->
                     case characterIcon of
-                        PlayerIcon i x y ->
+                        PlayerIcon i x y n ->
                             if List.length model.characterList == List.length (List.filter (isNotId i) model.characterList)     --wenn character mit ID noch nicht in Liste
                             then    ( { model | characterList = model.characterList ++ [ characterIcon ], addCharacterIcon = DrawingInactive }, Cmd.none )
                             else    ( { model | addCharacterIcon = DrawingInactive }, Cmd.none )
 
-                        MonsterIcon i x y ->
+                        MonsterIcon i x y n ->
                             if List.length model.characterList == List.length (List.filter (isNotId i) model.characterList)     --wenn character mit ID noch nicht in Liste
                             then    ( { model | characterList = model.characterList ++ [ characterIcon ], addCharacterIcon = DrawingInactive }, Cmd.none )
                             else    ( { model | addCharacterIcon = DrawingInactive }, Cmd.none )
 
-                        ObjectIcon i x y t c ->
-                            ( { model | objectIconList = model.objectIconList ++ [ ObjectIcon i x y model.iconText (Just model.colour) ]
+                        ObjectIcon i x y t c ident ->
+                            ( { model | objectIconList = (generateObjectIdents (model.objectIconList ++ [ ObjectIcon i x y model.iconText (Just model.colour) ident ]))
                                       , addCharacterIcon = DrawingInactive
                                       , showObjectIconModal = Modal.hidden
                                       , iconText = ""
@@ -168,18 +168,18 @@ update msg model =
 
                 MouseDraw characterIcon ->
                     case characterIcon of
-                        PlayerIcon i x y ->
+                        PlayerIcon i x y name ->
                             if List.length model.characterList > List.length (List.filter (isNotId i) model.characterList)     --wenn character mit ID bereits in Liste
                             then    ( { model | characterList = List.filter (isNotId i) model.characterList, addCharacterIcon = DrawingInactive }, Cmd.none )
-                            else    ( { model | addCharacterIcon = DrawIcon (PlayerIcon i x y) }, Cmd.none )
+                            else    ( { model | addCharacterIcon = DrawIcon (PlayerIcon i x y name) }, Cmd.none )
 
-                        MonsterIcon i x y ->
+                        MonsterIcon i x y name ->
                             if List.length model.characterList > List.length (List.filter (isNotId i) model.characterList)     --wenn character mit ID bereits in Liste
                             then    ( { model | characterList = List.filter (isNotId i) model.characterList, addCharacterIcon = DrawingInactive }, Cmd.none )
-                            else    ( { model | addCharacterIcon = DrawIcon (MonsterIcon i x y) }, Cmd.none )
+                            else    ( { model | addCharacterIcon = DrawIcon (MonsterIcon i x y name) }, Cmd.none )
 
-                        ObjectIcon i x y t c ->
-                            ( { model | addCharacterIcon = DrawIcon (ObjectIcon i x y t c) }, Cmd.none )
+                        ObjectIcon i x y t c ident ->
+                            ( { model | addCharacterIcon = DrawIcon (ObjectIcon i x y t c ident) }, Cmd.none )
 
                     --( { model | addCharacterIcon = DrawIcon s, characterList = (giveDungeonMap_CharacterIds model.characterList) }, Cmd.none )
 
@@ -214,7 +214,9 @@ update msg model =
                     ( { model | showCustomEnemy = Modal.shown } , Cmd.none )
 
                 ObjectIconModal ->
-                    ( { model | showObjectIconModal = Modal.shown } , Cmd.none )
+                    ( { model | showObjectIconModal =   if model.mouseInIcon then Modal.hidden else Modal.shown
+                              , mouseInIcon = False }
+                    , Cmd.none )
 
         ShowAttackModal id->
             ( { model | showAttackModal = Modal.shown , characterId = id} , Cmd.none )
@@ -251,17 +253,52 @@ update msg model =
 
         ColorPickerMsg cpMsg ->
             case model.addCharacterIcon of
-                DrawIcon (ObjectIcon i x y t c) ->  let
-                                                        ( m, colour ) = ColorPicker.update cpMsg model.colour model.colorPicker
-                                                    in
-                                                        ( { model | colorPicker = m
-                                                                  , colour = colour |> Maybe.withDefault model.colour
-                                                          }
-                                                        , Cmd.none
-                                                        )
+                DrawIcon (ObjectIcon i x y t c ident) ->    let
+                                                                ( m, colour ) = ColorPicker.update cpMsg model.colour model.colorPicker
+                                                            in
+                                                            ( { model | colorPicker = m
+                                                                      , colour = colour |> Maybe.withDefault model.colour
+                                                              }
+                                                            , Cmd.none
+                                                            )
 
                 _ -> ( model, Cmd.none )
 
+        ToolTipMsg tooltip ->
+            case tooltip of
+                "" ->   ( { model | activeTooltip = "Beschreibung"
+                                  , mouseInIcon = (if tooltip=="Beschreibung" then False else True) }
+                        , Cmd.none
+                        )
+
+                _ ->    ( { model | activeTooltip = tooltip
+                                  , mouseInIcon = (if tooltip=="Beschreibung" then False else True) }
+                        , Cmd.none
+                        )
+
+        HighlightTableRow id name ->
+            ( { model | highlightedTableRow = id
+                      , activeTooltip = name
+                      , mouseInIcon = (if id==0 then False else True) }
+            , Cmd.none
+            )
+
+        DeleteIcon iconType id ->
+            case iconType of
+                "object" ->
+                    ( { model | objectIconList = List.filter (isNotId id) model.objectIconList
+                              , activeTooltip = "Beschreibung" }
+                    , Cmd.none
+                    )
+
+
+                _ ->
+                    ( { model | characterList = List.filter (isNotId id) model.characterList
+                              , highlightedTableRow = 0
+                              , activeTooltip = "Beschreibung" }
+                    , Cmd.none
+                    )
+
 view : Model -> Html Msg
 view model =
     div [Html.Attributes.class "wrapper textFont", Html.Attributes.style "height" "100%"]
@@ -315,18 +352,30 @@ giveDungeonMap_CharacterIds charList =
 putIdInCharIcon : Int -> CharacterIcon -> CharacterIcon
 putIdInCharIcon id charIcon =
     case charIcon of
-        PlayerIcon _ x y -> PlayerIcon (id+1) x y
-        MonsterIcon _ x y -> MonsterIcon (id+1) x y
-        ObjectIcon _ x y t c -> ObjectIcon (id+1) x y t c
+        PlayerIcon _ x y n -> PlayerIcon (id+1) x y n
+        MonsterIcon _ x y n -> MonsterIcon (id+1) x y n
+        ObjectIcon _ x y t c ident -> ObjectIcon (id+1) x y t c ident
 
 isNotId : Int -> CharacterIcon -> Bool
 isNotId id s =
     case s of
-        MonsterIcon i _ _ ->
+        MonsterIcon i _ _ _ ->
             id/=i
 
-        PlayerIcon i _ _ ->
+        PlayerIcon i _ _ _ ->
             id/=i
 
-        ObjectIcon i _ _ _ _->
-            id/=i
+        ObjectIcon _ _ _ _ _ ident ->
+            id/=ident
+
+generateObjectIdents : List CharacterIcon -> List CharacterIcon
+generateObjectIdents list =
+    List.indexedMap
+        (\id char ->
+            case char of
+                ObjectIcon typeID x y t c ident ->
+                    ObjectIcon typeID x y t c (id+1)
+
+                _ ->
+                    ObjectIcon 0 "" "" "" Nothing 0
+        ) list
diff --git a/src/Model.elm b/src/Model.elm
index 0e2d5e73af1dda53ccf4615cc6ca0ff7e6583330..9a435f8184341e06804052e6359fd7f1ca6673dd 100644
--- a/src/Model.elm
+++ b/src/Model.elm
@@ -5,6 +5,7 @@ module Model exposing (..)
 import Bootstrap.Tab as Tab
 import Bootstrap.Dropdown as Dropdown
 import Bootstrap.Modal as Modal
+import Bootstrap.Form.Textarea as Textarea
 import Http
 import Array
 import Array.Extra as Array
@@ -41,6 +42,9 @@ type alias Model =
     , colorPicker : ColorPicker.State
     , colour : Color.Color
     , radioCheckedID : Int
+    , activeTooltip : String
+    , highlightedTableRow : Int
+    , mouseInIcon : Bool
     }
 
 init : () -> (Model, Cmd Msg)
@@ -74,6 +78,9 @@ init _ =
         , colorPicker = ColorPicker.empty
         , colour = Color.rgb 255 0 0
         , radioCheckedID = 0
+        , activeTooltip = "Tooltip"
+        , highlightedTableRow = 0
+        , mouseInIcon = False
         }
     , Cmd.none
     )
@@ -115,6 +122,9 @@ type Msg
     | ChangeIconText String
     | ChangeIcon Int
     | ColorPickerMsg ColorPicker.Msg
+    | ToolTipMsg String
+    | HighlightTableRow Int String
+    | DeleteIcon String Int
 
 type ModalType
     = AttackModal
@@ -143,10 +153,11 @@ type AddCharacterIconMsg
     | MouseClick CharacterIcon
 
 type CharacterIcon
-    = PlayerIcon Int String String
-    | MonsterIcon Int String String
-    | ObjectIcon Int String String String (Maybe Color.Color)
-    --       type-ID x-coord y-coord Text custom-color
+    = PlayerIcon Int String String String
+    | MonsterIcon Int String String String
+    --            ID  x-coord y-coord name
+    | ObjectIcon Int     String  String  String (Maybe Color.Color) Int
+    --           type-ID x-coord y-coord Text custom-color          ident
     -- ID in ObjectIcon type is not an identifier for a concrete ObjectIcon, its an identifier for the used png
 
 type alias MousePosition =