diff --git a/banking-client/src/main/java/ufrn/imd/controller/Controller.java b/banking-client/src/main/java/ufrn/imd/controller/Controller.java
index 580d6e5bd0706569fec236bf1337a7adbf06e7f8..ab932a257b9079b16d646302917bf7b768d00eb4 100644
--- a/banking-client/src/main/java/ufrn/imd/controller/Controller.java
+++ b/banking-client/src/main/java/ufrn/imd/controller/Controller.java
@@ -1,10 +1,13 @@
 package ufrn.imd.controller;
 
 import ufrn.imd.domain.Client;
+import ufrn.imd.utils.ServerResponse;
 
 import java.rmi.Remote;
 import java.rmi.RemoteException;
 
 public interface Controller extends Remote {
     public void registerClient(Client client) throws RemoteException;
+
+    public ServerResponse getResponse(Client client) throws RemoteException;
 }
diff --git a/banking-client/src/main/java/ufrn/imd/utils/MachineState.java b/banking-client/src/main/java/ufrn/imd/utils/MachineState.java
index b7a227b0c320a833e457e69b08612342be8b1292..b810c0cc1104fe4426a0079faab304ba9f2783e2 100644
--- a/banking-client/src/main/java/ufrn/imd/utils/MachineState.java
+++ b/banking-client/src/main/java/ufrn/imd/utils/MachineState.java
@@ -2,6 +2,7 @@ package ufrn.imd.utils;
 
 import lombok.Data;
 import ufrn.imd.controller.Controller;
+import ufrn.imd.domain.Account;
 import ufrn.imd.domain.Client;
 
 import java.net.MalformedURLException;
@@ -10,19 +11,18 @@ import java.rmi.NotBoundException;
 import java.rmi.RemoteException;
 import java.util.Scanner;
 
