   save:(callback)->
     save_.call this, (err, model)=>
       return callback err if err
-      @constructor.emit 'RelationshipSaved', this
-      callback err, model
+      if isEmitRequired @sourceName, @as
+        console.log @sourceName, @as
+        @constructor.emit 'RelationshipSaved', this
+      callback null, model
 
   remove_ = @::remove
   remove:(callback)->
     remove_.call this, (err)=>
       return callback err if err
-      @constructor.emit 'RelationshipRemoved', this
-      callback err
+      if isEmitRequired @sourceName, @as
+        console.log @sourceName, @as
+        @constructor.emit 'RelationshipRemoved', this
+      callback null
 
   @oldStaticRemove = @remove
   @remove =(rest..., callback)->

        return callback err if err
        if res.length > 0
          for rel in res
            Relationship.emit "RelationshipUpdated", rel
        callback err

        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 "RelationshipRemoved", rel
        callback null

  update_ = @::update
  update:(rest..., callback)->
    update_.call this, rest..., (err)=>
      return callback err if err
      if isEmitRequired @sourceName, @as
        console.log @sourceName, @as
        @constructor.emit 'RelationshipUpdated', this
      callback null


  @oldStaticUpdate = @update
