Index: binary-improvements2/7dtd-server-fixes/src/JSON/JSONBoolean.cs
===================================================================
--- binary-improvements2/7dtd-server-fixes/src/JSON/JSONBoolean.cs	(revision 386)
+++ binary-improvements2/7dtd-server-fixes/src/JSON/JSONBoolean.cs	(revision 389)
@@ -34,4 +34,8 @@
 			throw new MalformedJSONException ("No valid boolean found");
 		}
+
+		public override string AsString => value ? "true" : "false";
+		public override int AsInt => value ? 1 : 0;
+		public override double AsDouble => AsInt;
 	}
 }
Index: binary-improvements2/7dtd-server-fixes/src/JSON/JSONNull.cs
===================================================================
--- binary-improvements2/7dtd-server-fixes/src/JSON/JSONNull.cs	(revision 386)
+++ binary-improvements2/7dtd-server-fixes/src/JSON/JSONNull.cs	(revision 389)
@@ -1,2 +1,3 @@
+using System;
 using System.Text;
 
@@ -18,4 +19,8 @@
 			return new JSONNull ();
 		}
+
+		public override string AsString => throw new NotSupportedException ();
+		public override int AsInt => throw new NotSupportedException ();
+		public override double AsDouble => throw new NotSupportedException ();
 	}
 }
Index: binary-improvements2/7dtd-server-fixes/src/JSON/JSONNumber.cs
===================================================================
--- binary-improvements2/7dtd-server-fixes/src/JSON/JSONNumber.cs	(revision 386)
+++ binary-improvements2/7dtd-server-fixes/src/JSON/JSONNumber.cs	(revision 389)
@@ -109,4 +109,8 @@
 			throw new MalformedJSONException ("End of JSON reached before parsing number finished");
 		}
+
+		public override string AsString => value.ToCultureInvariantString ();
+		public override int AsInt => GetInt ();
+		public override double AsDouble => value;
 	}
 }
Index: binary-improvements2/7dtd-server-fixes/src/JSON/JSONObject.cs
===================================================================
--- binary-improvements2/7dtd-server-fixes/src/JSON/JSONObject.cs	(revision 386)
+++ binary-improvements2/7dtd-server-fixes/src/JSON/JSONObject.cs	(revision 389)
@@ -7,18 +7,18 @@
 
 		public JSONNode this [string _name] {
-			get { return nodes [_name]; }
-			set { nodes [_name] = value; }
+			get => nodes [_name];
+			set => nodes [_name] = value;
 		}
 
-		public int Count {
-			get { return nodes.Count; }
-		}
+		public int Count => nodes.Count;
 
-		public List<string> Keys {
-			get { return new List<string> (nodes.Keys); }
-		}
+		public List<string> Keys => new List<string> (nodes.Keys);
 
 		public bool ContainsKey (string _name) {
 			return nodes.ContainsKey (_name);
+		}
+
+		public bool TryGetValue (string _name, out JSONNode _node) {
+			return nodes.TryGetValue (_name, out _node);
 		}
 
Index: binary-improvements2/7dtd-server-fixes/src/JSON/JSONString.cs
===================================================================
--- binary-improvements2/7dtd-server-fixes/src/JSON/JSONString.cs	(revision 386)
+++ binary-improvements2/7dtd-server-fixes/src/JSON/JSONString.cs	(revision 389)
@@ -114,4 +114,8 @@
 			throw new MalformedJSONException ("End of JSON reached before parsing string finished");
 		}
+
+		public override string AsString => value;
+		public override int AsInt => int.Parse (value);
+		public override double AsDouble => double.Parse (value);
 	}
 }
Index: binary-improvements2/7dtd-server-fixes/src/JSON/JSONValue.cs
===================================================================
--- binary-improvements2/7dtd-server-fixes/src/JSON/JSONValue.cs	(revision 386)
+++ binary-improvements2/7dtd-server-fixes/src/JSON/JSONValue.cs	(revision 389)
@@ -1,4 +1,7 @@
 ﻿namespace AllocsFixes.JSON {
 	public abstract class JSONValue : JSONNode {
+		public abstract string AsString { get; }
+		public abstract int AsInt { get; }
+		public abstract double AsDouble { get; }
 	}
 }
