diff --git a/.eslintrc.txt b/.eslintrc
similarity index 100%
rename from .eslintrc.txt
rename to .eslintrc
diff --git a/.gitignore b/.gitignore
index d1f6870..5c29422 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,3 +4,4 @@
 npm-debug.log
 .nyc_output
 coverage
+.idea
diff --git a/spec/redis.spec.js b/spec/redis.spec.js
index e1d0178..05ddadc 100644
--- a/spec/redis.spec.js
+++ b/spec/redis.spec.js
@@ -91,13 +91,14 @@
       client.unsubscribe(channelName);
       client.subscribe(channelName);
       publisher.flushdb();
+      socketSpy.reset();
     });
 
     it('should send a websocket event when it receive a redis event that is not JSON', (done) => {
       publisher.publish(channelName, 'I am sending a message.');
       setTimeout(() => {
         expect(socketSpy).to.have.been.called;
-        expect(socketSpy).to.have.been.calledWith('event', {
+        expect(socketSpy).to.have.been.calledWith('update', {
           model: channelName,
           msg: 'I am sending a message.'
         });
@@ -109,12 +110,37 @@
       publisher.publish(channelName, JSON.stringify({msg: 'Json Message'}));
       setTimeout(() => {
         expect(socketSpy).to.have.been.called;
-        expect(socketSpy).to.have.been.calledWith('event', {
+        expect(socketSpy).to.have.been.calledWith('update', {
           model: channelName,
           msg: {msg: 'Json Message'}
         });
         done();
       }, 1000)
     });
+
+    it('should send a websocket event when an object has been removed', (done) => {
+      publisher.publish(channelName, JSON.stringify({msg: 'Deleted', deleted: true}));
+      setTimeout(() => {
+        expect(socketSpy).to.have.been.called;
+        expect(socketSpy).to.have.been.calledWith('remove', {
+          model: channelName,
+          msg: {
+            msg: 'Deleted',
+            deleted: true
+          },
+          deleted: true
+        });
+
+        done();
+      }, 1000)
+    });
+
+  it('should not send a websocket event if the channel is Diag', (done) => {
+    publisher.publish('Diag', JSON.stringify({msg: 'Json Message'}));
+    setTimeout(() => {
+      expect(socketSpy).not.to.have.been.called;
+      done();
+    }, 1000)
+    });
   });
 })();
\ No newline at end of file
diff --git a/src/controllers/redis.js b/src/controllers/redis.js
index a051e36..7e86000 100644
--- a/src/controllers/redis.js
+++ b/src/controllers/redis.js
@@ -46,18 +46,28 @@
   });
 
   client.on('pmessage', function (pattern, channel, message) {
-    logger.log('warn', 'sub channel ' + channel + ': ' + message);
+    if (channel === 'Diag') {
+      return;
+    }
+
 
     let msg;
     try {
       msg = JSON.parse(message);
       // TODO find the user that needs to be notified for msg.object update
-      socket.emit('event', {model: channel, msg: msg});
     }
     catch(e) {
       // send the event also if it is not JSON
       msg = message;
-      socket.emit('event', {model: channel, msg: msg});
+    }
+
+    if (msg.deleted) {
+      logger.log('warn', 'Remove on: ' + channel + ': ' + message);
+      socket.emit('remove', {model: channel, msg: msg, deleted: true});
+    }
+    else {
+      logger.log('warn', 'Update on: ' + channel + ': ' + message);
+      socket.emit('update', {model: channel, msg: msg});
     }
   });
 
