     case JSONString
     case JSONNumber
     case JSONBool
+    case JSONStringOptional
+    case JSONNumberOptional
 }
 
 public extension JSONValue {

                return true
            }
            
        case let .JSONDictionary(descriptionDictionary):
            
            var isValid = true

            if let dictionary = self.asDictionary() {
                
                for (key, value) in descriptionDictionary {
                        if dictionary[key] != nil && !dictionary[key]!.matchesDescription(value) {
                            isValid = false
                        }
                }
                
            } else {
