diff --git a/Sources/app/src/main/java/Common/BuildingManager.java b/Sources/app/src/main/java/Common/BuildingManager.java
index e8f7c6ebc3140e642d836df7657a91d75235699a..d98725e8910e27034ddca7f4bbf4749d26b02e0a 100644
--- a/Sources/app/src/main/java/Common/BuildingManager.java
+++ b/Sources/app/src/main/java/Common/BuildingManager.java
@@ -15,6 +15,8 @@ import java.io.ObjectOutputStream;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Locale;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
 
 import Structures.BuildingInfo;
 
@@ -76,22 +78,25 @@ public class BuildingManager {
     // saves the given building to the file system
     public static void saveBuilding(BuildingInfo building) {
         new File(save_dir, building.getName()).delete();
+        ExecutorService executor = Executors.newSingleThreadExecutor();
+        executor.execute(() -> {
+            try {
 
-        try {
-            FileOutputStream outputStream = new FileOutputStream( new File(save_dir, building.getName()) );
-            ObjectOutputStream obStream = new ObjectOutputStream(outputStream);
-            obStream.writeObject(building);
-            obStream.close();
-            outputStream.close();
-        } catch( Exception e ) {
-            Toast.makeText(context, "Error saving building "+building.getName()+": "+e.toString(), Toast.LENGTH_SHORT).show();
-        }
+                FileOutputStream outputStream = new FileOutputStream( new File(save_dir, building.getName()) );
+                ObjectOutputStream obStream = new ObjectOutputStream(outputStream);
+                obStream.writeObject(building);
+                obStream.close();
+                outputStream.close();
+            } catch( Exception e ) {
+                Toast.makeText(context, "Error saving building "+building.getName()+": "+e.toString(), Toast.LENGTH_SHORT).show();
+            }
 
-        int index = BuildingManager.buildings.indexOf(building);
-        if (index != -1) {
-            BuildingManager.buildings.remove(index);
-        }
-        BuildingManager.buildings.add(building);
+            int index = BuildingManager.buildings.indexOf(building);
+            if (index != -1) {
+                BuildingManager.buildings.remove(index);
+            }
+            BuildingManager.buildings.add(building);
+        });
     }
 
     // saves all the buildings to the file system