Index: binary-improvements2/MarkersMod/src/Markers.cs
===================================================================
--- binary-improvements2/MarkersMod/src/Markers.cs	(revision 426)
+++ binary-improvements2/MarkersMod/src/Markers.cs	(revision 430)
@@ -12,5 +12,8 @@
 		private const int numRandomMarkers = 5;
 
-		private readonly Dictionary<string, (int, int)> markers = new Dictionary<string, (int, int)> ();
+		private const string defaultIcon =
+			"https://upload.wikimedia.org/wikipedia/commons/thumb/1/11/Blue_question_mark_icon.svg/1200px-Blue_question_mark_icon.svg.png";
+		
+		private readonly Dictionary<string, (int, int, string)> markers = new Dictionary<string, (int, int, string)> ();
 
 		public Markers () {
@@ -21,5 +24,5 @@
 				int lng = random.RandomRange (-1000, 1001);
 
-				markers.Add (WebUtils.GenerateGuid (), (lat, lng));
+				markers.Add (WebUtils.GenerateGuid (), (lat, lng, null));
 			}
 		}
@@ -28,4 +31,5 @@
 		private static readonly byte[] jsonKeyLat = JsonWriter.GetEncodedPropertyNameWithPrefixValueSeparator ("lat");
 		private static readonly byte[] jsonKeyLng = JsonWriter.GetEncodedPropertyNameWithPrefixValueSeparator ("lng");
+		private static readonly byte[] jsonKeyIcon = JsonWriter.GetEncodedPropertyNameWithPrefixValueSeparator ("icon");
 
 		protected override void HandleRestGet (RequestContext _context) {
@@ -38,5 +42,5 @@
 
 				bool first = true;
-				foreach ((string markerId, (int, int) coordinates) in markers) {
+				foreach ((string markerId, (int, int, string) properties) in markers) {
 					if (!first) {
 						writer.WriteValueSeparator ();
@@ -45,5 +49,5 @@
 					first = false;
 					
-					writeMarkerJson (ref writer, markerId, coordinates);
+					writeMarkerJson (ref writer, markerId, properties);
 				}
 
@@ -53,5 +57,5 @@
 			}
 
-			if (!markers.TryGetValue (id, out (int, int) location)) {
+			if (!markers.TryGetValue (id, out (int, int, string) properties2)) {
 				writer.WriteRaw (JsonEmptyData);
 				SendEnvelopedResult (_context, ref writer, HttpStatusCode.NotFound);
@@ -62,5 +66,5 @@
 				writer.WriteBeginArray ();
 				
-				writeMarkerJson (ref writer, id, location);
+				writeMarkerJson (ref writer, id, properties2);
 				
 				writer.WriteEndArray ();
@@ -69,11 +73,13 @@
 		}
 
-		private void writeMarkerJson (ref JsonWriter _writer, string _markerId, (int, int) _coordinates) {
+		private void writeMarkerJson (ref JsonWriter _writer, string _markerId, (int, int, string) _properties) {
 			_writer.WriteRaw (jsonKeyId);
 			_writer.WriteString (_markerId);
 			_writer.WriteRaw (jsonKeyLat);
-			_writer.WriteInt32 (_coordinates.Item1);
+			_writer.WriteInt32 (_properties.Item1);
 			_writer.WriteRaw (jsonKeyLng);
-			_writer.WriteInt32 (_coordinates.Item2);
+			_writer.WriteInt32 (_properties.Item2);
+			_writer.WriteRaw (jsonKeyIcon);
+			_writer.WriteString (_properties.Item3 ?? defaultIcon);
 			_writer.WriteEndObject ();
 		}
@@ -90,6 +96,11 @@
 			}
 
+			TryGetJsonField (_jsonInput, "icon", out string icon);
+			if (string.IsNullOrEmpty (icon)) {
+				icon = null;
+			}
+
 			string newId = WebUtils.GenerateGuid ();
-			markers.Add (newId, (lat, lng));
+			markers.Add (newId, (lat, lng, icon));
 
 			PrepareEnvelopedResult (out JsonWriter writer);
@@ -109,12 +120,21 @@
 			}
 
+			bool keepIcon = !_jsonInput.TryGetValue ("icon", out _);
+			TryGetJsonField (_jsonInput, "icon", out string icon);
+			if (string.IsNullOrEmpty (icon)) {
+				icon = null;
+			}
+
 			string id = _context.RequestPath;
 
-			if (!markers.TryGetValue (id, out _)) {
+			if (!markers.TryGetValue (id, out (int, int, string) properties)) {
 				SendErrorResult (_context, HttpStatusCode.NotFound, _jsonInputData, "ID_NOT_FOUND");
 				return;
 			}
-			
-			markers [id] = (lat, lng);
+
+			if (keepIcon) {
+				icon = properties.Item3;
+			}
+			markers [id] = (lat, lng, icon);
 
 			PrepareEnvelopedResult (out JsonWriter writer);
@@ -125,4 +145,6 @@
 			writer.WriteRaw (jsonKeyLng);
 			writer.WriteInt32 (lng);
+			writer.WriteRaw (jsonKeyIcon);
+			writer.WriteString (icon);
 			writer.WriteEndObject ();
 			SendEnvelopedResult (_context, ref writer);
