diff --git a/index.js b/index.js
index c37a94e..2ebe56f 100644
--- a/index.js
+++ b/index.js
@@ -1,6 +1,8 @@
 var iniparser = require('iniparser');
 var config = iniparser.parseSync('./config.ini');
 
+var keepAliveTimer;
+
 if (config.yahoomessenger.keepalive_interval == null) {
   config.yahoomessenger.keepalive_interval = 60;
 }
@@ -22,10 +24,38 @@ function isAdmin(user) {
   return (admins.indexOf(user) >= 0);
 }
 
+function insertMessages(db_connection, logger_id, direction, partner, message, sentdate) {
+
+    db_connection.query(
+        'INSERT INTO messages SET ?',
+        {
+            transport: 'YAHOO',
+            logger: logger_id,
+            direction: direction,
+            partner: partner,
+            message: message,
+            sentdate: sentdate,
+        },
+
+        function(err) {
+            if (err != null) {
+                logger.error("Error on inserting messages to DB, error: " + err);
+            }
+        }
+    );
+}
+
+var striptags = require('striptags');
+
+var YahooMessenger = require("yahoomessenger");
+YahooMessenger.newInstance();
+
 function sendPM(destination, message) {
-    try {
-        logger.info("Sending to " + destination + ": " + message);
+    logger.info("Sending to " + destination + ": " + message);
+
+    //try {
         YahooMessenger.sendPM(destination, message);
+    /*
     }
     catch (e) {
         logger.info("Something wrong");
@@ -36,7 +66,7 @@ function sendPM(destination, message) {
     }
 
     return true;
-
+    */
 }
 
 function broadcast(destinations, message, exclude) {
@@ -56,8 +86,9 @@ function broadcast(destinations, message, exclude) {
 var _keepAliveLoop = function() {
     logger.info('Keep alive loop');
 
-    try {
+    //try {
         YahooMessenger.keepAlive();
+    /*
     }
     catch(e) {
         logger.info("Something wrong");
@@ -66,40 +97,20 @@ var _keepAliveLoop = function() {
         YahooMessenger.login(config.yahoomessenger.username, config.yahoomessenger.password);
         return;
     }
+    */
 
     keepAliveLoop();
 }
 
 function keepAliveLoop() {
-    setTimeout(_keepAliveLoop, config.yahoomessenger.keepalive_interval * 1000);
+    keepAliveTimer = setTimeout(_keepAliveLoop, config.yahoomessenger.keepalive_interval * 1000);
 }
 
-function insertMessages(db_connection, logger_id, direction, partner, message, sentdate) {
-
-    db_connection.query(
-        'INSERT INTO messages SET ?',
-        {
-            transport: 'YAHOO',
-            logger: logger_id,
-            direction: direction,
-            partner: partner,
-            message: message,
-            sentdate: sentdate,
-        },
-
-        function(err) {
-            if (err != null) {
-                logger.error("Error on inserting messages to DB, error: " + err);
-            }
-        }
-    );
+function ymLogin(){
+    logger.info("Login to YM as " + config.yahoomessenger.username)
+    YahooMessenger.login(config.yahoomessenger.username, config.yahoomessenger.password);
 }
 
-var striptags = require('striptags');
-
-var YahooMessenger = require("yahoomessenger");
-YahooMessenger.newInstance();
-
 function onYmLoginSuccesful(data){
     logger.info('Online on YM as ' + data.user_id + ' (' + data.firstname + ' ' + data.lastname + ')');
 
@@ -113,6 +124,10 @@ function onYmLoginSuccesful(data){
     keepAliveLoop();
 }
 
+function onYmLoginError(data){
+    logger.info("YM login error");
+}
+
 function onYmPM(data) {
     var direction = 'IN';
 
@@ -195,12 +210,12 @@ function onYmBuddyAddRequest(data) {
 
 
 function onYmReady(){
-    logger.info("Going to online on YM")
-    YahooMessenger.login(config.yahoomessenger.username, config.yahoomessenger.password);
+    ymLogin();
 }
 
 YahooMessenger.on('ready', onYmReady);
 YahooMessenger.on('loginSuccessful', onYmLoginSuccesful);
+YahooMessenger.on('loginError', onYmLoginError);
 YahooMessenger.on('pm', onYmPM);
 YahooMessenger.on('buddyAddRequest', onYmBuddyAddRequest);
 
@@ -213,9 +228,44 @@ router.get('/hello', function(request, response) {
 });
 
 router.get('/broadcastPing', function(request, response) {
+    response.end('Ok');
     broadcast(config.yahoomessenger.report_to, 'PING');
 });
 
+router.get('/status', function(request, response) {
+    response.writeHead(200, {"Content-Type": "text/plain"});
+    response.write(config.yahoomessenger.status);
+    response.end();
+});
+
+router.post('/status', function(request, response) {
+    var apikey = request.body.apikey;
+    if (apikey != config.httpserver.apikey) {
+        response.end('Invalid APIKEY: ' + apikey);
+        return;
+    }
+    response.end('Ok');
+
+    config.yahoomessenger.status = request.body.status;
+    YahooMessenger.setCustomAwayStatus(config.yahoomessenger.status);
+});
+
+router.get('/relogin/:apikey', function(request, response) {
+    var apikey = request.params.apikey;
+
+    if (apikey != config.httpserver.apikey){
+        response.end('Invalid APIKEY: ' + apikey);
+        return;
+    }
+
+    logger.info("Logging out");
+    YahooMessenger.logout();
+
+    logger.info("Logout");
+    clearTimeout(keepAliveTimer);
+
+    ymLogin();
+});
 
 logger.info("Starting http server on port " + config.httpserver.listen_port);
 var httpServer = http.createServer(router).listen(config.httpserver.listen_port);