diff --git a/src/inputs/geometry.cpp b/src/inputs/geometry.cpp
index 5cb26f0902b41bc81a81f6cb34174e722e491088..09cc521f15b63d20e0a039667d48deb53627587e 100644
--- a/src/inputs/geometry.cpp
+++ b/src/inputs/geometry.cpp
@@ -3,7 +3,7 @@
 namespace solver {
 
 solver::GeometrySettings make_geometry(solver::InputInfo ii,
-                                       std::vector<InputsMessage> messages) {
+                                       std::vector<InputsMessage> &messages) {
   solver::GeometrySettings geo;
 
   if (ii.count(CSG_FILENAME)) {
diff --git a/src/inputs/mesh.cpp b/src/inputs/mesh.cpp
index be69dc6ae120677f24b2823ed8da6e743940642d..7f9d02875c54c6aefe7b2ec7ebdde262d1d7df46 100644
--- a/src/inputs/mesh.cpp
+++ b/src/inputs/mesh.cpp
@@ -3,7 +3,7 @@
 namespace solver {
 
 solver::MeshSettings make_mesh(solver::InputInfo ii,
-                               std::vector<InputsMessage> messages) {
+                               std::vector<InputsMessage> &messages) {
   solver::MeshSettings mesh;
   auto [mx, my, mz] = mesh.axes;
 
diff --git a/src/inputs/solver.cpp b/src/inputs/solver.cpp
index 3705a0573982f9bcf047d57cd17a9ba05f6525b8..45d6e32f8a10cd2bcfe555be7ec800e494361fb2 100644
--- a/src/inputs/solver.cpp
+++ b/src/inputs/solver.cpp
@@ -4,7 +4,7 @@
 
 namespace solver {
 
-void require(std::string key, std::vector<InputsMessage> messages, int size) {
+void require(std::string key, std::vector<InputsMessage> &messages, int size) {
   std::ostringstream oss;
 
   if (size == 0) {
diff --git a/src/inputs/solver_impl.hpp b/src/inputs/solver_impl.hpp
index 4ab313fdcdf3d43daadfd261e2c393c37c525494..31d69563030c5c14c34171be6a545aae0c858607 100644
--- a/src/inputs/solver_impl.hpp
+++ b/src/inputs/solver_impl.hpp
@@ -1,9 +1,8 @@
 #include <solver.hpp>
 
 namespace solver {
-GeometrySettings make_geometry(solver::InputInfo,
-                               std::vector<InputsMessage> messages);
-MeshSettings make_mesh(solver::InputInfo, std::vector<InputsMessage> messages);
-TimeSettings make_time(solver::InputInfo, std::vector<InputsMessage> messages);
-void require(std::string, std::vector<InputsMessage>, int);
+GeometrySettings make_geometry(solver::InputInfo, std::vector<InputsMessage> &);
+MeshSettings make_mesh(solver::InputInfo, std::vector<InputsMessage> &);
+TimeSettings make_time(solver::InputInfo, std::vector<InputsMessage> &);
+void require(std::string, std::vector<InputsMessage> &, int);
 } // namespace solver
diff --git a/src/inputs/time.cpp b/src/inputs/time.cpp
index 202f36255996f59c558ced9439842b97118830e4..2604ed46b38e06dc471975af5df44f39a917a122 100644
--- a/src/inputs/time.cpp
+++ b/src/inputs/time.cpp
@@ -3,7 +3,7 @@
 namespace solver {
 
 solver::TimeSettings make_time(solver::InputInfo ii,
-                               std::vector<InputsMessage> messages) {
+                               std::vector<InputsMessage> &messages) {
   solver::TimeSettings time;
 
   auto dt_max = std::get<solver::NumberArray>(ii[DT_MAX]);