diff --git a/ProcessLib/NeumannBc.h b/ProcessLib/NeumannBc.h
index b46d3f6d0708b01a6d7fe03a7c82ccaf845da70d..995ee16ab2e4107acd8554c9aa7eb275c2669e39 100644
--- a/ProcessLib/NeumannBc.h
+++ b/ProcessLib/NeumannBc.h
@@ -50,17 +50,17 @@ public:
     /// DOF-table, and a mesh subset.
     /// A local DOF-table, a subset of the given one, is constructed.
     NeumannBc(
-        NeumannBcConfig* bc,
+        NeumannBcConfig const& bc,
         unsigned const integration_order,
         AssemblerLib::LocalToGlobalIndexMap const& local_to_global_index_map,
         MeshLib::MeshSubset const& mesh_subset_all_nodes
         )
         :
-          _function(*bc->getFunction()),
+          _function(*bc.getFunction()),
           _integration_order(integration_order)
     {
         // deep copy because the neumann bc config destroys the elements.
-        std::transform(bc->elementsBegin(), bc->elementsEnd(),
+        std::transform(bc.elementsBegin(), bc.elementsEnd(),
                 std::back_inserter(_elements),
                 std::mem_fn(&MeshLib::Element::clone));
 
diff --git a/ProcessLib/ProcessVariable.h b/ProcessLib/ProcessVariable.h
index e34220e5fbf4cc896b9d18c0d4bc58a2bfcc6f18..e17a572dba3bb12adfa4538b730e5dd95075e72b 100644
--- a/ProcessLib/ProcessVariable.h
+++ b/ProcessLib/ProcessVariable.h
@@ -58,7 +58,7 @@ public:
         for (NeumannBcConfig* config : _neumann_bc_configs)
         {
             config->initialize(searcher);
-            bcs = new NeumannBc<GlobalSetup>(config, std::forward<Args>(args)...);
+            bcs = new NeumannBc<GlobalSetup>(*config, std::forward<Args>(args)...);
         }
     }