         return result
     }
     
-    public func JSONValueForKey<A: JSONValueType>(key: Key) throws -> [A] {
+    public func valueForKey<A: JSONValue>(key: String) throws -> [A] {
         let any = try anyForKey(key)
         return try Array<A>.JSONValue(any)
     }
     
-    public func JSONValueForKey<A: JSONValueType>(key: Key) throws -> A? {
+    public func valueForKey<A: JSONValue>(key: String) throws -> A? {
         do {
-            return try self.JSONValueForKey(key) as A
+            return try self.valueForKey(key) as A
         }
         catch JSONError.KeyNotFound {
             return nil

    }
}

extension NSURL: JSONValueType {
    public static func JSONValue(object: Any) throws -> NSURL {
        guard let urlString = object as? String, objectValue = NSURL(string: urlString) else {
            throw JSONError.TypeMismatch(expected: self, actual: object.dynamicType)

            throw error
        }
    }
}

extension JSONObject: CustomStringConvertible {
    public var description: String {
        return dictionary.description
    }
}

extension JSONObject: CustomDebugStringConvertible {
    public var debugDescription: String {
        return dictionary.debugDescription
    }
}