diff --git a/src/main/java/net/floodlightcontroller/core/internal/OFSwitchManager.java b/src/main/java/net/floodlightcontroller/core/internal/OFSwitchManager.java
index 1450bc3160f5e6bfe77bf689f7ff60db489ca54e..789fe686876da4a06992be22073e9b2d373608b6 100644
--- a/src/main/java/net/floodlightcontroller/core/internal/OFSwitchManager.java
+++ b/src/main/java/net/floodlightcontroller/core/internal/OFSwitchManager.java
@@ -92,7 +92,8 @@ import io.netty.util.concurrent.GlobalEventExecutor;
  * @author gregor, capveg, sovietaced
  *
  */
-public class OFSwitchManager implements IOFSwitchManager, INewOFConnectionListener, IHAListener, IFloodlightModule, IOFSwitchService, IStoreListener<DatapathId> {
+public class OFSwitchManager implements IOFSwitchManager, INewOFConnectionListener, 
+IHAListener, IFloodlightModule, IOFSwitchService, IStoreListener<DatapathId> {
 	private static final Logger log = LoggerFactory.getLogger(OFSwitchManager.class);
 
 	private volatile OFControllerRole role;
@@ -633,7 +634,8 @@ public class OFSwitchManager implements IOFSwitchManager, INewOFConnectionListen
 	@Override
 	public Collection<Class<? extends IFloodlightService>>
 	getModuleDependencies() {
-		Collection<Class<? extends IFloodlightService>> l = new ArrayList<Class<? extends IFloodlightService>>();
+		Collection<Class<? extends IFloodlightService>> l = 
+				new ArrayList<Class<? extends IFloodlightService>>();
 
 		l.add(IFloodlightProviderService.class);
 		l.add(IDebugEventService.class);
diff --git a/src/main/java/net/floodlightcontroller/simpleft/FT.java b/src/main/java/net/floodlightcontroller/simpleft/FT.java
index 1dd74659cdddfc5c407df995d483ceebbde5dda8..a0a65ba13f0759ca8bb497d404b16c79c9baadcd 100644
--- a/src/main/java/net/floodlightcontroller/simpleft/FT.java
+++ b/src/main/java/net/floodlightcontroller/simpleft/FT.java
@@ -2,37 +2,23 @@ package net.floodlightcontroller.simpleft;
 
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Date;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
-import java.util.Random;
-import java.util.Set;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.TimeUnit;
 
 import net.floodlightcontroller.core.FloodlightContext;
-import net.floodlightcontroller.core.IFloodlightProviderService;
-import net.floodlightcontroller.core.IOFConnectionBackend;
 import net.floodlightcontroller.core.IOFMessageListener;
 import net.floodlightcontroller.core.IOFSwitch;
 import net.floodlightcontroller.core.IOFSwitchListener;
 import net.floodlightcontroller.core.PortChangeType;
 import net.floodlightcontroller.core.internal.FloodlightProvider;
-import net.floodlightcontroller.core.internal.IOFConnectionListener;
-import net.floodlightcontroller.core.internal.IOFSwitchManager;
 import net.floodlightcontroller.core.internal.IOFSwitchService;
-import net.floodlightcontroller.core.internal.ISwitchDriverRegistry;
 import net.floodlightcontroller.core.module.FloodlightModuleContext;
 import net.floodlightcontroller.core.module.FloodlightModuleException;
 import net.floodlightcontroller.core.module.IFloodlightModule;
-import net.floodlightcontroller.core.module.IFloodlightModuleContext;
 import net.floodlightcontroller.core.module.IFloodlightService;
-import net.floodlightcontroller.core.util.SingletonTask;
 import net.floodlightcontroller.storage.IStorageSourceService;
 import net.floodlightcontroller.threadpool.IThreadPoolService;
-import net.floodlightcontroller.threadpool.ThreadPool;
-import net.floodlightcontroller.util.TimedCache;
 
 import org.projectfloodlight.openflow.protocol.OFControllerRole;
 import org.projectfloodlight.openflow.protocol.OFMessage;
@@ -40,46 +26,32 @@ import org.projectfloodlight.openflow.protocol.OFPortDesc;
 import org.projectfloodlight.openflow.protocol.OFRoleReply;
 import org.projectfloodlight.openflow.protocol.OFType;
 import org.projectfloodlight.openflow.types.DatapathId;
-import org.projectfloodlight.openflow.types.U64;
 import org.sdnplatform.sync.IStoreClient;
 import org.sdnplatform.sync.IStoreListener;
 import org.sdnplatform.sync.ISyncService;
 import org.sdnplatform.sync.ISyncService.Scope;
 import org.sdnplatform.sync.error.SyncException;
-import org.sdnplatform.sync.internal.SyncManager;
-import org.sdnplatform.sync.internal.config.ClusterConfig;
-import org.sdnplatform.sync.internal.config.IClusterConfigProvider;
-import org.sdnplatform.sync.internal.config.Node;
+import org.sdnplatform.sync.internal.rpc.IRPCListener;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.common.util.concurrent.ListenableFuture;
-
 public class FT implements 
 IOFMessageListener, 
 IFloodlightModule,
 IStoreListener<String>,
-IOFSwitchListener
+IOFSwitchListener,
+IRPCListener
 {
 
 	private ISyncService syncService;
-	private IStoreClient<String, String> storeClient;
-	//private IFloodlightProviderService floodlightProvider;
+	private IStoreClient<String, String> storeFT;
 	
 	protected static Logger logger = LoggerFactory.getLogger(FT.class);
-
-	protected static IThreadPoolService threadPoolService;
-	protected static SingletonTask syncTestTask;
-	protected static SingletonTask heartBeatTask;
-	private final int HEARTBEAT = 3;//time to discover a crashed node
 	
 	protected static IOFSwitchService switchService;
 	private static UtilDurable utilDurable;
 			
 	private String controllerId;
-	
-	private HashMap<Short, Integer> cluster;
 
 	@Override
 	public String getName() {
@@ -102,18 +74,20 @@ IOFSwitchListener
 	@Override
 	public Collection<Class<? extends IFloodlightService>> getModuleServices() {
 		// TODO Auto-generated method stub
-		Collection<Class<? extends IFloodlightService>> l = 
+		/*Collection<Class<? extends IFloodlightService>> l = 
 				new ArrayList<Class<? extends IFloodlightService>>();
-		return l;
+		return l;*/
+		return null;
 
 	}
 
 	@Override
 	public Map<Class<? extends IFloodlightService>, IFloodlightService> getServiceImpls() {
 		// TODO Auto-generated method stub
-		Map<Class<? extends IFloodlightService>, IFloodlightService> m = 
+		/*Map<Class<? extends IFloodlightService>, IFloodlightService> m = 
 				new HashMap<Class<? extends IFloodlightService>, IFloodlightService>();
-		return m;
+		return m;*/
+		return null;
 
 	}
 
@@ -136,14 +110,11 @@ IOFSwitchListener
 		// TODO Auto-generated method stub
 		
 		this.syncService = context.getServiceImpl(ISyncService.class);
-		threadPoolService = context.getServiceImpl(IThreadPoolService.class);
 		switchService = context.getServiceImpl(IOFSwitchService.class);
-		//floodlightProvider = context.getServiceImpl(IFloodlightProviderService.class);
 		utilDurable = new UtilDurable();
 
 		Map<String, String> configParams = context.getConfigParams(FloodlightProvider.class);
 		controllerId = configParams.get("controllerId");
-		cluster = new HashMap<>();
 		
 			
 	}
@@ -151,89 +122,21 @@ IOFSwitchListener
 	@Override
 	public void startUp(FloodlightModuleContext context)
 			throws FloodlightModuleException {
-
-		/**
-		 * ##############################################################
-		 *                          FAULT TOLERANCE BEGIN
-		 * ##############################################################
-		 *                           
-		 */
-		Collection<Node> nodes = syncService.getClusterConfig().getNodes();
-		Iterator<Node> it = nodes.iterator();
-		while (it.hasNext()) {
-			Node node = it.next();
-			if(!controllerId.equals(""+node.getNodeId())){
-				cluster.put(node.getNodeId(), 0);
-			}
-		}		
-		logger.debug("ClusterConfig: {}", cluster);
-		
-		ScheduledExecutorService ses = threadPoolService.getScheduledExecutor();
-		heartBeatTask = new SingletonTask(ses, new Runnable() {
-			@Override
-			public void run() { 				
-				HashMap<Short, Integer> mapC = syncService.getConnections();				
-				Iterator<Short> it = cluster.keySet().iterator();
-				while (it.hasNext()) {
-					Short nodeId = it.next();
-					if(!mapC.containsKey(nodeId)){
-						logger.debug("Crashed nodeId: {}. Role request to switches...", nodeId);
-						String swIds=null; 
-						try {
-							swIds = storeClient.get(""+nodeId).getValue();
-							logger.debug("Switches managed by nodeId:{}, {}", nodeId, swIds);							
-						} catch (SyncException e) {
-							e.printStackTrace();
-						}
-						
-						if(swIds!= null){
-							String swId[] = swIds.split(",");
-							for (int i = 0; i < swId.length; i++) {
-								setSwitchRole(OFControllerRole.ROLE_MASTER, swId[i]);	
-							}	
-						}	
-					}
-				}				
-				heartBeatTask.reschedule(HEARTBEAT, TimeUnit.SECONDS);
-			}
-		});
-		heartBeatTask.reschedule(10, TimeUnit.SECONDS);
 		
-		
-		
-		/**
-		 * ##############################################################
-		 *                          UPDATE SWITCHES
-		 * ##############################################################                          
-		 */
+		switchService.addOFSwitchListener(this);
+		syncService.addRPCListener(this);
 		
 		try {
 			this.syncService.registerStore("FT_Switches", Scope.GLOBAL);
-			this.storeClient = this.syncService
+			this.storeFT = this.syncService
 					.getStoreClient("FT_Switches",
 							String.class,
 							String.class);
-			this.storeClient.addStoreListener(this);
+			this.storeFT.addStoreListener(this);
 		} catch (SyncException e) {
 			throw new FloodlightModuleException("Error while setting up sync service", e);
 		}
 		
-		ses = threadPoolService.getScheduledExecutor();
-		syncTestTask = new SingletonTask(ses, new Runnable() {
-			@Override
-			public void run() { 				
-				try {
-					storeClient.put(controllerId, getActiveSwitches());
-				} catch (SyncException e) {
-					// TODO Auto-generated catch block
-					e.printStackTrace();
-				}
-				syncTestTask.reschedule(6, TimeUnit.SECONDS);
-			}
-		});
-		syncTestTask.reschedule(6, TimeUnit.SECONDS);
-		
-
 	}
 
 	@Override
@@ -259,7 +162,7 @@ IOFSwitchListener
 							type.name()}
 						);*/
 				if(type.name().equals("REMOTE")){
-					String swIds = storeClient.get(k).getValue();
+					String swIds = storeFT.get(k).getValue();
 					logger.debug("REMOTE: key:{}, Value:{}", k, swIds);
 				}
 			} catch (SyncException e) {
@@ -273,19 +176,13 @@ IOFSwitchListener
 	@Override
 	public void switchAdded(DatapathId switchId) {
 		// TODO Auto-generated method stub
-		try {
-			this.storeClient.put(controllerId, getActiveSwitches());
-		} catch (SyncException e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-		}
 	}
 
 	@Override
 	public void switchRemoved(DatapathId switchId) {
 		// TODO Auto-generated method stub
 		try {
-			this.storeClient.put(controllerId, getActiveSwitches());
+			this.storeFT.put(controllerId, getActiveSwitches());
 		} catch (SyncException e) {
 			// TODO Auto-generated catch block
 			e.printStackTrace();
@@ -296,7 +193,7 @@ IOFSwitchListener
 	public void switchActivated(DatapathId switchId) {
 		// TODO Auto-generated method stub
 		try {
-			this.storeClient.put(controllerId, getActiveSwitches());
+			this.storeFT.put(controllerId, getActiveSwitches());
 		} catch (SyncException e) {
 			// TODO Auto-generated catch block
 			e.printStackTrace();
@@ -314,7 +211,7 @@ IOFSwitchListener
 	public void switchChanged(DatapathId switchId) {
 		// TODO Auto-generated method stub
 		try {
-			this.storeClient.put(controllerId, getActiveSwitches());
+			this.storeFT.put(controllerId, getActiveSwitches());
 		} catch (SyncException e) {
 			// TODO Auto-generated catch block
 			e.printStackTrace();
@@ -353,5 +250,37 @@ IOFSwitchListener
 		else
 			logger.info("Reply NULL!");
 	}
+
+	@Override
+	public void disconnectedNode(Short nodeId) {
+		// TODO Auto-generated method stub
+		String swIds=null; 
+		try {
+			swIds = storeFT.get(""+nodeId).getValue();
+			logger.debug("Switches managed by nodeId:{}, Switches:{}", nodeId, swIds);							
+		} catch (SyncException e) {
+			e.printStackTrace();
+		}
+		
+		if(!swIds.equals("")){
+			String swId[] = swIds.split(",");
+			for (int i = 0; i < swId.length; i++) {
+				setSwitchRole(OFControllerRole.ROLE_MASTER, swId[i]);	
+			}	
+		}
+	}
+
+	@Override
+	public void connectedNode(Short nodeId) {
+		// TODO Auto-generated method stub
+		String activeSwicthes = getActiveSwitches();
+		logger.debug("NodeID: {} connected, informing my switches: {}", nodeId, activeSwicthes);
+		try {
+			storeFT.put(controllerId, activeSwicthes);
+		} catch (SyncException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+	}
 	
 }
diff --git a/src/main/java/org/sdnplatform/sync/ISyncService.java b/src/main/java/org/sdnplatform/sync/ISyncService.java
index 5b3680ca61f00fabe5a8972e45a7abb9112b20a9..58bf1dc10a11b0d376a1534c38b754d6576c57ba 100644
--- a/src/main/java/org/sdnplatform/sync/ISyncService.java
+++ b/src/main/java/org/sdnplatform/sync/ISyncService.java
@@ -5,6 +5,7 @@ import java.util.HashMap;
 import org.sdnplatform.sync.error.SyncException;
 import org.sdnplatform.sync.error.UnknownStoreException;
 import org.sdnplatform.sync.internal.config.ClusterConfig;
+import org.sdnplatform.sync.internal.rpc.IRPCListener;
 
 
 import com.fasterxml.jackson.databind.JsonNode;
@@ -140,8 +141,13 @@ public interface ISyncService extends IFloodlightService {
 
     
     
-    public ClusterConfig getClusterConfig();
-    
-    public HashMap<Short, Integer> getConnections();
+   
+    /**
+     * Listener to RPC connections, used in simple Fault tolerance module
+     * The listener is dispatched either connected or disconnected nodes
+     * @param listener
+     */
+	public void addRPCListener(IRPCListener listener);
+	public void removeRPCListener(IRPCListener listener);
     
 }
diff --git a/src/main/java/org/sdnplatform/sync/internal/SyncManager.java b/src/main/java/org/sdnplatform/sync/internal/SyncManager.java
index b0692fab2fbef9550a86d96fd5631f9814c55fc3..db8e575e8bbe462eb5282bbe68705f0dadaca42a 100644
--- a/src/main/java/org/sdnplatform/sync/internal/SyncManager.java
+++ b/src/main/java/org/sdnplatform/sync/internal/SyncManager.java
@@ -41,6 +41,7 @@ import org.sdnplatform.sync.internal.config.Node;
 import org.sdnplatform.sync.internal.config.PropertyCCProvider;
 import org.sdnplatform.sync.internal.config.StorageCCProvider;
 import org.sdnplatform.sync.internal.config.SyncStoreCCProvider;
+import org.sdnplatform.sync.internal.rpc.IRPCListener;
 import org.sdnplatform.sync.internal.rpc.RPCService;
 import org.sdnplatform.sync.internal.rpc.TProtocolUtil;
 import org.sdnplatform.sync.internal.store.IStorageEngine;
@@ -74,6 +75,7 @@ import net.floodlightcontroller.threadpool.IThreadPoolService;
  * @see ISyncService
  */
 public class SyncManager extends AbstractSyncManager {
+	
 	protected static final Logger logger =
 			LoggerFactory.getLogger(SyncManager.class.getName());
 
@@ -466,6 +468,7 @@ public class SyncManager extends AbstractSyncManager {
 		debugCounter = context.getServiceImpl(IDebugCounterService.class);
 		Map<String, String> config = context.getConfigParams(this);
 		storeRegistry = new StoreRegistry(this, config.get("dbPath"));
+		//context.addService(IRPCService.class, this);
 
 		String[] configProviders =
 			{PropertyCCProvider.class.getName(),
@@ -817,9 +820,16 @@ public class SyncManager extends AbstractSyncManager {
 	}
 
 	@Override
-	public HashMap<Short, Integer> getConnections() {
+	public void addRPCListener(IRPCListener listener) {
+		// TODO Auto-generated method stub
+		rpcService.addRPCListener(listener);
+		
+	}
+
+	@Override
+	public void removeRPCListener(IRPCListener listener) {
 		// TODO Auto-generated method stub
-		return rpcService.getConnections();
+		rpcService.removeRPCListener(listener);
 	}
 
 	
diff --git a/src/main/java/org/sdnplatform/sync/internal/remote/RemoteSyncManager.java b/src/main/java/org/sdnplatform/sync/internal/remote/RemoteSyncManager.java
index 29f61db1e09afe68891709cc9de7c50156d9bbe3..fbe81c5b81ecd970a60ca6817f36417b9205d5b7 100644
--- a/src/main/java/org/sdnplatform/sync/internal/remote/RemoteSyncManager.java
+++ b/src/main/java/org/sdnplatform/sync/internal/remote/RemoteSyncManager.java
@@ -30,6 +30,7 @@ import org.sdnplatform.sync.error.UnknownStoreException;
 import org.sdnplatform.sync.internal.AbstractSyncManager;
 import org.sdnplatform.sync.internal.config.AuthScheme;
 import org.sdnplatform.sync.internal.config.ClusterConfig;
+import org.sdnplatform.sync.internal.rpc.IRPCListener;
 import org.sdnplatform.sync.internal.rpc.RPCService;
 import org.sdnplatform.sync.internal.rpc.TProtocolUtil;
 import org.sdnplatform.sync.internal.store.IStore;
@@ -375,14 +376,14 @@ public class RemoteSyncManager extends AbstractSyncManager {
 
 	
 	@Override
-	public ClusterConfig getClusterConfig() {
+	public void addRPCListener(IRPCListener listener) {
 		// TODO Auto-generated method stub
-		return null;
+		
 	}
 
 	@Override
-	public HashMap<Short, Integer> getConnections() {
+	public void removeRPCListener(IRPCListener listener) {
 		// TODO Auto-generated method stub
-		return null;
+		
 	}
 }
diff --git a/src/main/java/org/sdnplatform/sync/internal/rpc/IRPCListener.java b/src/main/java/org/sdnplatform/sync/internal/rpc/IRPCListener.java
new file mode 100644
index 0000000000000000000000000000000000000000..aaa4e4e8a88fe3b4215e42c819c596b89878e24f
--- /dev/null
+++ b/src/main/java/org/sdnplatform/sync/internal/rpc/IRPCListener.java
@@ -0,0 +1,19 @@
+/**
+ * Tulio Alberton Ribeiro
+ * Without warrant
+ * 
+ *    Licensed under the Apache License, Version 2.0 (the "License"); you may
+ *    not use this file except in compliance with the License. You may obtain
+ *    a copy of the License at
+ *
+ *         http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+package org.sdnplatform.sync.internal.rpc;
+
+public interface IRPCListener {
+	
+	public void disconnectedNode(Short nodeId);
+
+	public void connectedNode(Short nodeId);
+}
diff --git a/src/main/java/org/sdnplatform/sync/internal/rpc/RPCService.java b/src/main/java/org/sdnplatform/sync/internal/rpc/RPCService.java
index 2835e21355c81d9abe7f2defc623c59226a8e13b..824d1717f14869d8f9014d73eb71b49b240f35f7 100644
--- a/src/main/java/org/sdnplatform/sync/internal/rpc/RPCService.java
+++ b/src/main/java/org/sdnplatform/sync/internal/rpc/RPCService.java
@@ -1,14 +1,30 @@
 package org.sdnplatform.sync.internal.rpc;
 
+import io.netty.bootstrap.Bootstrap;
+import io.netty.bootstrap.ServerBootstrap;
+import io.netty.channel.Channel;
+import io.netty.channel.ChannelFuture;
+import io.netty.channel.ChannelFutureListener;
+import io.netty.channel.ChannelOption;
+import io.netty.channel.EventLoopGroup;
+import io.netty.channel.group.ChannelGroup;
+import io.netty.channel.group.DefaultChannelGroup;
+import io.netty.channel.nio.NioEventLoopGroup;
+import io.netty.channel.socket.nio.NioServerSocketChannel;
+import io.netty.channel.socket.nio.NioSocketChannel;
+import io.netty.util.Timer;
+import io.netty.util.concurrent.GlobalEventExecutor;
+
 import java.net.InetSocketAddress;
 import java.net.SocketAddress;
 import java.util.EnumSet;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.CopyOnWriteArraySet;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
+import java.util.concurrent.LinkedTransferQueue;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.ThreadFactory;
 import java.util.concurrent.TimeUnit;
@@ -16,30 +32,15 @@ import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.locks.Condition;
 import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReentrantLock;
-import java.util.concurrent.LinkedTransferQueue;
 
 import net.floodlightcontroller.core.util.SingletonTask;
 import net.floodlightcontroller.debugcounter.IDebugCounterService;
-import io.netty.bootstrap.Bootstrap;
-import io.netty.bootstrap.ServerBootstrap;
-import io.netty.channel.Channel;
-import io.netty.channel.ChannelFuture;
-import io.netty.channel.ChannelFutureListener;
-import io.netty.channel.ChannelOption;
-import io.netty.channel.EventLoopGroup;
-import io.netty.channel.group.ChannelGroup;
-import io.netty.channel.group.DefaultChannelGroup;
-import io.netty.channel.nio.NioEventLoopGroup;
-import io.netty.channel.socket.nio.NioServerSocketChannel;
-import io.netty.channel.socket.nio.NioSocketChannel;
-import io.netty.util.Timer;
-import io.netty.util.concurrent.GlobalEventExecutor;
 
 import org.sdnplatform.sync.internal.SyncManager;
 import org.sdnplatform.sync.internal.config.Node;
 import org.sdnplatform.sync.internal.util.Pair;
-import org.sdnplatform.sync.thrift.SyncMessage;
 import org.sdnplatform.sync.thrift.MessageType;
+import org.sdnplatform.sync.thrift.SyncMessage;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -47,7 +48,7 @@ import org.slf4j.LoggerFactory;
  * A lightweight RPC mechanism built on netty.
  * @author readams
  */
-public class RPCService {
+public class RPCService{
     protected static final Logger logger =
             LoggerFactory.getLogger(RPCService.class);
 
@@ -56,6 +57,11 @@ public class RPCService {
      */
     protected SyncManager syncManager;
 
+    /**
+     *Tulio Ribeiro
+     */
+ 	protected Set<IRPCListener> rpcListeners;
+ 	
     /**
      * Debug counter service
      */
@@ -174,6 +180,7 @@ public class RPCService {
         this.syncManager = syncManager;
         this.debugCounter = debugCounter;
         this.timer = timer;
+        this.rpcListeners = new CopyOnWriteArraySet<IRPCListener>();
 
         messageWindows = new ConcurrentHashMap<Short, MessageWindow>();
     }
@@ -301,6 +308,16 @@ public class RPCService {
                 nc.nuke();
             }
             connections.remove(nodeId);
+           
+            /**
+             * Tulio Ribeiro
+             * Inform all registered modules about disconnected node
+             */
+            if (rpcListeners != null) {
+				for (IRPCListener listener : rpcListeners) {
+					listener.disconnectedNode(nodeId);
+				}
+			}
         }
     }
     
@@ -504,6 +521,16 @@ public class RPCService {
             }
             c.nodeChannel = channel;
             c.state = NodeConnectionState.CONNECTED;
+            
+            /**
+             * Tulio Ribeiro
+             * Inform all registered modules about connected node
+             */
+            if (rpcListeners != null) {
+				for (IRPCListener listener : rpcListeners) {
+					listener.connectedNode(nodeId);
+				}
+			}
         }
     }
 
@@ -678,16 +705,14 @@ public class RPCService {
     }
     
     
-    public HashMap<Short, Integer> getConnections(){
-    	HashMap<Short, Integer> r = new HashMap<>();
-    	
-    	Iterator<Short> it = connections.keySet().iterator();
-    	while (it.hasNext()) {
-    		Short nodeId = it.next();
-			r.put(nodeId, 0);// 0 it it for heartbeat count
-		}
-    	return r;    	
-    }
-    
-    
+	//@Override
+	public void addRPCListener(IRPCListener listener) {
+		this.rpcListeners.add(listener);
+	}
+
+	//@Override
+	public void removeRPCListener(IRPCListener listener) {
+		this.rpcListeners.remove(listener);
+	}
+
 }
\ No newline at end of file
diff --git a/src/main/resources/logback-test.xml b/src/main/resources/logback-test.xml
index d0ad9e999eab9315211473a9d464a4accb2d9d1a..06bd3fee69be08d1a120a74da7860b3740941209 100644
--- a/src/main/resources/logback-test.xml
+++ b/src/main/resources/logback-test.xml
@@ -10,15 +10,14 @@
     <appender-ref ref="STDOUT" />
     <appender-ref ref="EV_WARN_ERR" />
   </root>
-  <logger name="org" level="WARN"/>
+  <logger name="org" level="INFO"/>
   <logger name="io" level="INFO"></logger> <!-- Netty logging -->
   <logger name="LogService" level="DEBUG"></logger> <!-- Restlet access logging -->
   <logger name="net.floodlightcontroller" level="INFO"/>
   <logger name="org.sdnplatform" level="INFO"></logger>
-  <logger name="org.sdnplatform.sync.internal.config.SyncStoreCCProvider" level="TRACE"></logger>
-  <logger name="org.sdnplatform.sync.internal.SyncManager" level="TRACE"></logger>
-  <logger name="org.sdnplatform.sync.internal.config.StorageCCProvider" level="TRACE"></logger>
-  <logger name="org.sdnplatform.sync.internal.config.PropertyCCProvider" level="TRACE"></logger>
+  <logger name="org.sdnplatform.sync.internal.SyncManager" level="INFO"></logger>
+  <logger name="org.sdnplatform.sync.internal.config.StorageCCProvider" level="INFO"></logger>
+  <logger name="org.sdnplatform.sync.internal.config.PropertyCCProvider" level="INFO"></logger>
   <logger name="org.sdnplatform.sync.internal.rpc.RPCService" level="INFO"></logger>
   <logger name="net.floodlightcontroller.devicemanager" level="INFO"></logger>
   <logger name="net.floodlightcontroller.linkdiscovery" level="INFO"></logger>
@@ -30,4 +29,6 @@
   <logger name="net.floodlightcontroller.core.internal.OFSwitchManager" level="INFO"></logger>
   <logger name="net.floodlightcontroller.core.internal.OFSwitchHandshakeHandler" level="INFO"></logger>
   <logger name="net.floodlightcontroller.core.internal.OFChannelHandler" level="INFO"></logger>
+  <logger name="net.floodlightcontroller.core.internal.OFSwitchManager" level="INFO"></logger>
+
 </configuration>
diff --git a/src/test/java/org/sdnplatform/sync/test/MockSyncService.java b/src/test/java/org/sdnplatform/sync/test/MockSyncService.java
index 4b9fca81dfaf0785a331cc6293f274aeacd6528a..325892b772fe75dfb8c2aa3aa4bbedfd20430070 100644
--- a/src/test/java/org/sdnplatform/sync/test/MockSyncService.java
+++ b/src/test/java/org/sdnplatform/sync/test/MockSyncService.java
@@ -8,6 +8,7 @@ import org.sdnplatform.sync.error.SyncException;
 import org.sdnplatform.sync.error.UnknownStoreException;
 import org.sdnplatform.sync.internal.AbstractSyncManager;
 import org.sdnplatform.sync.internal.config.ClusterConfig;
+import org.sdnplatform.sync.internal.rpc.IRPCListener;
 import org.sdnplatform.sync.internal.store.IStorageEngine;
 import org.sdnplatform.sync.internal.store.IStore;
 import org.sdnplatform.sync.internal.store.InMemoryStorageEngine;
@@ -121,15 +122,21 @@ public class MockSyncService extends AbstractSyncManager {
         localStores = new HashMap<String, ListenerStorageEngine>();
     }
 
+
+    /**
+     * Tulio Ribeiro
+     */
 	@Override
-	public ClusterConfig getClusterConfig() {
+	public void addRPCListener(IRPCListener listener) {
 		// TODO Auto-generated method stub
-		return null;
+		
 	}
-
+	/**
+     * Tulio Ribeiro
+     */
 	@Override
-	public HashMap<Short, Integer> getConnections() {
+	public void removeRPCListener(IRPCListener listener) {
 		// TODO Auto-generated method stub
-		return null;
+		
 	}
 }