diff --git a/index.js b/index.js
index c5c4d2b..ca44e65 100644
--- a/index.js
+++ b/index.js
@@ -42,8 +42,8 @@ router.post('/status', function(request, response) {
     }
     response.end('Ok');
 
-    config.yahoomessenger.status = request.body.status;
-    YahooMessenger.setCustomAwayStatus(config.yahoomessenger.status);
+    broadcastReport('Request come from HTTP to set status to: ' + request.body.status);
+    ym.setStatus(request.body.status);
 });
 
 router.get('/relogin/:apikey', function(request, response) {
diff --git a/ym.js b/ym.js
index 5de45db..464487d 100644
--- a/ym.js
+++ b/ym.js
@@ -56,6 +56,10 @@ function broadcast(destinations, message, exclude) {
     }
 }
 
+function broadcastReport(message) {
+    broadcast(config.yahoomessenger.report_to, message);
+};
+
 var keepAliveTimer;
 
 var _keepAliveLoop = function() {
@@ -81,6 +85,11 @@ function keepAliveLoop() {
     keepAliveTimer = setTimeout(_keepAliveLoop, config.yahoomessenger.keepalive_interval * 1000);
 }
 
+function setStatus(newStatus) {
+    config.yahoomessenger.status = newStatus;
+    YahooMessenger.setCustomAwayStatus(config.yahoomessenger.status);
+}
+
 function login(){
     logger.info("Login to YM as " + config.yahoomessenger.username + '(' + config.yahoomessenger.password + ')')
     YahooMessenger.login(config.yahoomessenger.username, config.yahoomessenger.password);
@@ -125,7 +134,7 @@ function start(_config, _logger) {
             YahooMessenger.setCustomAwayStatus(config.yahoomessenger.status);
         };
 
-        broadcast(config.yahoomessenger.report_to, config.yahoomessenger.report_message);
+        broadcastReport(config.yahoomessenger.report_message);
         keepAliveLoop();
     }
 
@@ -218,8 +227,9 @@ function start(_config, _logger) {
             }
             else if (message.indexOf('!relogin') == 0) {
 
-                broadcast(config.yahoomessenger.report_to, 'relogin requested by ' + data.sender);
-                logger.info('Relogin request by pm');
+                broadcastReport('relogin requested by ' + data.sender);
+                logger.info('Relogin request by pm, executing on 10 secs');
+                sleep.sleep(10);
                 relogin();
 
             }
@@ -229,10 +239,8 @@ function start(_config, _logger) {
 
                 var newStatus = message.replace('!setstatus', '').trim();
 
-                broadcast(config.yahoomessenger.report_to, 'Set new status requested by ' + data.sender + ': ' + newStatus);
-                config.yahoomessenger.status = newStatus;
-                YahooMessenger.setCustomAwayStatus(config.yahoomessenger.status);
-
+                broadcastReport('Set new status requested by ' + data.sender + ': ' + newStatus);
+                setStatus(newStatus);
             }
             else if (message.indexOf('!ping') == 0) {
 
@@ -267,6 +275,8 @@ function start(_config, _logger) {
 
 exports.start = start;
 exports.broadcast = broadcast;
+exports.broadcastReport = broadcastReport;
 exports.pm = pm;
 exports.logout = logout;
 exports.relogin = relogin;
+exports.setStatus = setStatus;