 }
 
 class KeyPair {
-	let key: String
-	var value: AnyObject?
-	
-	init(key: String) {
+	let key: JSONKey
+	var value: JSONValue?
+	
+	init(key: JSONKey) {
 		self.key = key
 	}
 }

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

		return s
	}
	
	func encodeValue(value: JSONValue) throws -> String {
		
		switch(value) {
		case let i as Int:
