Index: binary-improvements/MapRendering/Web/Handlers/ApiHandler.cs
===================================================================
--- binary-improvements/MapRendering/Web/Handlers/ApiHandler.cs	(revision 325)
+++ binary-improvements/MapRendering/Web/Handlers/ApiHandler.cs	(revision 326)
@@ -7,5 +7,5 @@
 namespace AllocsFixes.NetConnections.Servers.Web.Handlers {
 	public class ApiHandler : PathHandler {
-		private readonly Dictionary<string, WebAPI> apis = new Dictionary<string, WebAPI> ();
+		private readonly Dictionary<string, WebAPI> apis = new CaseInsensitiveStringDictionary<WebAPI> ();
 		private readonly string staticPart;
 
@@ -18,5 +18,5 @@
 					if (ctor != null) {
 						WebAPI apiInstance = (WebAPI) ctor.Invoke (new object [0]);
-						addApi (t.Name.ToLower (), apiInstance);
+						addApi (apiInstance.Name, apiInstance);
 					}
 				}
@@ -52,18 +52,17 @@
 			}
 
-			foreach (KeyValuePair<string, WebAPI> kvp in apis) {
-				if (apiName.StartsWith (kvp.Key)) {
-					try {
-						kvp.Value.HandleRequest (req, resp, user, permissionLevel);
-						return;
-					} catch (Exception e) {
-						Log.Error ("Error in ApiHandler.HandleRequest(): Handler {0} threw an exception:", kvp.Key);
-						Log.Exception (e);
-						resp.StatusCode = (int) HttpStatusCode.InternalServerError;
-						return;
-					}
+			WebAPI api;
+			if (apis.TryGetValue (apiName, out api)) {
+				try {
+					api.HandleRequest (req, resp, user, permissionLevel);
+					return;
+				} catch (Exception e) {
+					Log.Error ("Error in ApiHandler.HandleRequest(): Handler {0} threw an exception:", api.Name);
+					Log.Exception (e);
+					resp.StatusCode = (int) HttpStatusCode.InternalServerError;
+					return;
 				}
 			}
-
+			
 			Log.Out ("Error in ApiHandler.HandleRequest(): No handler found for API \"" + apiName + "\"");
 			resp.StatusCode = (int) HttpStatusCode.NotFound;
Index: binary-improvements/MapRendering/Web/Handlers/ItemIconHandler.cs
===================================================================
--- binary-improvements/MapRendering/Web/Handlers/ItemIconHandler.cs	(revision 325)
+++ binary-improvements/MapRendering/Web/Handlers/ItemIconHandler.cs	(revision 326)
@@ -37,5 +37,5 @@
 			requestFileName = requestFileName.Remove (requestFileName.LastIndexOf ('.'));
 
-			if (icons.ContainsKey (requestFileName) && req.Url.AbsolutePath.ToLower ().EndsWith (".png")) {
+			if (icons.ContainsKey (requestFileName) && req.Url.AbsolutePath.EndsWith (".png", StringComparison.OrdinalIgnoreCase)) {
 				resp.ContentType = MimeType.GetMimeType (".png");
 
@@ -128,5 +128,5 @@
 							foreach (string file in Directory.GetFiles (modIconsPath)) {
 								try {
-									if (file.ToLower ().EndsWith (".png")) {
+									if (file.EndsWith (".png", StringComparison.OrdinalIgnoreCase)) {
 										string name = Path.GetFileNameWithoutExtension (file);
 										Texture2D tex = new Texture2D (1, 1, TextureFormat.ARGB32, false);
