diff --git a/src/main/java/fucoin/AbstractNode.java b/src/main/java/fucoin/AbstractNode.java
index de7f5876c7ef5bd882865d7cffc72ca030b0e697..437262c5c1f4f7472674e58e445abb1104136d56 100644
--- a/src/main/java/fucoin/AbstractNode.java
+++ b/src/main/java/fucoin/AbstractNode.java
@@ -3,6 +3,7 @@ package fucoin;
 import akka.actor.ActorRef;
 import akka.actor.Address;
 import akka.actor.UntypedActor;
+import fucoin.actions.transaction.ActionGetAmount;
 import fucoin.wallet.AbstractWallet;
 
 import java.io.Serializable;
@@ -58,6 +59,7 @@ public abstract class AbstractNode extends UntypedActor implements Serializable
     public boolean addKnownNeighbor(String key, ActorRef value) {
         if (!knownNeighbors.containsKey(key)) {
             knownNeighbors.put(key, value);
+            value.tell(new ActionGetAmount(), getSelf());
             return true;
         }
         return false;
diff --git a/src/main/java/fucoin/Main.java b/src/main/java/fucoin/Main.java
index 36991aba69288b73e9196b5b2199d35abdb90fa6..756873a3d3d8ba9599b02dc42571d6fe670c9b48 100644
--- a/src/main/java/fucoin/Main.java
+++ b/src/main/java/fucoin/Main.java
@@ -16,7 +16,7 @@ import java.util.List;
 
 public class Main {
 
-    private static int numberOfWallets = 1;
+    private static int numberOfWallets = 2;
 
     private static ActorSystem cSystem;
 
@@ -38,6 +38,8 @@ public class Main {
         //Init System Actor System
         cSystem = ActorSystem.create("Core", config);
         cSuperVisorActor = cSystem.actorOf(SuperVisorImpl.props(), "SuperVisorImpl");
+        System.out.print("Supervisor address: ");
+        System.out.println(cSuperVisorActor.path().toStringWithAddress(cSystem.provider().getDefaultAddress()));
     }
 
     public static void main(String[] args) throws InterruptedException {
diff --git a/src/main/java/fucoin/MainRemote.java b/src/main/java/fucoin/MainRemote.java
index 9080f7b4e42d96b7b62f22f6c787fd00da6efb46..29b574cc6595569b21b7d5d776c541e5ec732c7a 100644
--- a/src/main/java/fucoin/MainRemote.java
+++ b/src/main/java/fucoin/MainRemote.java
@@ -34,7 +34,7 @@ public class MainRemote {
 		//System.out.println(system.actorSelection(ActorPath.fromString(path)));
 		
 		//System.out.println(ActorPath.isValidPathElement(""+address+"/user/Main"));
-		ActorRef a1 = system.actorOf(WalletImpl.props(null,"","Main2",remoteSuperVisorActor),"Main2");
+		ActorRef a1 = system.actorOf(WalletImpl.props(null,"","Remote1",remoteSuperVisorActor),"Remote1");
 		
 	}
 }
diff --git a/src/main/java/fucoin/actions/join/ActionJoin.java b/src/main/java/fucoin/actions/join/ActionJoin.java
index e224ddb34fd577e7e1349f31725444bfdbb27c2d..ba31e58344a8a26fb4162f6c6dd63d8357e55746 100644
--- a/src/main/java/fucoin/actions/join/ActionJoin.java
+++ b/src/main/java/fucoin/actions/join/ActionJoin.java
@@ -3,17 +3,18 @@ package fucoin.actions.join;
 import akka.actor.ActorRef;
 import akka.actor.UntypedActorContext;
 import fucoin.AbstractNode;
+import fucoin.actions.ClientAction;
+import fucoin.wallet.AbstractWallet;
 
 //Used to join the network (a pre known participant/WalletImpl must be known)
-public class ActionJoin extends GeneralAction {
+public class ActionJoin extends ClientAction {
 
     @Override
-    protected void onAction(ActorRef sender, ActorRef self,
-                            UntypedActorContext context, AbstractNode node) {
-        ActionJoinAnswer aja = new ActionJoinAnswer();
+    protected void onAction(ActorRef sender, ActorRef self, UntypedActorContext context, AbstractWallet node) {
+        ActionJoinAnswer aja = new ActionJoinAnswer(node.getRemoteSuperVisorActor());
         aja.someNeighbors.putAll(node.getKnownNeighbors());
-        System.out.println("Answer to "+sender.path().name());
+        System.out.println("Answer to " + sender.path().name());
         sender.tell(aja, self);
+        //node.addKnownNeighbor(sender.path().name(), sender);
     }
-
 }
diff --git a/src/main/java/fucoin/actions/join/ActionJoinAnswer.java b/src/main/java/fucoin/actions/join/ActionJoinAnswer.java
index 0f534a3e6edb22e595dd6e67e7d99919aab9a21b..7fe445708935e1fdd80bb60cd32f44f6660dcfbc 100644
--- a/src/main/java/fucoin/actions/join/ActionJoinAnswer.java
+++ b/src/main/java/fucoin/actions/join/ActionJoinAnswer.java
@@ -4,6 +4,7 @@ import akka.actor.ActorRef;
 import akka.actor.UntypedActorContext;
 import fucoin.actions.ClientAction;
 import fucoin.actions.persist.ActionSearchMyWallet;
+import fucoin.actions.transaction.ActionGetAmount;
 import fucoin.wallet.AbstractWallet;
 
 import java.util.HashMap;
@@ -13,6 +14,11 @@ import java.util.Map.Entry;
 // and/or local neighbors
 public class ActionJoinAnswer extends ClientAction {
     public final HashMap<String, ActorRef> someNeighbors = new HashMap<>();
+    public final ActorRef supervisor;
+
+    public ActionJoinAnswer(ActorRef supervisor) {
+        this.supervisor = supervisor;
+    }
 
     protected void onAction(ActorRef sender, ActorRef self,
                             UntypedActorContext context, AbstractWallet wallet) {
@@ -23,6 +29,11 @@ public class ActionJoinAnswer extends ClientAction {
         for (Entry<String, ActorRef> neighbor : someNeighbors.entrySet()) {
             neighbor.getValue().tell(new ActionSearchMyWallet(wallet.getName()), self);
         }
+
+        if (wallet.getRemoteSuperVisorActor() == null) {
+            wallet.setRemoteSuperVisorActor(supervisor);
+            supervisor.tell(new ServerActionJoin(wallet.getName()), self);
+        }
     }
 
 }
diff --git a/src/main/java/fucoin/actions/join/ServerActionJoin.java b/src/main/java/fucoin/actions/join/ServerActionJoin.java
index d7b78fff8a9b07cebea0a59d479fa8a6f27ede0d..7a606923ea9224d72e22a5e811bbf04733a0e469 100644
--- a/src/main/java/fucoin/actions/join/ServerActionJoin.java
+++ b/src/main/java/fucoin/actions/join/ServerActionJoin.java
@@ -16,7 +16,7 @@ public class ServerActionJoin extends SuperVisorAction {
     @Override
     protected void onAction(ActorRef sender, ActorRef self,
                             UntypedActorContext context, SuperVisorImpl node) {
-        ActionJoinAnswer aja = new ActionJoinAnswer();
+        ActionJoinAnswer aja = new ActionJoinAnswer(node.getSelf());
         aja.someNeighbors.putAll(node.getKnownNeighbors());
         sender.tell(aja, self);
         node.addKnownNeighbor(name, sender);
diff --git a/src/main/java/fucoin/actions/transaction/ActionGetAmountAnswer.java b/src/main/java/fucoin/actions/transaction/ActionGetAmountAnswer.java
index f8334fb043c50cc1b4b66bb42786a8b2dbfb074a..6113cde0c3ceb054a314a71792192b425637060c 100644
--- a/src/main/java/fucoin/actions/transaction/ActionGetAmountAnswer.java
+++ b/src/main/java/fucoin/actions/transaction/ActionGetAmountAnswer.java
@@ -20,7 +20,7 @@ public class ActionGetAmountAnswer extends Transaction {
 	@Override
 	protected void onAction(ActorRef sender, ActorRef self,
 			UntypedActorContext context, AbstractWallet wallet) {
-
+		wallet.amounts.put(sender, amount);
 	}
 
 }
diff --git a/src/main/java/fucoin/actions/transaction/ActionPrepareDistributedCommittedTransfer.java b/src/main/java/fucoin/actions/transaction/ActionPrepareDistributedCommittedTransfer.java
index 7e7de88bf5a58168b49d67a333dedd266fe90cb7..078318970b6f9ab0c92e5d932c2e51452916c6ae 100644
--- a/src/main/java/fucoin/actions/transaction/ActionPrepareDistributedCommittedTransfer.java
+++ b/src/main/java/fucoin/actions/transaction/ActionPrepareDistributedCommittedTransfer.java
@@ -32,6 +32,12 @@ public class ActionPrepareDistributedCommittedTransfer extends Transaction {
                         //sender have enough money
                         && wallet.amounts.getOrDefault(source, 0) >= amount));
 
+        if (granted) {
+            wallet.log("I do grant transaction.");
+        } else {
+            wallet.log("I do not grant.");
+        }
+
         sender.tell(new ActionPrepareDistributedCommittedTransferAnswer(source, target, amount, timestamp, granted, id), self);
     }
 
diff --git a/src/main/java/fucoin/wallet/AbstractWallet.java b/src/main/java/fucoin/wallet/AbstractWallet.java
index a9fd926b303332e5b12d3549d5e1d3fb302568c1..186444d37eecdebd500f83421e842efb1bf06b12 100644
--- a/src/main/java/fucoin/wallet/AbstractWallet.java
+++ b/src/main/java/fucoin/wallet/AbstractWallet.java
@@ -65,6 +65,8 @@ public abstract class AbstractWallet extends AbstractNode {
 
     public abstract ActorRef getRemoteSuperVisorActor();
 
+    public abstract void setRemoteSuperVisorActor(ActorRef remoteSuperVisorActor);
+
     public abstract void logTransaction(String msg);
 
     public abstract void send(String address, int amount);
diff --git a/src/main/java/fucoin/wallet/WalletImpl.java b/src/main/java/fucoin/wallet/WalletImpl.java
index 7efa22df6d2615a8a31d4be0fa3474b2fa8ca2cb..c0fdf2cda5ec1256b53f7f95f6bc03411e67ec7b 100644
--- a/src/main/java/fucoin/wallet/WalletImpl.java
+++ b/src/main/java/fucoin/wallet/WalletImpl.java
@@ -6,8 +6,10 @@ import akka.actor.Props;
 import fucoin.actions.ClientAction;
 import fucoin.actions.join.ActionJoin;
 import fucoin.actions.join.ActionJoinAnswer;
+import fucoin.actions.join.ServerActionJoin;
 import fucoin.actions.persist.ActionInvokeLeave;
 import fucoin.actions.persist.ActionInvokeRevive;
+import fucoin.actions.transaction.ActionGetAmount;
 import fucoin.actions.transaction.ActionGetAmountAnswer;
 import fucoin.actions.transaction.ActionInvokeSentMoney;
 import fucoin.gui.WalletGuiControl;
@@ -34,9 +36,10 @@ public class WalletImpl extends AbstractWallet {
         this.remoteSuperVisorActor = remoteSuperVisorActor;
 
         if(remoteSuperVisorActor == null){
-            String path = JOptionPane.showInputDialog(null, "Enter a neighbour address: ");
+            String path = JOptionPane.showInputDialog(null, "Enter a supervisor address: ");
             System.out.println(path);
             ActorSelection selection = getContext().actorSelection(path);
+            //this.setRemoteSuperVisorActor(selection.anchor());
             selection.tell(new ActionJoin(), self());
             //selection.tell("Hallo!", self());
         }
@@ -70,9 +73,9 @@ public class WalletImpl extends AbstractWallet {
             ((ClientAction) message).doAction(this);
         }
 
-        if (message instanceof ActionJoin){
+        /*if (message instanceof ActionJoin){
             ((ActionJoin) message).doAction(this);
-        }
+        }*/
 
     }
 
@@ -86,7 +89,7 @@ public class WalletImpl extends AbstractWallet {
         if (preKnownNeighbour != null) {
             addKnownNeighbor(preKnownNeighbourName, preKnownNeighbour);
             preKnownNeighbour.tell(new ActionJoin(), getSelf());
-            ActionJoinAnswer aja = new ActionJoinAnswer();
+            ActionJoinAnswer aja = new ActionJoinAnswer(this.getRemoteSuperVisorActor());
             aja.someNeighbors.putAll(getKnownNeighbors());
             aja.someNeighbors.put(name, getSelf());
             preKnownNeighbour.tell(aja, getSelf());
@@ -116,6 +119,8 @@ public class WalletImpl extends AbstractWallet {
 
     public void setAmount(int amount) {
         this.amount = amount;
+        System.out.print("Setting amount and supervisor is: ");
+        System.out.println(remoteSuperVisorActor);
         if (remoteSuperVisorActor != null) {
             remoteSuperVisorActor.tell(new ActionGetAmountAnswer(getAddress(), getName(), amount), getSelf());
         }