         if Lanes.u.isModel(value)
             @replace(model, name, value)
         else
-            model[name][fn_name]( value )
+            model[name]?[fn_name]( value )
         if options?.silent isnt true
             model.trigger("change:#{name}", value, {})
 

                existing
            else
                Proxy = association.getProxyFor(name)
                new Proxy( association, association.getOptions(name, @)  )

    # will be called in the scope of the parent model
    createCollection: (association, name, definition, fk, pk, target_class) ->
        target_class ||= association.getClassFor(name)
        options = association.getOptions(name, this)
        options.filter ||= {}
        options.filter[fk] = this.get(pk)


    # will be called in the scope of the parent model
    createModel: (association, name, definition, fk, pk, target_class) ->
        if definition.required
            target_class ||= association.getClassFor(name)
            options = association.getOptions(name, this)
            model_id = this.get(pk)
