         return callback err if err
         if res.length > 0
           for rel in res
-            Relationship.emit "RelationshipRemoved", rel
-        callback err
+            if isEmitRequired rel.sourceName, rel.as
+              console.log rel.sourceName, rel.as
+              Relationship.emit "RelationshipRemoved", rel
+        callback null
 
   update_ = @::update
   update:(rest..., callback)->
     update_.call this, rest..., (err)=>
       return callback err if err
-      @constructor.emit 'RelationshipUpdated', this
-      callback err
+      if isEmitRequired @sourceName, @as
+        console.log @sourceName, @as
+        @constructor.emit 'RelationshipUpdated', this
+      callback null
 
 
   @oldStaticUpdate = @update

  save:(callback)->
    save_.call this, (err, model)=>
      return callback err if err
      @constructor.emit 'RelationshipSaved', this
      callback err, model

  remove_ = @::remove
  remove:(callback)->
    remove_.call this, (err)=>
      return callback err if err
      @constructor.emit 'RelationshipRemoved', this
      callback err

  @oldStaticRemove = @remove
  @remove =(rest..., callback)->

        return callback err if err
        if res.length > 0
          for rel in res
            if isEmitRequired rel.sourceName, rel.as
              console.log rel.sourceName, rel.as
              Relationship.emit "RelationshipUpdated", rel
        callback null

  isEmitRequired = (sourceName, as)->
    sourceConstructor = Base.constructors[sourceName]
    relEvents = sourceConstructor?.broadcastableRelationships
    return relEvents and (as in relEvents)

