diff --git a/.gitignore b/.gitignore
index 8bad5633addd63a1c0e8ae864622992d8892ea48..53677154cab7caa0a7f2978e9d550f2618be3e2b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,3 @@
-/banking-server/target/
+banking-server/target/
+banking-client/target/
+banking-client/.idea/
diff --git a/banking-client/banking-client.iml b/banking-client/banking-client.iml
deleted file mode 100644
index c90834f2d607afe55e6104d8aa2cdfffb713f688..0000000000000000000000000000000000000000
--- a/banking-client/banking-client.iml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module type="JAVA_MODULE" version="4">
-  <component name="NewModuleRootManager" inherit-compiler-output="true">
-    <exclude-output />
-    <content url="file://$MODULE_DIR$">
-      <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
-    </content>
-    <orderEntry type="inheritedJdk" />
-    <orderEntry type="sourceFolder" forTests="false" />
-  </component>
-</module>
\ No newline at end of file
diff --git a/banking-client/pom.xml b/banking-client/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2f45cf6384ce4c65e2ed9129d3c20e1497114acf
--- /dev/null
+++ b/banking-client/pom.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>org.example</groupId>
+    <artifactId>banking-client</artifactId>
+    <version>1.0-SNAPSHOT</version>
+
+    <properties>
+        <maven.compiler.source>11</maven.compiler.source>
+        <maven.compiler.target>11</maven.compiler.target>
+    </properties>
+    <dependencies>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <version>1.18.24</version>
+            <scope>provided</scope>
+        </dependency>
+    </dependencies>
+</project>
\ No newline at end of file
diff --git a/banking-client/src/main/java/ufrn/imd/BankingClientApp.java b/banking-client/src/main/java/ufrn/imd/BankingClientApp.java
new file mode 100644
index 0000000000000000000000000000000000000000..bf72420c1c95a5e79e86df3ee5c5464009708735
--- /dev/null
+++ b/banking-client/src/main/java/ufrn/imd/BankingClientApp.java
@@ -0,0 +1,30 @@
+package ufrn.imd;
+
+import lombok.extern.java.Log;
+import ufrn.imd.controller.Controller;
+import ufrn.imd.domain.Account;
+import ufrn.imd.domain.Client;
+import ufrn.imd.utils.MachineState;
+
+import java.net.MalformedURLException;
+import java.rmi.Naming;
+import java.rmi.NotBoundException;
+import java.rmi.RemoteException;
+
+import static ufrn.imd.utils.MachineState.*;
+import static ufrn.imd.utils.NameSpace.HOST_DEPOSIT_SERVICE;
+
+@Log
+public class BankingClientApp {
+    public static void main(String[] args) throws MalformedURLException, NotBoundException, RemoteException {
+
+        MachineState mS = new MachineState();
+
+        while(mS.quit()) {
+            mS.render();
+            mS.processEvents();
+            mS.update();
+        }
+
+    }
+}
diff --git a/banking-client/src/ufrn/imd/controller/Controller.java b/banking-client/src/main/java/ufrn/imd/controller/Controller.java
similarity index 86%
rename from banking-client/src/ufrn/imd/controller/Controller.java
rename to banking-client/src/main/java/ufrn/imd/controller/Controller.java
index ebdc052114a1ec006c253cdf5d043b3be3451176..580d6e5bd0706569fec236bf1337a7adbf06e7f8 100644
--- a/banking-client/src/ufrn/imd/controller/Controller.java
+++ b/banking-client/src/main/java/ufrn/imd/controller/Controller.java
@@ -1,6 +1,6 @@
 package ufrn.imd.controller;
 
-import ufrn.imd.message.Client;
+import ufrn.imd.domain.Client;
 
 import java.rmi.Remote;
 import java.rmi.RemoteException;
