diff --git a/src/vt/vrt/collection/balance/workload_replay.cc b/src/vt/vrt/collection/balance/workload_replay.cc
index 2c22a99bd6..b57198cd38 100644
--- a/src/vt/vrt/collection/balance/workload_replay.cc
+++ b/src/vt/vrt/collection/balance/workload_replay.cc
@@ -59,7 +59,7 @@ void replayWorkloads(
 ) {
   // read in object loads from json files
   auto const filename = theConfig()->getLBStatsFileIn();
-  auto workloads = WorkloadDataMigrator::readInWorkloads(filename);
+  auto workloads = readInWorkloads(filename);
 
   replayWorkloads(initial_phase, phases_to_run, workloads);
 }
@@ -207,6 +207,33 @@ void replayWorkloads(
   }
 }
 
+std::shared_ptr<StatsData>
+readInWorkloads(const std::string &filename) {
+  using util::json::Reader;
+
+  Reader r{filename};
+  auto json = r.readFile();
+  auto sd = std::make_shared<StatsData>(*json);
+
+  for (auto &phase_data : sd->node_data_) {
+    vt_debug_print(
+      normal, replay,
+      "found {} loads for phase {}\n",
+      phase_data.second.size(), phase_data.first
+    );
+  }
+
+  for (auto &phase_data : sd->node_comm_) {
+    vt_debug_print(
+      normal, replay,
+      "found {} comms for phase {}\n",
+      phase_data.second.size(), phase_data.first
+    );
+  }
+
+  return sd;
+}
+
 
 /*static*/
 objgroup::proxy::Proxy<WorkloadDataMigrator>
@@ -258,34 +285,6 @@ WorkloadDataMigrator::updateCurrentNodes(
   return modified_reassignment;
 }
 
-/*static*/
-std::shared_ptr<StatsData>
-WorkloadDataMigrator::readInWorkloads(std::string filename) {
-  using util::json::Reader;
-
-  Reader r{filename};
-  auto json = r.readFile();
-  auto sd = std::make_shared<StatsData>(*json);
-
-  for (auto &phase_data : sd->node_data_) {
-    vt_debug_print(
-      normal, replay,
-      "found {} loads for phase {}\n",
-      phase_data.second.size(), phase_data.first
-    );
-  }
-
-  for (auto &phase_data : sd->node_comm_) {
-    vt_debug_print(
-      normal, replay,
-      "found {} comms for phase {}\n",
-      phase_data.second.size(), phase_data.first
-    );
-  }
-
-  return sd;
-}
-
 /*static*/
 std::shared_ptr<ProposedReassignment>
 WorkloadDataMigrator::relocateWorkloadsForReplay(
diff --git a/src/vt/vrt/collection/balance/workload_replay.h b/src/vt/vrt/collection/balance/workload_replay.h
index 2003856e62..548dd56219 100644
--- a/src/vt/vrt/collection/balance/workload_replay.h
+++ b/src/vt/vrt/collection/balance/workload_replay.h
@@ -94,6 +94,17 @@ void replayWorkloads(
   std::shared_ptr<StatsData> workloads
 );
 
+/**
+ * \brief Build a StatsData object from the LB data in a json file
+ *
+ * \param[in] filename read in LB data from the specified json file
+ *
+ * \return the StatsData object built from the LB data
+ */
+std::shared_ptr<StatsData>
+readInWorkloads(const std::string &filename);
+
+
 /**
  * \struct WorkloadDataMigrator
  *
@@ -139,16 +150,6 @@ struct WorkloadDataMigrator : lb::BaseLB {
     std::shared_ptr<const Reassignment> lb_reassignment
   );
 
-  /**
-   * \brief Build a StatsData object from the LB data in a json file
-   *
-   * \param[in] filename read in LB data from the specified json file
-   *
-   * \return the StatsData object built from the LB data
-   */
-  static std::shared_ptr<StatsData>
-  readInWorkloads(std::string filename);
-
   /**
    * \brief Relocate object workloads to the rank where the objects are supposed
    * to exist during this phase