+import static ufrn.imd.utils.NameSpace.HOST_BALANCE_SERVICE;
 import static ufrn.imd.utils.NameSpace.HOST_DEPOSIT_SERVICE;
 
 @Data
 public class MachineState {
 
     public static final String INITIAL= "INITIAL";
-    public static final String RENDER = "RENDER";
-    public static final String UPDATE_STATE = "UPDATE_STATE";
     public static final String READ = "READ";
     public static final String DEPOSIT = "DEPOSIT";
     public static final String BALANCE = "BALANCE";
 
-    public static final String HELP = "HELP";
+    public static final String START = "START";
     public static final String INVALID_INPUT = "INVALID_INPUT";
     public static final String QUIT = "QUIT";
 
@@ -42,32 +42,48 @@ public class MachineState {
 
     public void update() {
         if(state.equals(INITIAL)) {
-            state = HELP;
-        } else if(state.equals(HELP)) {
+            state = START;
+        } else if(state.equals(START)) {
             state = READ;
         } else if(state.equals(READ)) {
             state = inputValue;
         } else if(state.equals(INVALID_INPUT)) {
-            state = HELP;
+            state = START;
         } else if(state.equals(DEPOSIT)) {
-            state = HELP;
+            state = START;
+        } else if(state.equals(BALANCE)) {
+            state = START;
         }
     }
 
     public void processEvents() throws MalformedURLException, NotBoundException, RemoteException {
         if(state.equals(READ)) {
-            inputValue = new String();
             inputValue = sc.nextLine().trim().toUpperCase();
-            System.out.println(String.format(">>> input value: %s", inputValue));
-            if(!inputValue.equals(DEPOSIT) && !inputValue.equals(DEPOSIT) && !inputValue.equals(BALANCE)){
+            if(!inputValue.isEmpty() &&
+                    !inputValue.equals(QUIT) &&
+                    !inputValue.equals(DEPOSIT) &&
+                    !inputValue.equals(BALANCE)) {
                 inputValue = INVALID_INPUT;
             }
         } else if(state.equals(DEPOSIT)) {
-            double v = sc.nextDouble();
-            System.out.println(String.format(">>> input value: %.2f", v));
+            String v = sc.nextLine();
             Client client = new Client(1);
             Controller server = (Controller) Naming.lookup(HOST_DEPOSIT_SERVICE);
-            server.registerClient(client);
+            ServerResponse response = server.getResponse(client);
+            if(response.getStatus() == 200) {
+                System.out.println(
+                        String.format(">>> Your balance is: %.2f", ((Account)response.getBody()).getBalance())
+                );
+            }
+        } else if(state.equals(BALANCE)) {
+            Client client = new Client(1);
+            Controller server = (Controller) Naming.lookup(HOST_BALANCE_SERVICE);
+            ServerResponse response = server.getResponse(client);
+            if(response.getStatus() == 200) {
+                System.out.println(
+                        String.format(">>> Your balance is: %.2f", ((Account)response.getBody()).getBalance())
+                );
+            }
         }
     }
 
@@ -76,7 +92,7 @@ public class MachineState {
             if(state.equals(INITIAL)) {
                 System.out.println(">>> Initializing...");
                 Thread.sleep(1000);
-            } else if(state.equals(HELP)) {
+            } else if(state.equals(START)) {
                 System.out.println("These are the avaliable operations");
                 System.out.println("---------------------------------");
                 System.out.println(" - deposit \t - balance");
diff --git a/banking-client/src/main/java/ufrn/imd/utils/NameSpace.java b/banking-client/src/main/java/ufrn/imd/utils/NameSpace.java
index c3793547e6dee27aa654ce21634053dd6c23b448..4bc802f6489a95bc8c7e7d95101c782fdaf09d3d 100644
--- a/banking-client/src/main/java/ufrn/imd/utils/NameSpace.java
+++ b/banking-client/src/main/java/ufrn/imd/utils/NameSpace.java
@@ -2,5 +2,8 @@ package ufrn.imd.utils;
 
 public class NameSpace {
     public static final Integer PORT_DEPOSIT_SERVICE = 1907;
+    public static final Integer PORT_BALANCE_SERVICE = 1908;
     public static final String HOST_DEPOSIT_SERVICE = String.format("rmi://127.0.0.1:%d/%s", PORT_DEPOSIT_SERVICE, "deposit");
+    public static final String HOST_BALANCE_SERVICE = String.format("rmi://127.0.0.1:%d/%s", PORT_BALANCE_SERVICE, "balance");
+
 }
diff --git a/banking-client/src/main/java/ufrn/imd/utils/ServerResponse.java b/banking-client/src/main/java/ufrn/imd/utils/ServerResponse.java
new file mode 100644
index 0000000000000000000000000000000000000000..4c1115b4648ee5503d0ebdb68cc5982e97f96794
--- /dev/null
+++ b/banking-client/src/main/java/ufrn/imd/utils/ServerResponse.java
@@ -0,0 +1,20 @@
+package ufrn.imd.utils;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+public class ServerResponse implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private Integer status;
+    private String message;
+    private Object body;
+}
diff --git a/banking-server/src/main/java/ufrn/imd/BankingServerApp.java b/banking-server/src/main/java/ufrn/imd/BankingServerApp.java
index 7acd207f24982bf2667e354a6c1f35b77cf355af..39928e11f922805d6b10e203c631cd9b19c5364c 100644
--- a/banking-server/src/main/java/ufrn/imd/BankingServerApp.java
+++ b/banking-server/src/main/java/ufrn/imd/BankingServerApp.java
@@ -13,9 +13,9 @@ import java.rmi.RemoteException;
 
 public class BankingServerApp {
     public static void main(String[] args) throws RemoteException, MalformedURLException, AlreadyBoundException {
-
-        DepositServiceImpl depositService = new DepositServiceImpl(new ClientRepository());
-        BalanceServiceImpl balanceService = new BalanceServiceImpl(new ClientRepository());
+        ClientRepository clientRepository = new ClientRepository();
+        DepositServiceImpl depositService = new DepositServiceImpl(clientRepository);
+        BalanceServiceImpl balanceService = new BalanceServiceImpl(clientRepository);
 
         Controller depositController = new DepositControllerImpl(depositService);
         Controller balanceController = new BalanceControllerImpl(balanceService);
diff --git a/banking-server/src/main/java/ufrn/imd/controller/Controller.java b/banking-server/src/main/java/ufrn/imd/controller/Controller.java
index 824205a78effedd521e934e17809e5bfcc593a71..ab932a257b9079b16d646302917bf7b768d00eb4 100644
--- a/banking-server/src/main/java/ufrn/imd/controller/Controller.java
+++ b/banking-server/src/main/java/ufrn/imd/controller/Controller.java
@@ -1,6 +1,7 @@
 package ufrn.imd.controller;
 
 import ufrn.imd.domain.Client;
+import ufrn.imd.utils.ServerResponse;
 
 import java.rmi.Remote;
 import java.rmi.RemoteException;
@@ -8,4 +9,5 @@ import java.rmi.RemoteException;
 public interface Controller extends Remote {
     public void registerClient(Client client) throws RemoteException;
 
+    public ServerResponse getResponse(Client client) throws RemoteException;
 }
diff --git a/banking-server/src/main/java/ufrn/imd/controller/impl/BalanceControllerImpl.java b/banking-server/src/main/java/ufrn/imd/controller/impl/BalanceControllerImpl.java
index 0c51991cd1d1c609e46d4192e603a6ab4b568b83..8ae43332ba961fda0f7a7dcf5396e189462d47c3 100644
--- a/banking-server/src/main/java/ufrn/imd/controller/impl/BalanceControllerImpl.java
+++ b/banking-server/src/main/java/ufrn/imd/controller/impl/BalanceControllerImpl.java
@@ -3,6 +3,7 @@ package ufrn.imd.controller.impl;
 import ufrn.imd.controller.Controller;
 import ufrn.imd.domain.Client;
 import ufrn.imd.service.impl.BalanceServiceImpl;
+import ufrn.imd.utils.ServerResponse;
 
 import java.net.MalformedURLException;
 import java.rmi.AlreadyBoundException;
@@ -19,6 +20,7 @@ import static ufrn.imd.utils.NameSpace.PORT_BALANCE_SERVICE;
 public class BalanceControllerImpl extends UnicastRemoteObject implements Controller {
 
     private volatile Queue<Client> clients = new ArrayDeque<>();
+    private final BalanceServiceImpl service;
 
     public BalanceControllerImpl(BalanceServiceImpl service) throws RemoteException, MalformedURLException, AlreadyBoundException {
         super();
@@ -26,8 +28,8 @@ public class BalanceControllerImpl extends UnicastRemoteObject implements Contro
         LocateRegistry.createRegistry(PORT_BALANCE_SERVICE);
         Naming.bind(HOST_BALANCE_SERVICE, this);
         log.info("Starting Deposit service!");
-
-        new Notify(service).start();
+        this.service = service;
+//        new Notify(service).start();
         log.info(String.format("Initializing server in %s", HOST_BALANCE_SERVICE));
 
     }
@@ -39,7 +41,10 @@ public class BalanceControllerImpl extends UnicastRemoteObject implements Contro
         log.info(String.format("total users: %d", clients.size()));
     }
 
-
+    @Override
+    public ServerResponse getResponse(Client client) throws RemoteException {
+        return this.service.balance(Optional.of(client));
+    }
 
 
     private class Notify extends Thread{
diff --git a/banking-server/src/main/java/ufrn/imd/controller/impl/DepositControllerImpl.java b/banking-server/src/main/java/ufrn/imd/controller/impl/DepositControllerImpl.java
index d9b3df5950323de0002ab2dd569206be9d510578..179ed838cded8ecab6193c7badfafc0c10e9fc12 100644
--- a/banking-server/src/main/java/ufrn/imd/controller/impl/DepositControllerImpl.java
+++ b/banking-server/src/main/java/ufrn/imd/controller/impl/DepositControllerImpl.java
@@ -4,6 +4,7 @@ import lombok.extern.java.Log;
 import ufrn.imd.controller.Controller;
 import ufrn.imd.domain.Client;
 import ufrn.imd.service.impl.DepositServiceImpl;
+import ufrn.imd.utils.ServerResponse;
 
 import java.net.MalformedURLException;
 import java.rmi.AlreadyBoundException;
@@ -20,15 +21,18 @@ import static ufrn.imd.utils.NameSpace.PORT_DEPOSIT_SERVICE;
 public class DepositControllerImpl extends UnicastRemoteObject implements Controller {
 
     private volatile Queue<Client> clients = new ArrayDeque<>();
+    private final DepositServiceImpl service;
+
+    private volatile Queue<ServerResponse> serverResponses = new ArrayDeque<>();
     public DepositControllerImpl(DepositServiceImpl service) throws RemoteException, MalformedURLException, AlreadyBoundException {
         super();
         log.info("Starting Deposit service!");
 
-        new Notify(service).start();
+//        new Notify(service).start();
         log.info(String.format("Initializing server in %s", HOST_DEPOSIT_SERVICE));
 
+        this.service = service;
         LocateRegistry.createRegistry(PORT_DEPOSIT_SERVICE);
-
         Naming.bind(HOST_DEPOSIT_SERVICE, this);
     }
 
@@ -39,7 +43,9 @@ public class DepositControllerImpl extends UnicastRemoteObject implements Contro
         log.info(String.format("total users: %d", clients.size()));
     }
 
-
+    public ServerResponse getResponse(Client client) throws RemoteException {
+        return this.service.deposit(200.00, Optional.of(client));
+    }
 
 
     private class Notify extends Thread{
@@ -61,8 +67,8 @@ public class DepositControllerImpl extends UnicastRemoteObject implements Contro
                     clients.stream().forEach(client -> {
                         try {
                             log.info(String.format("Clients waiting %d", clients.size()));
-                            this.service.deposit(200.00, Optional.of(client));
-                            clients.remove();
+                            ServerResponse deposit = this.service.deposit(200.00, Optional.of(client));
+                            serverResponses.add(deposit);
                             log.info(String.format("Clients waiting %d", clients.size()));
 
                         } catch (RemoteException e) {
diff --git a/banking-server/src/main/java/ufrn/imd/service/impl/BalanceServiceImpl.java b/banking-server/src/main/java/ufrn/imd/service/impl/BalanceServiceImpl.java
index 469601d1bb75fb17afbd2fe1c3d9a98dcd3afb2e..95e9373b04f05a6a480bb1db696ea8dba9a12c6f 100644
--- a/banking-server/src/main/java/ufrn/imd/service/impl/BalanceServiceImpl.java
+++ b/banking-server/src/main/java/ufrn/imd/service/impl/BalanceServiceImpl.java
@@ -6,6 +6,7 @@ import ufrn.imd.domain.Account;
 import ufrn.imd.domain.Client;
 import ufrn.imd.repository.Repository;
 import ufrn.imd.service.Service;
+import ufrn.imd.utils.ServerResponse;
 
 import java.rmi.RemoteException;
 import java.util.Optional;
@@ -17,7 +18,7 @@ public class BalanceServiceImpl implements Service {
 
     private final Repository<Client> clientRepository;
 
-    public void balance(Optional<Client> clientOptional) throws RemoteException {
+    public ServerResponse balance(Optional<Client> clientOptional) throws RemoteException {
         Client user = clientOptional
                 .orElseThrow(() -> new RuntimeException("NULL USER"));
         Client client = clientRepository.find(user.getId())
@@ -25,5 +26,10 @@ public class BalanceServiceImpl implements Service {
         Account account = client.getAccount();
         log.info(String.format("Account Balance: R$ %f", account.getBalance()));
 
+        return ServerResponse.builder()
+                .status(200)
+                .message("Operation sucessed!")
+                .body(account)
+                .build();
     }
 }
diff --git a/banking-server/src/main/java/ufrn/imd/service/impl/DepositServiceImpl.java b/banking-server/src/main/java/ufrn/imd/service/impl/DepositServiceImpl.java
index e7a86534678ccca34c0e0082c9bb92b2bfff00b5..83c894a8ff303a41d301feb7e19532417f07f66c 100644
--- a/banking-server/src/main/java/ufrn/imd/service/impl/DepositServiceImpl.java
+++ b/banking-server/src/main/java/ufrn/imd/service/impl/DepositServiceImpl.java
@@ -6,6 +6,7 @@ import ufrn.imd.domain.Account;
 import ufrn.imd.domain.Client;
 import ufrn.imd.repository.Repository;
 import ufrn.imd.service.Service;
+import ufrn.imd.utils.ServerResponse;
 
 import java.rmi.RemoteException;
 import java.util.Optional;
@@ -17,7 +18,7 @@ public class DepositServiceImpl implements Service {
 
     private final Repository<Client> repository;
 
-    public void deposit(Double value, Optional<Client> clientOptional) throws RemoteException, RuntimeException {
+    public ServerResponse deposit(Double value, Optional<Client> clientOptional) throws RemoteException, RuntimeException {
         Client user = clientOptional
                 .orElseThrow(() -> new RuntimeException("Null User!"));
         Client client = repository.find(user.getId())
@@ -26,6 +27,11 @@ public class DepositServiceImpl implements Service {
         account.setBalance(account.getBalance() + value);
         log.info(String.format("Deposit concluded!"));
         log.info(String.format("Total: %.2f", account.getBalance()));
+        return ServerResponse.builder()
+                .status(200)
+                .message("Operaiton sucessed!")
+                .body(account)
+                .build();
     }
 
 }
diff --git a/banking-server/src/main/java/ufrn/imd/utils/ServerResponse.java b/banking-server/src/main/java/ufrn/imd/utils/ServerResponse.java
new file mode 100644
index 0000000000000000000000000000000000000000..4c1115b4648ee5503d0ebdb68cc5982e97f96794
--- /dev/null
+++ b/banking-server/src/main/java/ufrn/imd/utils/ServerResponse.java
@@ -0,0 +1,20 @@
+package ufrn.imd.utils;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+public class ServerResponse implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private Integer status;
+    private String message;
+    private Object body;
+}
diff --git a/banking-server/target/classes/ufrn/imd/BankingServerApp.class b/banking-server/target/classes/ufrn/imd/BankingServerApp.class
index e7bc89caf443850f74b54ca56cfedf3e1bb21797..9426e1eeb07564495580cebd9a9fb3d4826bfbdf 100644
Binary files a/banking-server/target/classes/ufrn/imd/BankingServerApp.class and b/banking-server/target/classes/ufrn/imd/BankingServerApp.class differ
diff --git a/banking-server/target/classes/ufrn/imd/controller/Controller.class b/banking-server/target/classes/ufrn/imd/controller/Controller.class
index f430dd8e588b7787d3b1e57839844a0ca969b2ba..9f65cc4b43514c694d42fba6e72344725bc510de 100644
Binary files a/banking-server/target/classes/ufrn/imd/controller/Controller.class and b/banking-server/target/classes/ufrn/imd/controller/Controller.class differ
diff --git a/banking-server/target/classes/ufrn/imd/controller/impl/BalanceControllerImpl$Notify.class b/banking-server/target/classes/ufrn/imd/controller/impl/BalanceControllerImpl$Notify.class
index 6f1fd296957eb44ef8553d3843aed5dde42adc51..05c9dcdc8d1772381efcdb551579129b88ee152d 100644
Binary files a/banking-server/target/classes/ufrn/imd/controller/impl/BalanceControllerImpl$Notify.class and b/banking-server/target/classes/ufrn/imd/controller/impl/BalanceControllerImpl$Notify.class differ
diff --git a/banking-server/target/classes/ufrn/imd/controller/impl/BalanceControllerImpl.class b/banking-server/target/classes/ufrn/imd/controller/impl/BalanceControllerImpl.class
index 9f55bf8b7d1a386ab7716d59ba2a4476c94238ce..fabf3e6087f27cc0d99ba3f18efed1ab04119893 100644
Binary files a/banking-server/target/classes/ufrn/imd/controller/impl/BalanceControllerImpl.class and b/banking-server/target/classes/ufrn/imd/controller/impl/BalanceControllerImpl.class differ
diff --git a/banking-server/target/classes/ufrn/imd/controller/impl/DepositControllerImpl$Notify.class b/banking-server/target/classes/ufrn/imd/controller/impl/DepositControllerImpl$Notify.class
index b8477ef07534ba6cd062501ed1b04324a2d61879..1e65ef3171eb3e0c93d93fa451f58c6ac729a57c 100644
Binary files a/banking-server/target/classes/ufrn/imd/controller/impl/DepositControllerImpl$Notify.class and b/banking-server/target/classes/ufrn/imd/controller/impl/DepositControllerImpl$Notify.class differ
diff --git a/banking-server/target/classes/ufrn/imd/controller/impl/DepositControllerImpl.class b/banking-server/target/classes/ufrn/imd/controller/impl/DepositControllerImpl.class
index 47a33bc2bcf84a94279a49f43193a5456f898b72..ebfe39d9843762fa90cc9a12183aefdcd3f8aded 100644
Binary files a/banking-server/target/classes/ufrn/imd/controller/impl/DepositControllerImpl.class and b/banking-server/target/classes/ufrn/imd/controller/impl/DepositControllerImpl.class differ
diff --git a/banking-server/target/classes/ufrn/imd/service/impl/BalanceServiceImpl.class b/banking-server/target/classes/ufrn/imd/service/impl/BalanceServiceImpl.class
index b4fa9209a9ee6e21b9c3435e2894b0809385ba08..57779ee31278c81ffb0caab53459b83b0f814be4 100644
Binary files a/banking-server/target/classes/ufrn/imd/service/impl/BalanceServiceImpl.class and b/banking-server/target/classes/ufrn/imd/service/impl/BalanceServiceImpl.class differ
diff --git a/banking-server/target/classes/ufrn/imd/service/impl/DepositServiceImpl.class b/banking-server/target/classes/ufrn/imd/service/impl/DepositServiceImpl.class
index cf644482cf2f5b0e07d532cd3dfeb33d543e52c6..7663a247d03d86603195f6987564d6775fa06d0b 100644
Binary files a/banking-server/target/classes/ufrn/imd/service/impl/DepositServiceImpl.class and b/banking-server/target/classes/ufrn/imd/service/impl/DepositServiceImpl.class differ