     }
 }
 
+// MARK: - String
+
 extension JSON {
     /// The value as a string or nil if not present/convertible
     public subscript(key: JSONKey<String?>) -> String? {

    public subscript(key: JSONKey<Bool>) -> Bool {
        return self[key.type].boolValue
    }
    
    /// The value as a 64-bit signed integer or nil if not present/convertible
    public subscript(key: JSONKey<Int?>) -> Int? {
        return self[key.type].int

    public subscript(key: JSONKey<CGFloat>) -> CGFloat {
        return self[key.type].cgFloatValue
    }
}

extension JSON {
    /// The value as JSON
    public subscript(key: JSONKey<JSON>) -> JSON {
        return self[key.type]
    }
}

// MARK: - NSURL

extension JSON {
    /// The value as NSURL?
    public subscript(key: JSONKey<NSURL?>) -> NSURL? {
        return self[key.type].nsURL
