diff --git a/app/modules/bma/lib/bma.ts b/app/modules/bma/lib/bma.ts
index d3a2967c7a23808d0c9adff2b65901cf704a2eb0..6569d3f6033116de7690f40efddc798608fd1f5c 100644
--- a/app/modules/bma/lib/bma.ts
+++ b/app/modules/bma/lib/bma.ts
@@ -10,6 +10,7 @@ import {TransactionBinding} from "./controllers/transactions"
 import {UDBinding} from "./controllers/uds"
 import {PeerDTO} from "../../../lib/dto/PeerDTO"
 import {BlockDTO} from "../../../lib/dto/BlockDTO"
+import {OtherConstants} from "../../../lib/other_constants"
 
 const co = require('co');
 const es = require('event-stream');
@@ -132,16 +133,24 @@ export const bma = function(server:Server, interfaces:NetworkInterface[], httpLo
     });
     wssPeer.broadcast = (data:any) => wssPeer.clients.forEach((client:any) => client.send(data));
 
-    // Forward blocks & peers
+    // Forward current HEAD change
     server
-      .pipe(es.mapSync(function(data:any) {
-        try {
-          // Broadcast block
-          if (data.joiners) {
-            currentBlock = data;
+      .on('bcEvent', (e) => {
+        if (e.bcEvent === OtherConstants.BC_EVENT.HEAD_CHANGED || e.bcEvent === OtherConstants.BC_EVENT.SWITCHED) {
+          try {
+            // Broadcast block
+            currentBlock = e.block;
             const blockDTO:BlockDTO = BlockDTO.fromJSONObject(currentBlock)
             wssBlock.broadcast(JSON.stringify(block2HttpBlock(blockDTO)))
+          } catch (e) {
+            logger && logger.error('error on ws mapSync:', e);
           }
+        }
+      })
+    // Forward peers documents
+    server
+      .pipe(es.mapSync(function(data:any) {
+        try {
           // Broadcast peer
           if (data.endpoints) {
             const peerDTO = PeerDTO.fromJSONObject(data)