diff --git a/build/includes/summa_actor/summa_client.hpp b/build/includes/summa_actor/summa_client.hpp
index a3225d36a816fe42504849e0bf3b1b0ec8785e1b..23ec9c7e33de8e55446b0e2cbdeb845a62a0a537 100644
--- a/build/includes/summa_actor/summa_client.hpp
+++ b/build/includes/summa_actor/summa_client.hpp
@@ -30,6 +30,7 @@ struct summa_client_state {
     std::vector<std::tuple<caf::actor, std::string>> backup_servers_list;
 
     Batch current_batch;
+    bool saved_batch = false;
 
     Summa_Actor_Settings summa_actor_settings;
     File_Access_Actor_Settings file_access_actor_settings;
diff --git a/build/source/actors/summa_actor/summa_backup_server.cpp b/build/source/actors/summa_actor/summa_backup_server.cpp
index 77380f30448a8ba5244fe165747d69625b513e7a..e3ec8a46cbfd92bb9bbab30e15b7a6f49e69bd27 100644
--- a/build/source/actors/summa_actor/summa_backup_server.cpp
+++ b/build/source/actors/summa_actor/summa_backup_server.cpp
@@ -116,6 +116,7 @@ behavior summa_backup_server(stateful_actor<summa_server_state>* self, const act
         // We have a new backup server that was added to the server
         [=](update_backup_server_list, std::vector<std::tuple<caf::actor, std::string>> backup_servers) {
             aout(self) << "Received the backup server list from the lead server\n";
+            aout(self) << "Backup Server List = " << backup_servers << std::endl;
             self->state.backup_servers_list = backup_servers;
         },
         
diff --git a/build/source/actors/summa_actor/summa_client.cpp b/build/source/actors/summa_actor/summa_client.cpp
index d11a81941320d4873296d076626fe9b388853a68..46d58af649c03be5043e1151648a71cab2e66028 100644
--- a/build/source/actors/summa_actor/summa_client.cpp
+++ b/build/source/actors/summa_actor/summa_client.cpp
@@ -32,7 +32,7 @@ behavior summa_client_init(stateful_actor<summa_client_state>* self) {
 
  
 behavior summa_client(stateful_actor<summa_client_state>* self) {
-    
+
     self->state.running = true;
     self->send(self->state.current_server_actor, connect_to_server_v, self, self->state.hostname);
     return {
@@ -66,6 +66,10 @@ behavior summa_client(stateful_actor<summa_client_state>* self) {
                     if(actor_cast<actor>(server) == server_actor ) {
                         aout(self) << "Found Match\n";
                         self->state.current_server = server;
+                        if (self->state.saved_batch) {
+                            self->state.saved_batch = false;
+                            self->send(self->state.current_server_actor, done_batch_v, self, self->state.current_batch);
+                        }
                     }
                 }
                 self->state.servers.clear();
@@ -110,10 +114,10 @@ behavior summa_client(stateful_actor<summa_client_state>* self) {
             self->state.current_batch.updateWriteTime(write_time);
 
             if(self->state.current_server == nullptr) {
-                aout(self) << "Maybe We Should not Send this\n";
+                aout(self) << "Saving batch until we find a new lead server\n";
+                self->state.saved_batch = true;
             } else {
                 self->send(self->state.current_server_actor, done_batch_v, self, self->state.current_batch);
-
             }
         },
 
diff --git a/build/source/actors/summa_actor/summa_server.cpp b/build/source/actors/summa_actor/summa_server.cpp
index 7cf9035d6f1c8d2e3f956177a91a249cbded94fd..cdd22009b2a5b48075997360b5460a781b6f87e2 100644
--- a/build/source/actors/summa_actor/summa_server.cpp
+++ b/build/source/actors/summa_actor/summa_server.cpp
@@ -54,7 +54,8 @@ behavior summa_server(stateful_actor<summa_server_state>* self) {
             std::optional<Client> client = self->state.client_container.getClient(client_actor.address());
             if (client.has_value()) {
                 aout(self) << "Client is already connected\n";
-                aout(self) << "Checking if client has batch\n";
+                aout(self) << "Updating " << hostname << " with current backup servers\n";
+                self->send(client.value().getActor(), update_backup_server_list_v, self->state.backup_servers_list);
                 std::optional<Batch> batch = client.value().getBatch();
                 if (batch.has_value()) {
                     return;
@@ -94,7 +95,16 @@ behavior summa_server(stateful_actor<summa_server_state>* self) {
         [=](connect_as_backup, actor backup_server, std::string hostname) {
             aout(self) << "Received Connection Request From a backup server " << hostname <<  "\n";
             self->monitor(backup_server);
-            self->state.backup_servers_list.push_back(std::make_tuple(backup_server, hostname));
+            // Check if the backup server is already connected
+            auto backup_server_iterator = find(self->state.backup_servers_list.begin(), self->state.backup_servers_list.end(), std::make_tuple(backup_server, hostname));
+
+            if (backup_server_iterator != self->state.backup_servers_list.end()) {
+                aout(self) << "Backup Server is already connected\n";
+            } else {
+                aout(self) << "Adding Backup Server to list\n";
+                self->state.backup_servers_list.push_back(std::make_tuple(backup_server, hostname));
+            }
+            
             self->send(backup_server, connect_as_backup_v); // confirm connection with sender
             // Now we need to send the backup actor our current state
             self->send(backup_server, update_with_current_state_v, self->state.batch_container, self->state.client_container);