         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, {})
 

        Lanes.u.findObject(object, 'Models', @klass::FILE)

    getProxyFor: (name) ->
        @proxy[name] ||= (
            Lanes.Models.AssocationProxy.construct( @getClassFor(name),
                association_pk: @pk(name)
                association_name: name
            )


    # 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)
