 
 public protocol JSONDecodable {
     associatedtype ConversionType = Self
-    static func fromJSON(_ x: JSONValue) -> ConversionType?
+    static func fromJSON(_ json: JSONValue) -> ConversionType?
 }
 
 public protocol JSONEncodable {
     associatedtype ConversionType
-    static func toJSON(_ x: ConversionType) -> JSONValue
+    static func toJSON(_ val: ConversionType) -> JSONValue
 }
 
 public protocol JSONable: JSONDecodable, JSONEncodable { }
 
 extension Dictionary: JSONable {
     public typealias ConversionType = Dictionary<String, Value>
-    public static func fromJSON(_ x: JSONValue) -> Dictionary.ConversionType? {
-        switch x {
+    public static func fromJSON(_ json: JSONValue) -> Dictionary.ConversionType? {
+        switch json {
         case .object:
-            return x.values() as? Dictionary<String, Value>
+            return json.values() as? Dictionary<String, Value>
         default:
             return nil
         }
     }
     
-    public static func toJSON(_ x: Dictionary.ConversionType) -> JSONValue {
+    public static func toJSON(_ dict: Dictionary.ConversionType) -> JSONValue {
         do {
-            return try JSONValue(dict: x)
+            return try JSONValue(dict: dict)
         } catch {
             return JSONValue.null
         }

        }
    }
    
    public class func toJSON(_ x: NSNumber) -> JSONValue {
        if x.isBool {
            return JSONValue.bool(x.boolValue)
        }
        else {
            return JSONValue.number(.fraction(x.doubleValue))
        }
    }
}

extension String: JSONable {
    public static func fromJSON(_ x: JSONValue) -> String? {
        switch x {
        case let .string(n):
            return n
        default:

}

extension Bool: JSONable {
    public static func fromJSON(_ json: JSONValue) -> Bool? {
        switch json {
        case let .bool(b):
            return b
        case .number(.int(0)):
            return false
        case .number(.int(1)):
