diff --git a/runtime/domain/block_forest.cpp b/runtime/domain/block_forest.cpp
index 92555fa81cef19f6cbf456bea39a1c79a9bf3427..8b8d5b5d5862d7fbe23db0a77a7d46edde1ce461 100644
--- a/runtime/domain/block_forest.cpp
+++ b/runtime/domain/block_forest.cpp
@@ -217,9 +217,9 @@ void BlockForest::rebalance() {
         forest->refresh();
     }
 
-    this->setBoundingBox();
     this->updateWeights();
     this->updateNeighborhood();
+    this->setBoundingBox();
 }
 
 void BlockForest::initialize(int *argc, char ***argv) {
@@ -244,11 +244,16 @@ void BlockForest::initialize(int *argc, char ***argv) {
         domain, block_config, walberla::Vector3<bool>(true, true, true), procs, ref_level);
 
     this->info = make_shared<walberla::blockforest::InfoCollection>();
-    this->setBoundingBox();
 
     if(balance_workload) {
         this->initializeWorkloadBalancer();
+        this->updateWeights();
+        forest->refresh();
     }
+
+    this->updateWeights();
+    this->updateNeighborhood();
+    this->setBoundingBox();
 }
 
 void BlockForest::initializeWorkloadBalancer() {