diff --git a/banking-client/src/ufrn/imd/domain/Account.java b/banking-client/src/main/java/ufrn/imd/domain/Account.java
similarity index 100%
rename from banking-client/src/ufrn/imd/domain/Account.java
rename to banking-client/src/main/java/ufrn/imd/domain/Account.java
diff --git a/banking-client/src/main/java/ufrn/imd/domain/Client.java b/banking-client/src/main/java/ufrn/imd/domain/Client.java
new file mode 100644
index 0000000000000000000000000000000000000000..b5c241b26e361d8e637b36b6a02961fb9bc4ec1c
--- /dev/null
+++ b/banking-client/src/main/java/ufrn/imd/domain/Client.java
@@ -0,0 +1,17 @@
+package ufrn.imd.domain;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import ufrn.imd.domain.Account;
+
+import java.io.Serializable;
+import java.util.Optional;
+
+@Data
+@AllArgsConstructor
+public class Client implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private Integer id;
+
+}
diff --git a/banking-client/src/main/java/ufrn/imd/utils/MachineState.java b/banking-client/src/main/java/ufrn/imd/utils/MachineState.java
new file mode 100644
index 0000000000000000000000000000000000000000..b7a227b0c320a833e457e69b08612342be8b1292
--- /dev/null
+++ b/banking-client/src/main/java/ufrn/imd/utils/MachineState.java
@@ -0,0 +1,101 @@
+package ufrn.imd.utils;
+
+import lombok.Data;
+import ufrn.imd.controller.Controller;
+import ufrn.imd.domain.Client;
+
+import java.net.MalformedURLException;
+import java.rmi.Naming;
+import java.rmi.NotBoundException;
+import java.rmi.RemoteException;
+import java.util.Scanner;
+
+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 INVALID_INPUT = "INVALID_INPUT";
+    public static final String QUIT = "QUIT";
+
+    private String state;
+    private Scanner sc;
+    private String inputValue;
+
+    public MachineState() {
+        state = INITIAL;
+        inputValue = new String();
+        sc = new Scanner(System.in);
+    }
+
+    public Boolean quit() {
+        return !state.equals(QUIT);
+    }
+
+    public void update() {
+        if(state.equals(INITIAL)) {
+            state = HELP;
+        } else if(state.equals(HELP)) {
+            state = READ;
+        } else if(state.equals(READ)) {
+            state = inputValue;
+        } else if(state.equals(INVALID_INPUT)) {
+            state = HELP;
+        } else if(state.equals(DEPOSIT)) {
+            state = HELP;
+        }
+    }
+
+    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)){
+                inputValue = INVALID_INPUT;
+            }
+        } else if(state.equals(DEPOSIT)) {
+            double v = sc.nextDouble();
+            System.out.println(String.format(">>> input value: %.2f", v));
+            Client client = new Client(1);
+            Controller server = (Controller) Naming.lookup(HOST_DEPOSIT_SERVICE);
+            server.registerClient(client);
+        }
+    }
+
+    public void render() {
+        try {
+            if(state.equals(INITIAL)) {
+                System.out.println(">>> Initializing...");
+                Thread.sleep(1000);
+            } else if(state.equals(HELP)) {
+                System.out.println("These are the avaliable operations");
+                System.out.println("---------------------------------");
+                System.out.println(" - deposit \t - balance");
+                System.out.println(" - quit");
+
+                System.out.println("---------------------------------");
+                Thread.sleep(1000);
+            } else if(state.equals(READ)) {
+                System.out.println(">>> Please enter with wich operation do you want");
+            } else if(state.equals(INVALID_INPUT)) {
+                System.out.println(">>> Please enter with a VALID operation");
+                Thread.sleep(3000);
+            } else if(state.equals(DEPOSIT)) {
+                System.out.println(">>> Starting deposit operation");
+                System.out.println(">>> Please enter with the value that you want deposit");
+            }
+        } catch (InterruptedException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+}
diff --git a/banking-client/src/ufrn/imd/nameSpace/NameSpace.java b/banking-client/src/main/java/ufrn/imd/utils/NameSpace.java
similarity index 88%
rename from banking-client/src/ufrn/imd/nameSpace/NameSpace.java
rename to banking-client/src/main/java/ufrn/imd/utils/NameSpace.java
index b30b2d12181db58936cf1550185bf2e96c66bb2d..c3793547e6dee27aa654ce21634053dd6c23b448 100644
--- a/banking-client/src/ufrn/imd/nameSpace/NameSpace.java
+++ b/banking-client/src/main/java/ufrn/imd/utils/NameSpace.java
@@ -1,4 +1,4 @@
-package ufrn.imd.nameSpace;
+package ufrn.imd.utils;
 
 public class NameSpace {
     public static final Integer PORT_DEPOSIT_SERVICE = 1907;
diff --git a/banking-client/src/ufrn/imd/BankingClientApp.java b/banking-client/src/ufrn/imd/BankingClientApp.java
deleted file mode 100644
index 72fe8208bfae12ad54c1eebe2cd8e911f1956e53..0000000000000000000000000000000000000000
--- a/banking-client/src/ufrn/imd/BankingClientApp.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package ufrn.imd;
-
-import ufrn.imd.controller.Controller;
-import ufrn.imd.domain.Account;
-import ufrn.imd.log.Log;
-import ufrn.imd.message.Client;
-
-import java.net.MalformedURLException;
-import java.rmi.Naming;
-import java.rmi.NotBoundException;
-import java.rmi.RemoteException;
-
-import static ufrn.imd.nameSpace.NameSpace.HOST_DEPOSIT_SERVICE;
-
-public class BankingClientApp {
-    public static void main(String[] args) throws MalformedURLException, NotBoundException, RemoteException {
-        final Integer PORT = 1097;
-        Log.info(BankingClientApp.class,
-                String.format("connecting with server in host %s", HOST_DEPOSIT_SERVICE)
-        );
-        Controller server = (Controller) Naming.lookup(HOST_DEPOSIT_SERVICE);
-
-        Client client = new Client(new Account(1, "222", 10.00));
-        Log.info(BankingClientApp.class, "registring user in the server");
-        server.registerClient(client);
-    }
-}
diff --git a/banking-client/src/ufrn/imd/controller/impl/DepositControllerImpl.java b/banking-client/src/ufrn/imd/controller/impl/DepositControllerImpl.java
deleted file mode 100644
index a70dcb0708851835d323fb55be20b5013e60a4f0..0000000000000000000000000000000000000000
--- a/banking-client/src/ufrn/imd/controller/impl/DepositControllerImpl.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package ufrn.imd.controller.impl;
-
-import ufrn.imd.controller.Controller;
-import ufrn.imd.log.Log;
-import ufrn.imd.message.Client;
-import ufrn.imd.service.DepositService;
-
-import java.rmi.RemoteException;
-import java.rmi.server.UnicastRemoteObject;
-import java.util.ArrayList;
-import java.util.List;
-
-public class DepositControllerImpl extends UnicastRemoteObject implements Controller {
-
-    private volatile List<Client> clients = new ArrayList<>();
-
-    public DepositControllerImpl(DepositService service) throws RemoteException{
-        super();
-        Log.info(DepositControllerImpl.class, "Starting Deposit service!");
-        new Notify(service).start();
-    }
-    public void registerClient(Client client) throws RemoteException {
-
-        clients.add(client);
-        System.out.println("Novo cliente registrado com sucesso! Total: "+clients.size());
-    }
-
-
-    private class Notify extends Thread{
-
-        private final DepositService service;
-
-        public Notify(DepositService service) {
-            super();
-            this.service = service;
-        }
-        public void run() {
-
-            for(;;) {
-
-                if(clients.size() > 0) {
-
-                    System.out.println("Notificando clientes");
-
-                    int i = 0;
-                    for (Client client : clients) {
-
-                        try {
-                            this.service.deposit(client.getBalance(), client.getAccount());
-                        } catch (RemoteException e) {
-                            e.printStackTrace();
-                        }
-                    }
-
-
-                    try {
-                        Thread.sleep(15 * 1000);
-                    } catch (InterruptedException e) {
-                        e.printStackTrace();
-                    }
-                }
-
-            }
-
-        }
-    }
-}
diff --git a/banking-client/src/ufrn/imd/domain/Client.java b/banking-client/src/ufrn/imd/domain/Client.java
deleted file mode 100644
index d1ca0707fd4e79bd9f7514b42f4047614a5b8fdf..0000000000000000000000000000000000000000
--- a/banking-client/src/ufrn/imd/domain/Client.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package ufrn.imd.domain;
-
-import ufrn.imd.domain.Account;
-
-import java.io.Serializable;
-import java.util.Optional;
-
-public class Client implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    private Account account;
-
-    public Client(Account account) {
-        this.account = account;
-    }
-
-    public Double getBalance() {
-        return account.getBalance();
-    }
-    public Optional<Account> getAccount() {
-        return Optional.of(account);
-    }
-}
diff --git a/banking-client/src/ufrn/imd/log/Log.java b/banking-client/src/ufrn/imd/log/Log.java
deleted file mode 100644
index c193705cf9cac05da9853b6a039a58aa4576370d..0000000000000000000000000000000000000000
--- a/banking-client/src/ufrn/imd/log/Log.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package ufrn.imd.log;
-
-public class Log {
-
-    public static void info(Class path, String text) {
-        System.out.println(
-                String.format("[LOG] %s - %s", path , text)
-        );
-    }
-}
diff --git a/banking-client/src/ufrn/imd/service/BalanceService.java b/banking-client/src/ufrn/imd/service/BalanceService.java
deleted file mode 100644
index 2d9315cb86301d9188170ac76fcbceabdb37c1f6..0000000000000000000000000000000000000000
--- a/banking-client/src/ufrn/imd/service/BalanceService.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package ufrn.imd.service;
-
-import ufrn.imd.domain.Account;
-
-import java.rmi.Remote;
-import java.rmi.RemoteException;
-
-public interface BalanceService extends Remote {
-
-    public void balance(Account account) throws RemoteException;
-}
diff --git a/banking-client/src/ufrn/imd/service/DepositService.java b/banking-client/src/ufrn/imd/service/DepositService.java
deleted file mode 100644
index f85f98f67df1776750e48c57065b02823917b844..0000000000000000000000000000000000000000
--- a/banking-client/src/ufrn/imd/service/DepositService.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package ufrn.imd.service;
-
-import ufrn.imd.domain.Account;
-
-import java.rmi.Remote;
-import java.rmi.RemoteException;
-import java.util.Optional;
-
-public interface DepositService extends Remote {
-
-        public void deposit(Double value, Optional<Account> account) throws RemoteException;
-
-}
diff --git a/banking-client/src/ufrn/imd/service/WidthawService.java b/banking-client/src/ufrn/imd/service/WidthawService.java
deleted file mode 100644
index 8a5ed3baa7ecd8367276729a144c1ff882a35bed..0000000000000000000000000000000000000000
--- a/banking-client/src/ufrn/imd/service/WidthawService.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package ufrn.imd.service;
-
-import ufrn.imd.domain.Account;
-
-import java.rmi.Remote;
-import java.rmi.RemoteException;
-
-public interface WidthawService extends Remote {
-
-    public void widthaw(Double value, Account account) throws RemoteException;
-
-}
diff --git a/banking-client/src/ufrn/imd/service/impl/DepositServiceImpl.java b/banking-client/src/ufrn/imd/service/impl/DepositServiceImpl.java
deleted file mode 100644
index 7dfa731ebf41f795aa581b80f1e1d71395caca80..0000000000000000000000000000000000000000
--- a/banking-client/src/ufrn/imd/service/impl/DepositServiceImpl.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package ufrn.imd.service.impl;
-
-import ufrn.imd.domain.Account;
-import ufrn.imd.log.Log;
-import ufrn.imd.service.DepositService;
-
-import java.rmi.RemoteException;
-import java.util.Optional;
-
-public class DepositServiceImpl implements DepositService {
-
-    public DepositServiceImpl() {
-        super();
-    }
-
-    public void deposit(Double value, Optional<Account> acOp) throws RemoteException, RuntimeException {
-        Account account = acOp.orElseThrow(() -> new RuntimeException("Null User!"));
-        if(account.getBalance() < value)
-            throw new RuntimeException("There's no money!");
-        account.setBalance(account.getBalance() - value);
-        Log.info(DepositServiceImpl.class, "deposit");
-
-    }
-
-}
diff --git a/banking-server/.idea/dbnavigator.xml b/banking-server/.idea/dbnavigator.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4c97bdf6c06b538a591ef993a81bd28419b35808
--- /dev/null
+++ b/banking-server/.idea/dbnavigator.xml
@@ -0,0 +1,461 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="DBNavigator.Project.DataEditorManager">
+    <record-view-column-sorting-type value="BY_INDEX" />
+    <value-preview-text-wrapping value="true" />
+    <value-preview-pinned value="false" />
+  </component>
+  <component name="DBNavigator.Project.DataExportManager">
+    <export-instructions>
+      <create-header value="true" />
+      <friendly-headers value="false" />
+      <quote-values-containing-separator value="true" />
+      <quote-all-values value="false" />
+      <value-separator value="" />
+      <file-name value="" />
+      <file-location value="" />
+      <scope value="GLOBAL" />
+      <destination value="FILE" />
+      <format value="EXCEL" />
+      <charset value="UTF-8" />
+    </export-instructions>
+  </component>
+  <component name="DBNavigator.Project.DatabaseBrowserManager">
+    <autoscroll-to-editor value="false" />
+    <autoscroll-from-editor value="true" />
+    <show-object-properties value="true" />
+    <loaded-nodes />
+  </component>
+  <component name="DBNavigator.Project.DatabaseFileManager">
+    <open-files />
+  </component>
+  <component name="DBNavigator.Project.EditorStateManager">
+    <last-used-providers />
+  </component>
+  <component name="DBNavigator.Project.ExecutionManager">
+    <retain-sticky-names value="false" />
+  </component>
+  <component name="DBNavigator.Project.MethodExecutionManager">
+    <method-browser />
+    <execution-history>
+      <group-entries value="true" />
+      <execution-inputs />
+    </execution-history>
+    <argument-values-cache />
+  </component>
+  <component name="DBNavigator.Project.ObjectDependencyManager">
+    <last-used-dependency-type value="INCOMING" />
+  </component>
+  <component name="DBNavigator.Project.ObjectQuickFilterManager">
+    <last-used-operator value="EQUAL" />
+    <filters />
+  </component>
+  <component name="DBNavigator.Project.ParserDiagnosticsManager">
+    <diagnostics-history />
+  </component>
+  <component name="DBNavigator.Project.ScriptExecutionManager" clear-outputs="true">
+    <recently-used-interfaces />
+  </component>
+  <component name="DBNavigator.Project.Settings">
+    <connections />
+    <browser-settings>
+      <general>
+        <display-mode value="TABBED" />
+        <navigation-history-size value="100" />
+        <show-object-details value="false" />
+      </general>
+      <filters>
+        <object-type-filter>
+          <object-type name="SCHEMA" enabled="true" />
+          <object-type name="USER" enabled="true" />
+          <object-type name="ROLE" enabled="true" />
+          <object-type name="PRIVILEGE" enabled="true" />
+          <object-type name="CHARSET" enabled="true" />
+          <object-type name="TABLE" enabled="true" />
+          <object-type name="VIEW" enabled="true" />
+          <object-type name="MATERIALIZED_VIEW" enabled="true" />
+          <object-type name="NESTED_TABLE" enabled="true" />
+          <object-type name="COLUMN" enabled="true" />
+          <object-type name="INDEX" enabled="true" />
+          <object-type name="CONSTRAINT" enabled="true" />
+          <object-type name="DATASET_TRIGGER" enabled="true" />
+          <object-type name="DATABASE_TRIGGER" enabled="true" />
+          <object-type name="SYNONYM" enabled="true" />
+          <object-type name="SEQUENCE" enabled="true" />
+          <object-type name="PROCEDURE" enabled="true" />
+          <object-type name="FUNCTION" enabled="true" />
+          <object-type name="PACKAGE" enabled="true" />
+          <object-type name="TYPE" enabled="true" />
+          <object-type name="TYPE_ATTRIBUTE" enabled="true" />
+          <object-type name="ARGUMENT" enabled="true" />
+          <object-type name="DIMENSION" enabled="true" />
+          <object-type name="CLUSTER" enabled="true" />
+          <object-type name="DBLINK" enabled="true" />
+        </object-type-filter>
+      </filters>
+      <sorting>
+        <object-type name="COLUMN" sorting-type="NAME" />
+        <object-type name="FUNCTION" sorting-type="NAME" />
+        <object-type name="PROCEDURE" sorting-type="NAME" />
+        <object-type name="ARGUMENT" sorting-type="POSITION" />
+      </sorting>
+      <default-editors>
+        <object-type name="VIEW" editor-type="SELECTION" />
+        <object-type name="PACKAGE" editor-type="SELECTION" />
+        <object-type name="TYPE" editor-type="SELECTION" />
+      </default-editors>
+    </browser-settings>
+    <navigation-settings>
+      <lookup-filters>
+        <lookup-objects>
+          <object-type name="SCHEMA" enabled="true" />
+          <object-type name="USER" enabled="false" />
+          <object-type name="ROLE" enabled="false" />
+          <object-type name="PRIVILEGE" enabled="false" />
+          <object-type name="CHARSET" enabled="false" />
+          <object-type name="TABLE" enabled="true" />
+          <object-type name="VIEW" enabled="true" />
+          <object-type name="MATERIALIZED VIEW" enabled="true" />
+          <object-type name="INDEX" enabled="true" />
+          <object-type name="CONSTRAINT" enabled="true" />
+          <object-type name="DATASET TRIGGER" enabled="true" />
+          <object-type name="DATABASE TRIGGER" enabled="true" />
+          <object-type name="SYNONYM" enabled="false" />
+          <object-type name="SEQUENCE" enabled="true" />
+          <object-type name="PROCEDURE" enabled="true" />
+          <object-type name="FUNCTION" enabled="true" />
+          <object-type name="PACKAGE" enabled="true" />
+          <object-type name="TYPE" enabled="true" />
+          <object-type name="DIMENSION" enabled="false" />
+          <object-type name="CLUSTER" enabled="false" />
+          <object-type name="DBLINK" enabled="true" />
+        </lookup-objects>
+        <force-database-load value="false" />
+        <prompt-connection-selection value="true" />
+        <prompt-schema-selection value="true" />
+      </lookup-filters>
+    </navigation-settings>
+    <dataset-grid-settings>
+      <general>
+        <enable-zooming value="true" />
+        <enable-column-tooltip value="true" />
+      </general>
+      <sorting>
+        <nulls-first value="true" />
+        <max-sorting-columns value="4" />
+      </sorting>
+      <tracking-columns>
+        <columnNames value="" />
+        <visible value="true" />
+        <editable value="false" />
+      </tracking-columns>
+    </dataset-grid-settings>
+    <dataset-editor-settings>
+      <text-editor-popup>
+        <active value="false" />
+        <active-if-empty value="false" />
+        <data-length-threshold value="100" />
+        <popup-delay value="1000" />
+      </text-editor-popup>
+      <values-actions-popup>
+        <show-popup-button value="true" />
+        <element-count-threshold value="1000" />
+        <data-length-threshold value="250" />
+      </values-actions-popup>
+      <general>
+        <fetch-block-size value="100" />
+        <fetch-timeout value="30" />
+        <trim-whitespaces value="true" />
+        <convert-empty-strings-to-null value="true" />
+        <select-content-on-cell-edit value="true" />
+        <large-value-preview-active value="true" />
+      </general>
+      <filters>
+        <prompt-filter-dialog value="true" />
+        <default-filter-type value="BASIC" />
+      </filters>
+      <qualified-text-editor text-length-threshold="300">
+        <content-types>
+          <content-type name="Text" enabled="true" />
+          <content-type name="Properties" enabled="true" />
+          <content-type name="XML" enabled="true" />
+          <content-type name="DTD" enabled="true" />
+          <content-type name="HTML" enabled="true" />
+          <content-type name="XHTML" enabled="true" />
+          <content-type name="Java" enabled="true" />
+          <content-type name="SQL" enabled="true" />
+          <content-type name="PL/SQL" enabled="true" />
+          <content-type name="JSON" enabled="true" />
+          <content-type name="JSON5" enabled="true" />
+          <content-type name="Groovy" enabled="true" />
+          <content-type name="AIDL" enabled="true" />
+          <content-type name="YAML" enabled="true" />
+          <content-type name="Manifest" enabled="true" />
+        </content-types>
+      </qualified-text-editor>
+      <record-navigation>
+        <navigation-target value="VIEWER" />
+      </record-navigation>
+    </dataset-editor-settings>
+    <code-editor-settings>
+      <general>
+        <show-object-navigation-gutter value="false" />
+        <show-spec-declaration-navigation-gutter value="true" />
+        <enable-spellchecking value="true" />
+        <enable-reference-spellchecking value="false" />
+      </general>
+      <confirmations>
+        <save-changes value="false" />
+        <revert-changes value="true" />
+      </confirmations>
+    </code-editor-settings>
+    <code-completion-settings>
+      <filters>
+        <basic-filter>
+          <filter-element type="RESERVED_WORD" id="keyword" selected="true" />
+          <filter-element type="RESERVED_WORD" id="function" selected="true" />
+          <filter-element type="RESERVED_WORD" id="parameter" selected="true" />
+          <filter-element type="RESERVED_WORD" id="datatype" selected="true" />
+          <filter-element type="RESERVED_WORD" id="exception" selected="true" />
+          <filter-element type="OBJECT" id="schema" selected="true" />
+          <filter-element type="OBJECT" id="role" selected="true" />
+          <filter-element type="OBJECT" id="user" selected="true" />
+          <filter-element type="OBJECT" id="privilege" selected="true" />
+          <user-schema>
+            <filter-element type="OBJECT" id="table" selected="true" />
+            <filter-element type="OBJECT" id="view" selected="true" />
+            <filter-element type="OBJECT" id="materialized view" selected="true" />
+            <filter-element type="OBJECT" id="index" selected="true" />
+            <filter-element type="OBJECT" id="constraint" selected="true" />
+            <filter-element type="OBJECT" id="trigger" selected="true" />
+            <filter-element type="OBJECT" id="synonym" selected="false" />
+            <filter-element type="OBJECT" id="sequence" selected="true" />
+            <filter-element type="OBJECT" id="procedure" selected="true" />
+            <filter-element type="OBJECT" id="function" selected="true" />
+            <filter-element type="OBJECT" id="package" selected="true" />
+            <filter-element type="OBJECT" id="type" selected="true" />
+            <filter-element type="OBJECT" id="dimension" selected="true" />
+            <filter-element type="OBJECT" id="cluster" selected="true" />
+            <filter-element type="OBJECT" id="dblink" selected="true" />
+          </user-schema>
+          <public-schema>
+            <filter-element type="OBJECT" id="table" selected="false" />
+            <filter-element type="OBJECT" id="view" selected="false" />
+            <filter-element type="OBJECT" id="materialized view" selected="false" />
+            <filter-element type="OBJECT" id="index" selected="false" />
+            <filter-element type="OBJECT" id="constraint" selected="false" />
+            <filter-element type="OBJECT" id="trigger" selected="false" />
+            <filter-element type="OBJECT" id="synonym" selected="false" />
+            <filter-element type="OBJECT" id="sequence" selected="false" />
+            <filter-element type="OBJECT" id="procedure" selected="false" />
+            <filter-element type="OBJECT" id="function" selected="false" />
+            <filter-element type="OBJECT" id="package" selected="false" />
+            <filter-element type="OBJECT" id="type" selected="false" />
+            <filter-element type="OBJECT" id="dimension" selected="false" />
+            <filter-element type="OBJECT" id="cluster" selected="false" />
+            <filter-element type="OBJECT" id="dblink" selected="false" />
+          </public-schema>
+          <any-schema>
+            <filter-element type="OBJECT" id="table" selected="true" />
+            <filter-element type="OBJECT" id="view" selected="true" />
+            <filter-element type="OBJECT" id="materialized view" selected="true" />
+            <filter-element type="OBJECT" id="index" selected="true" />
+            <filter-element type="OBJECT" id="constraint" selected="true" />
+            <filter-element type="OBJECT" id="trigger" selected="true" />
+            <filter-element type="OBJECT" id="synonym" selected="true" />
+            <filter-element type="OBJECT" id="sequence" selected="true" />
+            <filter-element type="OBJECT" id="procedure" selected="true" />
+            <filter-element type="OBJECT" id="function" selected="true" />
+            <filter-element type="OBJECT" id="package" selected="true" />
+            <filter-element type="OBJECT" id="type" selected="true" />
+            <filter-element type="OBJECT" id="dimension" selected="true" />
+            <filter-element type="OBJECT" id="cluster" selected="true" />
+            <filter-element type="OBJECT" id="dblink" selected="true" />
+          </any-schema>
+        </basic-filter>
+        <extended-filter>
+          <filter-element type="RESERVED_WORD" id="keyword" selected="true" />
+          <filter-element type="RESERVED_WORD" id="function" selected="true" />
+          <filter-element type="RESERVED_WORD" id="parameter" selected="true" />
+          <filter-element type="RESERVED_WORD" id="datatype" selected="true" />
+          <filter-element type="RESERVED_WORD" id="exception" selected="true" />
+          <filter-element type="OBJECT" id="schema" selected="true" />
+          <filter-element type="OBJECT" id="user" selected="true" />
+          <filter-element type="OBJECT" id="role" selected="true" />
+          <filter-element type="OBJECT" id="privilege" selected="true" />
+          <user-schema>
+            <filter-element type="OBJECT" id="table" selected="true" />
+            <filter-element type="OBJECT" id="view" selected="true" />
+            <filter-element type="OBJECT" id="materialized view" selected="true" />
+            <filter-element type="OBJECT" id="index" selected="true" />
+            <filter-element type="OBJECT" id="constraint" selected="true" />
+            <filter-element type="OBJECT" id="trigger" selected="true" />
+            <filter-element type="OBJECT" id="synonym" selected="true" />
+            <filter-element type="OBJECT" id="sequence" selected="true" />
+            <filter-element type="OBJECT" id="procedure" selected="true" />
+            <filter-element type="OBJECT" id="function" selected="true" />
+            <filter-element type="OBJECT" id="package" selected="true" />
+            <filter-element type="OBJECT" id="type" selected="true" />
+            <filter-element type="OBJECT" id="dimension" selected="true" />
+            <filter-element type="OBJECT" id="cluster" selected="true" />
+            <filter-element type="OBJECT" id="dblink" selected="true" />
+          </user-schema>
+          <public-schema>
+            <filter-element type="OBJECT" id="table" selected="true" />
+            <filter-element type="OBJECT" id="view" selected="true" />
+            <filter-element type="OBJECT" id="materialized view" selected="true" />
+            <filter-element type="OBJECT" id="index" selected="true" />
+            <filter-element type="OBJECT" id="constraint" selected="true" />
+            <filter-element type="OBJECT" id="trigger" selected="true" />
+            <filter-element type="OBJECT" id="synonym" selected="true" />
+            <filter-element type="OBJECT" id="sequence" selected="true" />
+            <filter-element type="OBJECT" id="procedure" selected="true" />
+            <filter-element type="OBJECT" id="function" selected="true" />
+            <filter-element type="OBJECT" id="package" selected="true" />
+            <filter-element type="OBJECT" id="type" selected="true" />
+            <filter-element type="OBJECT" id="dimension" selected="true" />
+            <filter-element type="OBJECT" id="cluster" selected="true" />
+            <filter-element type="OBJECT" id="dblink" selected="true" />
+          </public-schema>
+          <any-schema>
+            <filter-element type="OBJECT" id="table" selected="true" />
+            <filter-element type="OBJECT" id="view" selected="true" />
+            <filter-element type="OBJECT" id="materialized view" selected="true" />
+            <filter-element type="OBJECT" id="index" selected="true" />
+            <filter-element type="OBJECT" id="constraint" selected="true" />
+            <filter-element type="OBJECT" id="trigger" selected="true" />
+            <filter-element type="OBJECT" id="synonym" selected="true" />
+            <filter-element type="OBJECT" id="sequence" selected="true" />
+            <filter-element type="OBJECT" id="procedure" selected="true" />
+            <filter-element type="OBJECT" id="function" selected="true" />
+            <filter-element type="OBJECT" id="package" selected="true" />
+            <filter-element type="OBJECT" id="type" selected="true" />
+            <filter-element type="OBJECT" id="dimension" selected="true" />
+            <filter-element type="OBJECT" id="cluster" selected="true" />
+            <filter-element type="OBJECT" id="dblink" selected="true" />
+          </any-schema>
+        </extended-filter>
+      </filters>
+      <sorting enabled="true">
+        <sorting-element type="RESERVED_WORD" id="keyword" />
+        <sorting-element type="RESERVED_WORD" id="datatype" />
+        <sorting-element type="OBJECT" id="column" />
+        <sorting-element type="OBJECT" id="table" />
+        <sorting-element type="OBJECT" id="view" />
+        <sorting-element type="OBJECT" id="materialized view" />
+        <sorting-element type="OBJECT" id="index" />
+        <sorting-element type="OBJECT" id="constraint" />
+        <sorting-element type="OBJECT" id="trigger" />
+        <sorting-element type="OBJECT" id="synonym" />
+        <sorting-element type="OBJECT" id="sequence" />
+        <sorting-element type="OBJECT" id="procedure" />
+        <sorting-element type="OBJECT" id="function" />
+        <sorting-element type="OBJECT" id="package" />
+        <sorting-element type="OBJECT" id="type" />
+        <sorting-element type="OBJECT" id="dimension" />
+        <sorting-element type="OBJECT" id="cluster" />
+        <sorting-element type="OBJECT" id="dblink" />
+        <sorting-element type="OBJECT" id="schema" />
+        <sorting-element type="OBJECT" id="role" />
+        <sorting-element type="OBJECT" id="user" />
+        <sorting-element type="RESERVED_WORD" id="function" />
+        <sorting-element type="RESERVED_WORD" id="parameter" />
+      </sorting>
+      <format>
+        <enforce-code-style-case value="true" />
+      </format>
+    </code-completion-settings>
+    <execution-engine-settings>
+      <statement-execution>
+        <fetch-block-size value="100" />
+        <execution-timeout value="20" />
+        <debug-execution-timeout value="600" />
+        <focus-result value="false" />
+        <prompt-execution value="false" />
+      </statement-execution>
+      <script-execution>
+        <command-line-interfaces />
+        <execution-timeout value="300" />
+      </script-execution>
+      <method-execution>
+        <execution-timeout value="30" />
+        <debug-execution-timeout value="600" />
+        <parameter-history-size value="10" />
+      </method-execution>
+    </execution-engine-settings>
+    <operation-settings>
+      <transactions>
+        <uncommitted-changes>
+          <on-project-close value="ASK" />
+          <on-disconnect value="ASK" />
+          <on-autocommit-toggle value="ASK" />
+        </uncommitted-changes>
+        <multiple-uncommitted-changes>
+          <on-commit value="ASK" />
+          <on-rollback value="ASK" />
+        </multiple-uncommitted-changes>
+      </transactions>
+      <session-browser>
+        <disconnect-session value="ASK" />
+        <kill-session value="ASK" />
+        <reload-on-filter-change value="false" />
+      </session-browser>
+      <compiler>
+        <compile-type value="KEEP" />
+        <compile-dependencies value="ASK" />
+        <always-show-controls value="false" />
+      </compiler>
+      <debugger>
+        <debugger-type value="ASK" />
+        <use-generic-runners value="true" />
+      </debugger>
+    </operation-settings>
+    <ddl-file-settings>
+      <extensions>
+        <mapping file-type-id="VIEW" extensions="vw" />
+        <mapping file-type-id="TRIGGER" extensions="trg" />
+        <mapping file-type-id="PROCEDURE" extensions="prc" />
+        <mapping file-type-id="FUNCTION" extensions="fnc" />
+        <mapping file-type-id="PACKAGE" extensions="pkg" />
+        <mapping file-type-id="PACKAGE_SPEC" extensions="pks" />
+        <mapping file-type-id="PACKAGE_BODY" extensions="pkb" />
+        <mapping file-type-id="TYPE" extensions="tpe" />
+        <mapping file-type-id="TYPE_SPEC" extensions="tps" />
+        <mapping file-type-id="TYPE_BODY" extensions="tpb" />
+      </extensions>
+      <general>
+        <lookup-ddl-files value="true" />
+        <create-ddl-files value="false" />
+        <synchronize-ddl-files value="true" />
+        <use-qualified-names value="false" />
+        <make-scripts-rerunnable value="true" />
+      </general>
+    </ddl-file-settings>
+    <general-settings>
+      <regional-settings>
+        <date-format value="MEDIUM" />
+        <number-format value="UNGROUPED" />
+        <locale value="SYSTEM_DEFAULT" />
+        <use-custom-formats value="false" />
+      </regional-settings>
+      <environment>
+        <environment-types>
+          <environment-type id="development" name="Development" description="Development environment" color="-2430209/-12296320" readonly-code="false" readonly-data="false" />
+          <environment-type id="integration" name="Integration" description="Integration environment" color="-2621494/-12163514" readonly-code="true" readonly-data="false" />
+          <environment-type id="production" name="Production" description="Productive environment" color="-11574/-10271420" readonly-code="true" readonly-data="true" />
+          <environment-type id="other" name="Other" description="" color="-1576/-10724543" readonly-code="false" readonly-data="false" />
+        </environment-types>
+        <visibility-settings>
+          <connection-tabs value="true" />
+          <dialog-headers value="true" />
+          <object-editor-tabs value="true" />
+          <script-editor-tabs value="false" />
+          <execution-result-tabs value="true" />
+        </visibility-settings>
+      </environment>
+    </general-settings>
+  </component>
+  <component name="DBNavigator.Project.StatementExecutionManager">
+    <execution-variables />
+  </component>
+</project>
\ No newline at end of file
diff --git a/banking-server/.idea/misc.xml b/banking-server/.idea/misc.xml
index 82dbec8ad28463aed32007a93ffc07865ae98968..accd6296789966b9f3392c7a4dc3a987a7532182 100644
--- a/banking-server/.idea/misc.xml
+++ b/banking-server/.idea/misc.xml
@@ -8,7 +8,7 @@
       </list>
     </option>
   </component>
-  <component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="17" project-jdk-type="JavaSDK">
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="11" project-jdk-type="JavaSDK">
     <output url="file://$PROJECT_DIR$/out" />
   </component>
 </project>
\ No newline at end of file
diff --git a/banking-client/.idea/uiDesigner.xml b/banking-server/.idea/uiDesigner.xml
similarity index 100%
rename from banking-client/.idea/uiDesigner.xml
rename to banking-server/.idea/uiDesigner.xml
diff --git a/banking-server/pom.xml b/banking-server/pom.xml
index 24fae7265aee1c22e3135dbfa626824d5ed60414..f428c68edd6c0427fd301bee34534b7c9fd1703c 100644
--- a/banking-server/pom.xml
+++ b/banking-server/pom.xml
@@ -9,8 +9,8 @@
     <version>1.0-SNAPSHOT</version>
 
     <properties>
-        <maven.compiler.source>17</maven.compiler.source>
-        <maven.compiler.target>17</maven.compiler.target>
+        <maven.compiler.source>11</maven.compiler.source>
+        <maven.compiler.target>11</maven.compiler.target>
     </properties>
 
     <dependencies>
diff --git a/banking-server/src/main/java/ufrn/imd/BankingServerApp.java b/banking-server/src/main/java/ufrn/imd/BankingServerApp.java
index 4fed7390ea3b7b3ab9901b8f402f99065adf9142..7acd207f24982bf2667e354a6c1f35b77cf355af 100644
--- a/banking-server/src/main/java/ufrn/imd/BankingServerApp.java
+++ b/banking-server/src/main/java/ufrn/imd/BankingServerApp.java
@@ -3,8 +3,7 @@ package ufrn.imd;
 import ufrn.imd.controller.Controller;
 import ufrn.imd.controller.impl.BalanceControllerImpl;
 import ufrn.imd.controller.impl.DepositControllerImpl;
-import ufrn.imd.service.BalanceService;
-import ufrn.imd.service.DepositService;
+import ufrn.imd.repository.impl.ClientRepository;
 import ufrn.imd.service.impl.BalanceServiceImpl;
 import ufrn.imd.service.impl.DepositServiceImpl;
 
@@ -15,8 +14,8 @@ import java.rmi.RemoteException;
 public class BankingServerApp {
     public static void main(String[] args) throws RemoteException, MalformedURLException, AlreadyBoundException {
 
-        DepositService depositService = new DepositServiceImpl();
-        BalanceService balanceService = new BalanceServiceImpl();
+        DepositServiceImpl depositService = new DepositServiceImpl(new ClientRepository());
+        BalanceServiceImpl balanceService = new BalanceServiceImpl(new ClientRepository());
 
         Controller depositController = new DepositControllerImpl(depositService);
         Controller balanceController = new BalanceControllerImpl(balanceService);
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 a856ad8e51013ae78307ffd0165a009e9c5e4c5d..0c51991cd1d1c609e46d4192e603a6ab4b568b83 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
@@ -2,7 +2,7 @@ package ufrn.imd.controller.impl;
 
 import ufrn.imd.controller.Controller;
 import ufrn.imd.domain.Client;
-import ufrn.imd.service.BalanceService;
+import ufrn.imd.service.impl.BalanceServiceImpl;
 
 import java.net.MalformedURLException;
 import java.rmi.AlreadyBoundException;
@@ -10,9 +10,7 @@ import java.rmi.Naming;
 import java.rmi.RemoteException;
 import java.rmi.registry.LocateRegistry;
 import java.rmi.server.UnicastRemoteObject;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Optional;
+import java.util.*;
 
 import static ufrn.imd.utils.NameSpace.HOST_BALANCE_SERVICE;
 import static ufrn.imd.utils.NameSpace.PORT_BALANCE_SERVICE;
@@ -20,9 +18,9 @@ import static ufrn.imd.utils.NameSpace.PORT_BALANCE_SERVICE;
 @lombok.extern.java.Log
 public class BalanceControllerImpl extends UnicastRemoteObject implements Controller {
 
-    private volatile List<Client> clients = new ArrayList<>();
+    private volatile Queue<Client> clients = new ArrayDeque<>();
 
-    public BalanceControllerImpl(BalanceService service) throws RemoteException, MalformedURLException, AlreadyBoundException {
+    public BalanceControllerImpl(BalanceServiceImpl service) throws RemoteException, MalformedURLException, AlreadyBoundException {
         super();
 
         LocateRegistry.createRegistry(PORT_BALANCE_SERVICE);
@@ -46,9 +44,9 @@ public class BalanceControllerImpl extends UnicastRemoteObject implements Contro
 
     private class Notify extends Thread{
 
-        private final BalanceService service;
+        private final BalanceServiceImpl service;
 
-        public Notify(BalanceService service) {
+        public Notify(BalanceServiceImpl service) {
             super();
             this.service = service;
         }
@@ -59,29 +57,24 @@ public class BalanceControllerImpl extends UnicastRemoteObject implements Contro
 
                     log.info("notyfing the clients!");
                     int i = 0;
-                    for (Client client : clients) {
-
+                    clients.stream().forEach(client -> {
                         try {
-                            this.service.balance(Optional.of(client.getAccount()));
 
+                            log.info(String.format("Clients waiting %d", clients.size()));
+                            this.service.balance(Optional.of(client));
+                            clients.remove();
+                            log.info(String.format("Clients waiting %d", clients.size()));
                         } catch (RemoteException e) {
                             e.printStackTrace();
                         }
-                    }
+                    });
+
                     try {
                         Thread.sleep(15 * 1000);
                     } catch (InterruptedException e) {
                         e.printStackTrace();
                     }
-                } else {
-                    try {
-                        Thread.sleep(15 * 1000);
-                    } catch (InterruptedException e) {
-                        throw new RuntimeException(e);
-                    }
-                    log.info("No there's clients!");
                 }
-
             }
 
         }
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 958ac87bc7db216602387ecf2ca281dc5c147883..d9b3df5950323de0002ab2dd569206be9d510578 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
@@ -3,7 +3,7 @@ package ufrn.imd.controller.impl;
 import lombok.extern.java.Log;
 import ufrn.imd.controller.Controller;
 import ufrn.imd.domain.Client;
-import ufrn.imd.service.DepositService;
+import ufrn.imd.service.impl.DepositServiceImpl;
 
 import java.net.MalformedURLException;
 import java.rmi.AlreadyBoundException;
@@ -11,9 +11,7 @@ import java.rmi.Naming;
 import java.rmi.RemoteException;
 import java.rmi.registry.LocateRegistry;
 import java.rmi.server.UnicastRemoteObject;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Optional;
+import java.util.*;
 
 import static ufrn.imd.utils.NameSpace.HOST_DEPOSIT_SERVICE;
 import static ufrn.imd.utils.NameSpace.PORT_DEPOSIT_SERVICE;
@@ -21,8 +19,8 @@ import static ufrn.imd.utils.NameSpace.PORT_DEPOSIT_SERVICE;
 @Log
 public class DepositControllerImpl extends UnicastRemoteObject implements Controller {
 
-    private volatile List<Client> clients = new ArrayList<>();
-    public DepositControllerImpl(DepositService service) throws RemoteException, MalformedURLException, AlreadyBoundException {
+    private volatile Queue<Client> clients = new ArrayDeque<>();
+    public DepositControllerImpl(DepositServiceImpl service) throws RemoteException, MalformedURLException, AlreadyBoundException {
         super();
         log.info("Starting Deposit service!");
 
@@ -46,9 +44,9 @@ public class DepositControllerImpl extends UnicastRemoteObject implements Contro
 
     private class Notify extends Thread{
 
-        private final DepositService service;
+        private final DepositServiceImpl service;
 
-        public Notify(DepositService service) {
+        public Notify(DepositServiceImpl service) {
             super();
             this.service = service;
         }
@@ -60,31 +58,23 @@ public class DepositControllerImpl extends UnicastRemoteObject implements Contro
 
                     log.info("notyfing the clients!");
                     int i = 0;
-                    for (Client client : clients) {
-
+                    clients.stream().forEach(client -> {
                         try {
-                            this.service.deposit(200.00, Optional.of(client.getAccount()));
+                            log.info(String.format("Clients waiting %d", clients.size()));
+                            this.service.deposit(200.00, Optional.of(client));
+                            clients.remove();
+                            log.info(String.format("Clients waiting %d", clients.size()));
 
                         } catch (RemoteException e) {
                             e.printStackTrace();
                         }
-                    }
+                    });
                     try {
                         Thread.sleep(15 * 1000);
                     } catch (InterruptedException e) {
                         e.printStackTrace();
                     }
-                } else {
-                    try {
-                        Thread.sleep(15 * 1000);
-                    } catch (InterruptedException e) {
-                        throw new RuntimeException(e);
-                    }
-                    log.info("No there's clients!");
-
-
                 }
-
             }
 
         }
diff --git a/banking-server/src/main/java/ufrn/imd/repository/Repository.java b/banking-server/src/main/java/ufrn/imd/repository/Repository.java
index 636bf2b106b30a65c27fda39b3f13dff1cdba66b..589bec3786e83670f744a2ae3ce35c8fb794796d 100644
--- a/banking-server/src/main/java/ufrn/imd/repository/Repository.java
+++ b/banking-server/src/main/java/ufrn/imd/repository/Repository.java
@@ -1,9 +1,10 @@
 package ufrn.imd.repository;
 
 import java.util.List;
+import java.util.Optional;
 
 public interface Repository <T>{
 
-    public T find(Integer id);
+    public Optional<T> find(Integer id);
     public List<T> findAll();
 }
diff --git a/banking-server/src/main/java/ufrn/imd/repository/impl/ClientRepository.java b/banking-server/src/main/java/ufrn/imd/repository/impl/ClientRepository.java
index bce53daec4d91cc27933567b4ebe37c7fd72483a..83963f78bcbb35365a86888a93c423271c0df4b3 100644
--- a/banking-server/src/main/java/ufrn/imd/repository/impl/ClientRepository.java
+++ b/banking-server/src/main/java/ufrn/imd/repository/impl/ClientRepository.java
@@ -1,20 +1,21 @@
 package ufrn.imd.repository.impl;
 
+import ufrn.imd.domain.Account;
 import ufrn.imd.domain.Client;
 import ufrn.imd.repository.Repository;
 
 import java.util.List;
+import java.util.Optional;
 
 public class ClientRepository implements Repository<Client> {
     List<Client> clients = List.of(
-            new Client(),
-            new Client()
-
+            new Client(1, "Fernando Feirreira", new Account(1, "321456789", 200.00)),
+            new Client(2, "Maria Eduarda", new Account(2, "987654321", 100.00))
             );
 
     @Override
-    public Client find(Integer id) {
-        return (Client) clients.stream().filter(c -> c.getId().equals(id));
+    public Optional<Client> find(Integer id) {
+        return Optional.of(clients.get(id));
     }
 
     @Override
diff --git a/banking-server/src/main/java/ufrn/imd/service/BalanceService.java b/banking-server/src/main/java/ufrn/imd/service/BalanceService.java
deleted file mode 100644
index b82470c15060014b18ce9c6323ca2a37a5268fee..0000000000000000000000000000000000000000
--- a/banking-server/src/main/java/ufrn/imd/service/BalanceService.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package ufrn.imd.service;
-
-import ufrn.imd.domain.Account;
-
-import java.rmi.Remote;
-import java.rmi.RemoteException;
-import java.util.Optional;
-
-public interface BalanceService extends Remote {
-
-    public void balance(Optional<Account> account) throws RemoteException;
-}
diff --git a/banking-server/src/main/java/ufrn/imd/service/DepositService.java b/banking-server/src/main/java/ufrn/imd/service/DepositService.java
deleted file mode 100644
index aab39ac63fd5da6827a9ee113ba692da9902459e..0000000000000000000000000000000000000000
--- a/banking-server/src/main/java/ufrn/imd/service/DepositService.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package ufrn.imd.service;
-
-import ufrn.imd.domain.Account;
-
-import java.rmi.Remote;
-import java.rmi.RemoteException;
-import java.util.Optional;
-
-public interface DepositService extends Remote {
-
-        public void deposit(Double value, Optional<Account> account) throws RemoteException, RuntimeException;
-
-}
diff --git a/banking-server/src/main/java/ufrn/imd/service/Service.java b/banking-server/src/main/java/ufrn/imd/service/Service.java
new file mode 100644
index 0000000000000000000000000000000000000000..16fc5e127d33c7d4c69a42dec155fa4b7120946a
--- /dev/null
+++ b/banking-server/src/main/java/ufrn/imd/service/Service.java
@@ -0,0 +1,5 @@
+package ufrn.imd.service;
+
+public interface Service<T> {
+
+}
diff --git a/banking-server/src/main/java/ufrn/imd/service/WidthawService.java b/banking-server/src/main/java/ufrn/imd/service/WidthawService.java
deleted file mode 100644
index 8a5ed3baa7ecd8367276729a144c1ff882a35bed..0000000000000000000000000000000000000000
--- a/banking-server/src/main/java/ufrn/imd/service/WidthawService.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package ufrn.imd.service;
-
-import ufrn.imd.domain.Account;
-
-import java.rmi.Remote;
-import java.rmi.RemoteException;
-
-public interface WidthawService extends Remote {
-
-    public void widthaw(Double value, Account account) throws RemoteException;
-
-}
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 8ae835eee3fced34f9c22d0d743c232bc76dafd8..469601d1bb75fb17afbd2fe1c3d9a98dcd3afb2e 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
@@ -1,19 +1,28 @@
 package ufrn.imd.service.impl;
 
+import lombok.RequiredArgsConstructor;
 import lombok.extern.java.Log;
 import ufrn.imd.domain.Account;
-import ufrn.imd.service.BalanceService;
+import ufrn.imd.domain.Client;
+import ufrn.imd.repository.Repository;
+import ufrn.imd.service.Service;
 
 import java.rmi.RemoteException;
 import java.util.Optional;
 
 @Log
-public class BalanceServiceImpl implements BalanceService {
+@RequiredArgsConstructor
+public class BalanceServiceImpl implements Service {
 
 
-    @Override
-    public void balance(Optional<Account> accOP) throws RemoteException {
-        Account account = accOP.orElseThrow(() -> new RuntimeException("Invalid account"));
+    private final Repository<Client> clientRepository;
+
+    public void balance(Optional<Client> clientOptional) throws RemoteException {
+        Client user = clientOptional
+                .orElseThrow(() -> new RuntimeException("NULL USER"));
+        Client client = clientRepository.find(user.getId())
+                .orElseThrow(() -> new RuntimeException("Invalid user!"));
+        Account account = client.getAccount();
         log.info(String.format("Account Balance: R$ %f", account.getBalance()));
 
     }
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 a371112b4b282f9c336c246db214be5ede5e01d8..e7a86534678ccca34c0e0082c9bb92b2bfff00b5 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
@@ -1,24 +1,31 @@
 package ufrn.imd.service.impl;
 
+import lombok.RequiredArgsConstructor;
 import lombok.extern.java.Log;
 import ufrn.imd.domain.Account;
-import ufrn.imd.service.DepositService;
+import ufrn.imd.domain.Client;
+import ufrn.imd.repository.Repository;
+import ufrn.imd.service.Service;
 
 import java.rmi.RemoteException;
 import java.util.Optional;
 
 @Log
-public class DepositServiceImpl implements DepositService {
+@RequiredArgsConstructor
+public class DepositServiceImpl implements Service {
 
-    public DepositServiceImpl() {
-        super();
-    }
 
-    public void deposit(Double value, Optional<Account> acOp) throws RemoteException, RuntimeException {
-        Account account = acOp.orElseThrow(() -> new RuntimeException("Null User!"));
-        if(account.getBalance() < value) throw new RuntimeException("There's no money!");
-        account.setBalance(account.getBalance() - value);
-        log.info("deposit");
+    private final Repository<Client> repository;
+
+    public void deposit(Double value, Optional<Client> clientOptional) throws RemoteException, RuntimeException {
+        Client user = clientOptional
+                .orElseThrow(() -> new RuntimeException("Null User!"));
+        Client client = repository.find(user.getId())
+                .orElseThrow(() -> new RuntimeException("Invalid user!"));
+        Account account = client.getAccount();
+        account.setBalance(account.getBalance() + value);
+        log.info(String.format("Deposit concluded!"));
+        log.info(String.format("Total: %.2f", account.getBalance()));
     }
 
 }
diff --git a/banking-server/target/classes/ufrn/imd/BankingServerApp.class b/banking-server/target/classes/ufrn/imd/BankingServerApp.class
index e981c23cd377d28abc4078145c4d6009f4c2c7e6..e7bc89caf443850f74b54ca56cfedf3e1bb21797 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 4707c271c661d159f8019f881ffc3f31e61a85d3..f430dd8e588b7787d3b1e57839844a0ca969b2ba 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 7f067992c8a00c6fd8c3203ad80e171f7a42fb6b..6f1fd296957eb44ef8553d3843aed5dde42adc51 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 d91152883436e27a0f69fc0c37cc6ebde16db26b..9f55bf8b7d1a386ab7716d59ba2a4476c94238ce 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 9697b9b922e597e1104c36d785b29568877a9002..b8477ef07534ba6cd062501ed1b04324a2d61879 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 c429275f5abb1141d6e6335ce6730b9f9c18c9d7..47a33bc2bcf84a94279a49f43193a5456f898b72 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/domain/Account.class b/banking-server/target/classes/ufrn/imd/domain/Account.class
index 2a7ef8cf0adf2d1042b8a7ee3f230660df58ffeb..06c1afe87e3de366a0157786e0a200a2309ba51b 100644
Binary files a/banking-server/target/classes/ufrn/imd/domain/Account.class and b/banking-server/target/classes/ufrn/imd/domain/Account.class differ
diff --git a/banking-server/target/classes/ufrn/imd/domain/Client.class b/banking-server/target/classes/ufrn/imd/domain/Client.class
index 38d7a3658a88a4078ee7e0545a2e76bfe87708c6..e09b310a54921733a8906a5ffc2612b07666c2b6 100644
Binary files a/banking-server/target/classes/ufrn/imd/domain/Client.class and b/banking-server/target/classes/ufrn/imd/domain/Client.class differ
diff --git a/banking-server/target/classes/ufrn/imd/repository/Repository.class b/banking-server/target/classes/ufrn/imd/repository/Repository.class
index edf96faf080b1cb13de2680e95de0075fff887fd..1a11f1ee8fe4d9f5937cf449985bd127fe02bb02 100644
Binary files a/banking-server/target/classes/ufrn/imd/repository/Repository.class and b/banking-server/target/classes/ufrn/imd/repository/Repository.class differ
diff --git a/banking-server/target/classes/ufrn/imd/repository/impl/ClientRepository.class b/banking-server/target/classes/ufrn/imd/repository/impl/ClientRepository.class
index d5200a1291f7edff2158f8e3b6c0276cee9f31ea..155a44b5c55392b0c43f96fcd159f827359a5777 100644
Binary files a/banking-server/target/classes/ufrn/imd/repository/impl/ClientRepository.class and b/banking-server/target/classes/ufrn/imd/repository/impl/ClientRepository.class differ
diff --git a/banking-server/target/classes/ufrn/imd/service/BalanceService.class b/banking-server/target/classes/ufrn/imd/service/BalanceService.class
deleted file mode 100644
index a3fa528b1ec10f571b2fa396f9a310eddca7e4cc..0000000000000000000000000000000000000000
Binary files a/banking-server/target/classes/ufrn/imd/service/BalanceService.class and /dev/null differ
diff --git a/banking-server/target/classes/ufrn/imd/service/DepositService.class b/banking-server/target/classes/ufrn/imd/service/DepositService.class
deleted file mode 100644
index e417806b1752cd381b3bce46f34ff2a4c8e3b3d3..0000000000000000000000000000000000000000
Binary files a/banking-server/target/classes/ufrn/imd/service/DepositService.class and /dev/null differ
diff --git a/banking-server/target/classes/ufrn/imd/service/WidthawService.class b/banking-server/target/classes/ufrn/imd/service/WidthawService.class
deleted file mode 100644
index 87f4370c406e13dec8e6ee9115f250d18054b342..0000000000000000000000000000000000000000
Binary files a/banking-server/target/classes/ufrn/imd/service/WidthawService.class and /dev/null 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 a5e1a4d127fd1ae794f2509bcd0e3fed486f2dbe..b4fa9209a9ee6e21b9c3435e2894b0809385ba08 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 8a7bee88adf7fc8e715e5f685cc3ca200269eec5..cf644482cf2f5b0e07d532cd3dfeb33d543e52c6 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
diff --git a/banking-server/target/classes/ufrn/imd/utils/NameSpace.class b/banking-server/target/classes/ufrn/imd/utils/NameSpace.class
index 84c708c4860b4dc11f4b780a762e8ab3b3db8aa2..4352c7ac97153fc0ffa5de6fbc6076a0ad780fa8 100644
Binary files a/banking-server/target/classes/ufrn/imd/utils/NameSpace.class and b/banking-server/target/classes/ufrn/imd/utils/NameSpace.class differ