      */
     public init<V: QueryableAttributeType>(_ keyPath: KeyPath<D, V>, isEqualTo value: V?) {
         
-        switch value {
-            
-        case nil,
-             is NSNull:
-            self.init(NSPredicate(format: "\(keyPath._kvcKeyPathString!) == nil"))
-            
-        case let value?:
-            self.init(NSPredicate(format: "\(keyPath._kvcKeyPathString!) == %@", argumentArray: [value.cs_toQueryableNativeType()]))
-        }
+        self.init(keyPath._kvcKeyPathString!, isEqualTo: value)
     }
     
     /**

     */
    public init<V: QueryableAttributeType>(_ keyPath: KeyPath<D, V>, isEqualTo value: Void?) {
        
        self.init(NSPredicate(format: "\(keyPath._kvcKeyPathString!) == nil"))
    }
    
    /**

     */
    public init<O: DynamicObject>(_ keyPath: KeyPath<D, O>, isEqualTo value: Void?) {
        
        self.init(keyPath._kvcKeyPathString!, isEqualTo: value)
    }
    
    /**
