diff --git a/src/main/java/fucoin/actions/transaction/ActionCommitDistributedCommittedTransfer.java b/src/main/java/fucoin/actions/transaction/ActionCommitDistributedCommittedTransfer.java
index 2605a2f2ce687183f409e4059d77ef95cec537cf..0c7cbc5ca668b0612c0bbac4ba52da35d6ec7552 100644
--- a/src/main/java/fucoin/actions/transaction/ActionCommitDistributedCommittedTransfer.java
+++ b/src/main/java/fucoin/actions/transaction/ActionCommitDistributedCommittedTransfer.java
@@ -70,7 +70,7 @@ public class ActionCommitDistributedCommittedTransfer extends ClientAction {
 
         }
         // recipient should notify a possible observer
-        if (observer != null) {
+        if (observer != null && granted) {
             observer.tell(new ActionNotifyObserver(source, target, amount, granted, timestamp, id), self);
         }
         //wallet.addLogMsg("wallet.amounts:" + wallet.amounts);
diff --git a/src/main/java/fucoin/actions/transaction/ActionInvokeSentMoney.java b/src/main/java/fucoin/actions/transaction/ActionInvokeSentMoney.java
index 81fa556b6da8247929ca4eed973a83f52ebfce58..c6eda7cdfe053d1e518701115ae54cdaa07df9d1 100644
--- a/src/main/java/fucoin/actions/transaction/ActionInvokeSentMoney.java
+++ b/src/main/java/fucoin/actions/transaction/ActionInvokeSentMoney.java
@@ -20,12 +20,14 @@ public class ActionInvokeSentMoney extends Transaction {
     @Override
     protected void onAction(ActorRef sender, ActorRef self,
                             UntypedActorContext context, AbstractWallet wallet) {
-        wallet.addLogMsg(wallet.getKnownNeighbors() + "");
+
         if (wallet.getKnownNeighbors().containsKey(name)) {
+            wallet.addLogMsg("Sender knows Wallet " + name);
             wallet.getRemoteSuperVisorActor().tell(
                     new ActionInvokeDistributedCommittedTransfer(self, wallet.getKnownNeighbors().get(name),
                             amount, observer), sender);
         } else {
+            wallet.addLogMsg("Sender don't knows Wallet " + name);
             //Search the wallet
             ActionSearchWalletReference aswr = new ActionSearchWalletReference(name);
             //Ask all neighbors
diff --git a/src/main/java/fucoin/configurations/AbstractConfiguration.java b/src/main/java/fucoin/configurations/AbstractConfiguration.java
index 5be8b9aba2c8e7a0b2dc15873033acb66fc7c220..3032373135fa2b679eebc00fbd700950ccc924fa 100644
--- a/src/main/java/fucoin/configurations/AbstractConfiguration.java
+++ b/src/main/java/fucoin/configurations/AbstractConfiguration.java
@@ -12,7 +12,6 @@ import fucoin.actions.control.ActionWalletSendMoney;
 import fucoin.actions.join.ActionTellSupervisor;
 import fucoin.actions.transaction.ActionGetAmount;
 import fucoin.actions.transaction.ActionGetAmountAnswer;
-import fucoin.actions.transaction.ActionInvokeDistributedCommittedTransfer;
 import fucoin.actions.transaction.ActionNotifyObserver;
 import fucoin.configurations.internal.ConfigurationCreator;
 import fucoin.supervisor.SuperVisorImpl;
@@ -37,7 +36,7 @@ public abstract class AbstractConfiguration extends AbstractNode {
 
     private Timeout timeout = new Timeout(Duration.create(10, "seconds"));
 
-    private int remainingTransactions;
+    protected int remainingTransactions;
 
     public static Props props(Class configurationClass) {
 
@@ -65,20 +64,18 @@ public abstract class AbstractConfiguration extends AbstractNode {
         if (numOfWallets == 0) {
             props = WalletImpl.props(null, name, createGUI);
         } else {
-            props = WalletImpl.props(activeActors.get(numOfWallets - 1), name, createGUI);
+            ActorRef knownNeighbour = activeActors.get(ThreadLocalRandom.current().nextInt(activeActors.size()));
+            props = WalletImpl.props(knownNeighbour, name, createGUI);
         }
 
         ActorRef actorRef = context().actorOf(props, name);
 
         activeActors.add(actorRef);
 
-        //if (numOfWallets == 0) {
+        //Tell the new Wallet the SuperVisor,
+        //probably knownNeighbour isn't so far and can tell the him.
         actorRef.tell(new ActionTellSupervisor(superVisor), superVisor);
-        /*
-        superVisor.tell( new ActionInvokeDistributedCommittedTransfer(superVisor,
-                actorRef, 100, superVisor), actorRef);
-                */
-        //}
+
 
         return actorRef;
     }
@@ -118,12 +115,16 @@ public abstract class AbstractConfiguration extends AbstractNode {
 
     }
 
-    private void nextRandomTransaction() {
+    protected void nextRandomTransaction() {
+        if (remainingTransactions <= 0) {
+            return;
+        }
+
         remainingTransactions--;
         try {
             randomTransaction();
         } catch (Exception e) {
-            System.err.println("Error while trying to perform a random transaction: "+e.getMessage());
+            System.err.println("Error while trying to perform a random transaction: " + e.getMessage());
             remainingTransactions = 0;
         }
     }
@@ -139,8 +140,8 @@ public abstract class AbstractConfiguration extends AbstractNode {
         Future<Object> futureNeighbour = Patterns.ask(sender, new ActionWalletGetNeighbours(), timeout);
         ActionWalletGetNeighboursAnswer neighboursAnswer = (ActionWalletGetNeighboursAnswer) Await.result(futureNeighbour,
                 timeout.duration());
-        for (int i=1; i < wallets.size(); i++) {
-            if (neighboursAnswer.getNeighbour().containsValue(wallets.get(i))) {
+        for (int i = 1; i < wallets.size(); i++) {
+            if (!wallets.get(i).equals(sender) && neighboursAnswer.getNeighbour().containsValue(wallets.get(i))) {
                 recipient = wallets.get(i);
             }
         }
diff --git a/src/main/java/fucoin/configurations/MassWalletConfiguration.java b/src/main/java/fucoin/configurations/MassWalletConfiguration.java
index bbcd338eab884d3d2fe50ce89ba0d92b1182e93d..dc2631707f7014e9673e80dde61dba9fa55b8bab 100644
--- a/src/main/java/fucoin/configurations/MassWalletConfiguration.java
+++ b/src/main/java/fucoin/configurations/MassWalletConfiguration.java
@@ -8,6 +8,7 @@ import fucoin.configurations.internal.ConfigurationName;
  */
 @ConfigurationName("Lots of Wallets")
 public class MassWalletConfiguration extends AbstractConfiguration {
+    private boolean runRandomTransactions = false;
     @Override
     public void run() {
         initSupervisor();
@@ -18,12 +19,17 @@ public class MassWalletConfiguration extends AbstractConfiguration {
         } catch (Exception e) {
             System.out.println("Wallet spawning timed out!");
         }
-
-        randomTransactions(100, 10);
+        remainingTransactions = 100;
+        runRandomTransactions = true;
+        nextRandomTransaction();
+        //randomTransactions(100, 10);
     }
 
     @Override
     public void onReceive(Object message) {
+        if (message instanceof ActionNotifyObserver && runRandomTransactions) {
+            nextRandomTransaction();
+        }
         super.onReceive(message);
     }
 }