diff --git a/src/main/java/fucoin/actions/join/ActionJoinAnswer.java b/src/main/java/fucoin/actions/join/ActionJoinAnswer.java
index 89c4aadba026ce04ef9b2190b21566fdb7e68874..4b6cdd2f96bed048e45ba74ed5e81927f4e6f29b 100644
--- a/src/main/java/fucoin/actions/join/ActionJoinAnswer.java
+++ b/src/main/java/fucoin/actions/join/ActionJoinAnswer.java
@@ -28,7 +28,7 @@ public class ActionJoinAnswer extends ClientAction {
     protected void onAction(ActorRef sender, ActorRef self,
                             UntypedActorContext context, AbstractWallet wallet) {
 
-        wallet.addLogMsg("Addressed to " + self.path().name() + " from " + sender.path().name() + ": someNeighbors:" + someNeighbors);
+        //wallet.addLogMsg("Addressed to " + self.path().name() + " from " + sender.path().name() + ": someNeighbors:" + someNeighbors);
 
         // your neighbours? my neighbours!
         for (Entry<String, ActorRef> neighbor : someNeighbors.entrySet()) {
diff --git a/src/main/java/fucoin/actions/transaction/ActionCommitDistributedCommittedTransfer.java b/src/main/java/fucoin/actions/transaction/ActionCommitDistributedCommittedTransfer.java
index 641fc121d4a38b970df45fb99e3d9c179bc56ad6..30c236cce5ebddbac4fbe059253555c503c36c0c 100644
--- a/src/main/java/fucoin/actions/transaction/ActionCommitDistributedCommittedTransfer.java
+++ b/src/main/java/fucoin/actions/transaction/ActionCommitDistributedCommittedTransfer.java
@@ -43,7 +43,7 @@ public class ActionCommitDistributedCommittedTransfer extends ClientAction {
     @Override
     protected void onAction(ActorRef sender, ActorRef self,
                             UntypedActorContext context, AbstractWallet wallet) {
-        wallet.addLogMsg("ActionCommitDistributedCommittedTransfer is granted? " + granted);
+        //wallet.addLogMsg("ActionCommitDistributedCommittedTransfer is granted? " + granted);
         if (granted) {
 
             if (source.compareTo(self) == 0) {
@@ -75,7 +75,6 @@ public class ActionCommitDistributedCommittedTransfer extends ClientAction {
             }
 
         }
-        //wallet.addLogMsg("wallet.amounts:" + wallet.amounts);
     }
 
 }
diff --git a/src/main/java/fucoin/actions/transaction/ActionInvokeDistributedCommittedTransfer.java b/src/main/java/fucoin/actions/transaction/ActionInvokeDistributedCommittedTransfer.java
index b277c64a9c613d842769089275996769947c0f60..82490ee04492fc29e4741b02128160d9b9f8fa83 100644
--- a/src/main/java/fucoin/actions/transaction/ActionInvokeDistributedCommittedTransfer.java
+++ b/src/main/java/fucoin/actions/transaction/ActionInvokeDistributedCommittedTransfer.java
@@ -28,9 +28,9 @@ public class ActionInvokeDistributedCommittedTransfer extends CoordinatorTransac
     @Override
     protected void onAction(ActorRef sender, ActorRef self,
                             UntypedActorContext context, SuperVisorImpl superVisor) {
-        superVisor.addLogMsg("invoke transaction " + source.path().name() +
+        /*superVisor.addLogMsg("invoke transaction " + source.path().name() +
                 " sends " + amount +
-                " to " + target.path().name());
+                " to " + target.path().name());*/
 
         long timeout = System.currentTimeMillis() + 500;
 
diff --git a/src/main/java/fucoin/actions/transaction/ActionPrepareDistributedCommittedTransferAnswer.java b/src/main/java/fucoin/actions/transaction/ActionPrepareDistributedCommittedTransferAnswer.java
index db21831de14d3e95c2d30f335586f35052dc307c..d7c9f45f6d58c11eaa6895e4ad5633f42c8ae83c 100644
--- a/src/main/java/fucoin/actions/transaction/ActionPrepareDistributedCommittedTransferAnswer.java
+++ b/src/main/java/fucoin/actions/transaction/ActionPrepareDistributedCommittedTransferAnswer.java
@@ -28,7 +28,7 @@ public class ActionPrepareDistributedCommittedTransferAnswer extends Coordinator
     protected void onAction(ActorRef sender, ActorRef self,
                             UntypedActorContext context, SuperVisorImpl superVisor) {
 
-        superVisor.addLogMsg("granted?" + granted);
+        //superVisor.addLogMsg("granted?" + granted);
 
         DistributedCommittedTransferRequest request = superVisor.getRequest(id);
 
diff --git a/src/main/java/fucoin/configurations/AbstractConfiguration.java b/src/main/java/fucoin/configurations/AbstractConfiguration.java
index 267266581029a6c6c33745f3d11a3fe749edd5e1..c136b211e2fd01cefb9bdc743f4d25a00c5fd865 100644
--- a/src/main/java/fucoin/configurations/AbstractConfiguration.java
+++ b/src/main/java/fucoin/configurations/AbstractConfiguration.java
@@ -38,6 +38,7 @@ public abstract class AbstractConfiguration extends AbstractNode {
     private Timeout timeout = new Timeout(Duration.create(10, "seconds"));
 
     private int remainingTransactions;
+    private Callback callback;
 
     private ActorRef lastWallet = null;
 
@@ -117,7 +118,11 @@ public abstract class AbstractConfiguration extends AbstractNode {
     }
 
     protected void randomTransactions(int number, int maxTransactionsAtTheSameTime) {
+        randomTransactions(number, maxTransactionsAtTheSameTime, null);
+    }
 
+    protected void randomTransactions(int number, int maxTransactionsAtTheSameTime, Callback callback) {
+        this.callback = callback;
         remainingTransactions = number;
 
         for (int i = 0; i < Math.min(number, maxTransactionsAtTheSameTime); i++) {
@@ -131,8 +136,9 @@ public abstract class AbstractConfiguration extends AbstractNode {
         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;
+            callback = null;
         }
     }
 
@@ -184,6 +190,11 @@ public abstract class AbstractConfiguration extends AbstractNode {
 
             if (remainingTransactions > 0) {
                 nextRandomTransaction();
+            } else {
+                if (callback != null) {
+                    callback.transactionsFinished();
+                }
+                callback = null;
             }
         }
     }
@@ -223,4 +234,8 @@ public abstract class AbstractConfiguration extends AbstractNode {
             wallet.tell(new ActionAddOverlayNeighbours(overlayNeighbours), self());
         });
     }
+
+    interface Callback {
+        public void transactionsFinished();
+    }
 }
diff --git a/src/main/java/fucoin/configurations/MassWalletConfiguration.java b/src/main/java/fucoin/configurations/MassWalletConfiguration.java
index fcaaadf3cea173e7b0cf3fa6fc038fbee5dcecae..aa71371d86f926d1fb81d1c2774c5720ee36e138 100644
--- a/src/main/java/fucoin/configurations/MassWalletConfiguration.java
+++ b/src/main/java/fucoin/configurations/MassWalletConfiguration.java
@@ -17,7 +17,7 @@ public class MassWalletConfiguration extends AbstractConfiguration {
             System.out.println("Wallet spawning timed out!");
         }
 
-        randomTransactions(100, 10);
+        randomTransactions(10, 2, () -> System.out.println("All random transactions finished!"));
     }
 
     @Override
diff --git a/src/main/java/fucoin/wallet/WalletImpl.java b/src/main/java/fucoin/wallet/WalletImpl.java
index 951a1519f91fa609e143fce37a554279eebcecbb..d77d6fd423ac17c4d276fb67def1ecbfd6723896 100644
--- a/src/main/java/fucoin/wallet/WalletImpl.java
+++ b/src/main/java/fucoin/wallet/WalletImpl.java
@@ -61,7 +61,7 @@ public class WalletImpl extends AbstractWallet {
     @Override
     public void onReceive(Object message) {
 
-        addLogMsg(getSender().path().name() + " invokes " + getSelf().path().name() + " to do " + message.getClass().getSimpleName());
+        //addLogMsg(getSender().path().name() + " invokes " + getSelf().path().name() + " to do " + message.getClass().getSimpleName());
         if (message instanceof ActionInvokeRevive) {
             ((ActionInvokeRevive) message).doAction(this);
         }