diff --git a/ChemistryLib/ChemicalSolverInterface.h b/ChemistryLib/ChemicalSolverInterface.h
index e821496003a08fb17a86b5820ec4f5552e4abce6..17b1464d2484130833d0fb16a41d4a365e676208 100644
--- a/ChemistryLib/ChemicalSolverInterface.h
+++ b/ChemistryLib/ChemicalSolverInterface.h
@@ -23,7 +23,8 @@ public:
         std::vector<GlobalVector> const& interpolated_process_solutions) = 0;
 
     virtual void doWaterChemistryCalculation(
-        std::vector<GlobalVector*>& process_solutions, double const dt) = 0;
+        std::vector<GlobalVector> const& interpolated_process_solutions,
+        double const dt) = 0;
 
     virtual std::vector<GlobalVector*> getIntPtProcessSolutions() const = 0;
 
diff --git a/ChemistryLib/PhreeqcIO.cpp b/ChemistryLib/PhreeqcIO.cpp
index b9f08563af3f00142454ed109fc0f91b10ff8161..9944e6aa9fd91e9bd6bca0870e85f5a2c8d208df 100644
--- a/ChemistryLib/PhreeqcIO.cpp
+++ b/ChemistryLib/PhreeqcIO.cpp
@@ -143,7 +143,8 @@ std::vector<GlobalVector*> PhreeqcIO::getIntPtProcessSolutions() const
 }
 
 void PhreeqcIO::doWaterChemistryCalculation(
-    std::vector<GlobalVector*>& process_solutions, double const dt)
+    std::vector<GlobalVector> const& interpolated_process_solutions,
+    double const dt)
 {
     setAqueousSolution(interpolated_process_solutions);
 
@@ -154,9 +155,6 @@ void PhreeqcIO::doWaterChemistryCalculation(
     execute();
 
     readOutputsFromFile();
-
-    setAqueousSolutionsOrUpdateProcessSolutions(
-        process_solutions, Status::UpdatingProcessSolutions);
 }
 
 void PhreeqcIO::setAqueousSolution(
diff --git a/ChemistryLib/PhreeqcIO.h b/ChemistryLib/PhreeqcIO.h
index 38a1bfa79e853778bd735d3741bf7325b69b1f49..5ad64fb8998672b017514c383f0e830d2724d77d 100644
--- a/ChemistryLib/PhreeqcIO.h
+++ b/ChemistryLib/PhreeqcIO.h
@@ -51,7 +51,7 @@ public:
                                        interpolated_process_solutions) override;
 
     void doWaterChemistryCalculation(
-        std::vector<GlobalVector*>& process_solutions,
+        std::vector<GlobalVector> const& interpolated_process_solutions,
         double const dt) override;
 
     void setAqueousSolution(
diff --git a/ChemistryLib/PhreeqcKernel.cpp b/ChemistryLib/PhreeqcKernel.cpp
index 41827e610e8e27e21facac549f32129b73e4b027..a3c18a7f243ed4a568f81470f9926fd979213a9f 100644
--- a/ChemistryLib/PhreeqcKernel.cpp
+++ b/ChemistryLib/PhreeqcKernel.cpp
@@ -170,8 +170,11 @@ void PhreeqcKernel::reinitializeRates()
 }
 
 void PhreeqcKernel::doWaterChemistryCalculation(
-    std::vector<GlobalVector*>& process_solutions, double const dt)
+    std::vector<GlobalVector> const& /*interpolated_process_solutions*/,
+    double const dt)
 {
+    std::vector<GlobalVector*> process_solutions;
+
     setAqueousSolutions(process_solutions);
 
     setTimeStepSize(dt);
diff --git a/ChemistryLib/PhreeqcKernel.h b/ChemistryLib/PhreeqcKernel.h
index 565725cd9fc9a21b96c06e87b026ad0eea1fb7dd..85f93a31a6e451b51b4647d5248d9f1ec0295d49 100644
--- a/ChemistryLib/PhreeqcKernel.h
+++ b/ChemistryLib/PhreeqcKernel.h
@@ -45,7 +45,7 @@ public:
                                        interpolated_process_solutions) override;
 
     void doWaterChemistryCalculation(
-        std::vector<GlobalVector*>& process_solutions,
+        std::vector<GlobalVector> const& interpolated_process_solutions,
         double const dt) override;
 
     void setAqueousSolutions(