diff --git a/src/cutecoin/core/community.py b/src/cutecoin/core/community.py
index e7ff00775df0a583f7895817a419f57dc6d2bed4..7b322b950ef533d3be1fae285239bf0c5c7a2c3d 100644
--- a/src/cutecoin/core/community.py
+++ b/src/cutecoin/core/community.py
@@ -183,7 +183,7 @@ class Community(QObject):
         """
         # Get cached block by block number
         block_number = self.network.latest_block_number
-        block = yield from self.bma_access.future_request(self, bma.blockchain.Block,
+        block = yield from self.bma_access.future_request(bma.blockchain.Block,
                              req_args={'number': block_number})
         return block['monetaryMass']
 
diff --git a/src/cutecoin/core/net/api/bma/access.py b/src/cutecoin/core/net/api/bma/access.py
index 63e59be08d9f2e033e702418aef6b1dc9088b86f..dd431368e85f38d8026a0f57c5dd2417deb0dd4e 100644
--- a/src/cutecoin/core/net/api/bma/access.py
+++ b/src/cutecoin/core/net/api/bma/access.py
@@ -155,7 +155,8 @@ class BmaAccess(QObject):
         if need_reload:
             nodes = self._network.synced_nodes
             if len(nodes) > 0:
-                for i in range(0, 6):
+                tries = 0
+                while tries < 3:
                     node = random.choice(nodes)
                     conn_handler = node.endpoint.conn_handler()
                     req = request(conn_handler, **req_args)
@@ -166,9 +167,11 @@ class BmaAccess(QObject):
                     except ValueError as e:
                         if '404' in str(e) or '400' in str(e):
                             raise
-                        continue
+                        tries += 1
                     except ClientError:
-                        continue
+                        tries += 1
+            else:
+                raise NoPeerAvailable("", nodes)
         return json_data
 
     def simple_request(self, request, req_args={}, get_args={}):
@@ -205,10 +208,13 @@ class BmaAccess(QObject):
         """
         nodes = self._network.online_nodes
         replies = []
-        for node in nodes:
-            logging.debug("Trying to connect to : " + node.pubkey)
-            conn_handler = node.endpoint.conn_handler()
-            req = request(conn_handler, **req_args)
-            reply = yield from req.post(**post_args)
-            replies.append(reply)
+        if len(nodes) > 0:
+            for node in nodes:
+                logging.debug("Trying to connect to : " + node.pubkey)
+                conn_handler = node.endpoint.conn_handler()
+                req = request(conn_handler, **req_args)
+                reply = yield from req.post(**post_args)
+                replies.append(reply)
+        else:
+            raise NoPeerAvailable("", nodes)
         return tuple(replies)
diff --git a/src/cutecoin/core/net/node.py b/src/cutecoin/core/net/node.py
index 1ba1bd32fe150c275917b07b0b5aa98ac70fe3d4..4c25fdbf0e7fbb08492924d85e7c9699c7392162 100644
--- a/src/cutecoin/core/net/node.py
+++ b/src/cutecoin/core/net/node.py
@@ -12,6 +12,7 @@ from ucoinpy.api import bma as bma
 from ucoinpy.api.bma import ConnectionHandler
 
 import asyncio
+from aiohttp.errors import ClientError
 import logging
 import time
 import json
@@ -251,6 +252,7 @@ class Node(QObject):
                                                                         self.state, new_state))
         if self._state != new_state:
             self.last_change = time.time()
+            self.changed.emit()
         self._state = new_state
 
     @property
@@ -305,6 +307,9 @@ class Node(QObject):
                 self.set_block(None)
             logging.debug("Error in block reply")
             self.changed.emit()
+        except ClientError:
+            logging.debug("Client error : {0}".format(self.pubkey))
+            self.state = Node.OFFLINE
         except asyncio.TimeoutError:
             logging.debug("Timeout error : {0}".format(self.pubkey))
             self.state = Node.OFFLINE
@@ -335,6 +340,9 @@ class Node(QObject):
         except ValueError as e:
             logging.debug("Error in peering reply : {0}".format(str(e)))
             self.changed.emit()
+        except ClientError:
+            logging.debug("Client error : {0}".format(self.pubkey))
+            self.state = Node.OFFLINE
         except asyncio.TimeoutError:
             logging.debug("Timeout error : {0}".format(self.pubkey))
             self.state = Node.OFFLINE
@@ -353,6 +361,9 @@ class Node(QObject):
         except ValueError as e:
             logging.debug("Error in summary : {0}".format(e))
             self.changed.emit()
+        except ClientError:
+            logging.debug("Client error : {0}".format(self.pubkey))
+            self.state = Node.OFFLINE
         except asyncio.TimeoutError:
             logging.debug("Timeout error : {0}".format(self.pubkey))
             self.state = Node.OFFLINE
@@ -379,6 +390,9 @@ class Node(QObject):
             else:
                 logging.debug("error in uid reply")
                 self.changed.emit()
+        except ClientError:
+            logging.debug("Client error : {0}".format(self.pubkey))
+            self.state = Node.OFFLINE
         except asyncio.TimeoutError:
             logging.debug("Timeout error : {0}".format(self.pubkey))
             self.state = Node.OFFLINE
@@ -409,6 +423,9 @@ class Node(QObject):
         except ValueError as e:
             logging.debug("Error in peers reply")
             self.changed.emit()
+        except ClientError:
+            logging.debug("Client error : {0}".format(self.pubkey))
+            self.state = Node.OFFLINE
         except asyncio.TimeoutError:
             logging.debug("Timeout error : {0}".format(self.pubkey))
             self.state = Node.OFFLINE
diff --git a/src/cutecoin/core/registry/identities.py b/src/cutecoin/core/registry/identities.py
index bb9b41d8263431e4bcfc2e0289c0c4478fc1157c..0132ba97de2539e83d71db89c2e0798ba2b7f0ae 100644
--- a/src/cutecoin/core/registry/identities.py
+++ b/src/cutecoin/core/registry/identities.py
@@ -6,6 +6,7 @@ import json
 import asyncio
 import logging
 from aiohttp.errors import ClientError
+from ...tools.exceptions import NoPeerAvailable
 
 
 class IdentitiesRegistry:
@@ -69,8 +70,12 @@ class IdentitiesRegistry:
                     return identity
                 except ValueError as e:
                     lookup_tries += 1
+                except asyncio.TimeoutError:
+                    lookup_tries += 1
                 except ClientError:
                     lookup_tries += 1
+                except NoPeerAvailable:
+                    return identity
             return identity
 
         if pubkey in self._instances:
@@ -91,8 +96,12 @@ class IdentitiesRegistry:
                         return (yield from lookup())
                     else:
                         tries += 1
+                except asyncio.TimeoutError:
+                    tries += 1
                 except ClientError:
                     tries += 1
+                except NoPeerAvailable:
+                    return identity
         return identity
 
     def from_handled_data(self, uid, pubkey, blockchain_state):