 	}
 }
 
-/// This class is a reference based wrapper around `Array<AnyObject>`
+/// This class is a reference based wrapper around `Array<JSONValue>`
 /// JSON data which is being decoded will have these object as part of the contents of the resulting data.
 public class JSONArrayType {
 	
 	/// Provides access to the underlying array
-	public var array = Array<AnyObject>()
-	
-	subscript (index: Int) -> Array<AnyObject>.Element {
+	public var array = Array<JSONValue>()
+	
+	subscript (index: Int) -> Array<JSONValue>.Element {
 		return array[index]
 	}
 	
 	/// Pass-through function which appends to the array.
-	public func append(a: AnyObject) {
+	public func append(a: JSONValue) {
 		array.append(a)
 	}
 }
 
-/// This class is a referenced based wrapper around `Dictionary<String, AnyObject>`
+/// This class is a referenced based wrapper around `Dictionary<String, JSONValue>`
 /// JSON data which is being decoded will have these object as part of the contents of the resulting data.
 public class JSONDictionaryType {
 	
-	public typealias DictionaryType = Dictionary<String, AnyObject>
+	public typealias DictionaryType = Dictionary<JSONKey, JSONValue>
 	public typealias Key = DictionaryType.Key
 	public typealias Value = DictionaryType.Value
 	

/// - `JSONDictionary`
public class JSONDecode {
	
	var stack = Array<AnyObject>()
	var exit: AnyObject?
	
	var g = String().unicodeScalars.generate()
	var pushBack: UnicodeScalar?

		throw JSONError.SyntaxError("Unterminated string literal")
	}
	
	func readNumber(firstChar: UnicodeScalar) throws -> JSONValue {
		var s = ""
		var needPeriod = true, needExp = true
		s.append(firstChar)
