diff --git a/ProcessLib/ThermoMechanics/CreateThermoMechanicsProcess.cpp b/ProcessLib/ThermoMechanics/CreateThermoMechanicsProcess.cpp
index a35ab72aefc3f165ba576efe76ab51a61b786a32..e785b49dc3df2f49110c943e701804d65cccd015 100644
--- a/ProcessLib/ThermoMechanics/CreateThermoMechanicsProcess.cpp
+++ b/ProcessLib/ThermoMechanics/CreateThermoMechanicsProcess.cpp
@@ -23,12 +23,6 @@ namespace ProcessLib
 {
 namespace ThermoMechanics
 {
-template <int DisplacementDim>
-class ThermoMechanicsProcess;
-
-extern template class ThermoMechanicsProcess<2>;
-extern template class ThermoMechanicsProcess<3>;
-
 template <int DisplacementDim>
 std::unique_ptr<Process> createThermoMechanicsProcess(
     MeshLib::Mesh& mesh,
@@ -182,11 +176,10 @@ std::unique_ptr<Process> createThermoMechanicsProcess(
     ProcessLib::parseSecondaryVariables(config, secondary_variables,
                                         named_function_caller);
 
-    return std::unique_ptr<ThermoMechanicsProcess<DisplacementDim>>{
-        new ThermoMechanicsProcess<DisplacementDim>{
-            mesh, std::move(jacobian_assembler), parameters, integration_order,
-            std::move(process_variables), std::move(process_data),
-            std::move(secondary_variables), std::move(named_function_caller)}};
+    return std::make_unique<ThermoMechanicsProcess<DisplacementDim>>(
+        mesh, std::move(jacobian_assembler), parameters, integration_order,
+        std::move(process_variables), std::move(process_data),
+        std::move(secondary_variables), std::move(named_function_caller));
 }
 
 template std::unique_ptr<Process> createThermoMechanicsProcess<2>(
diff --git a/ProcessLib/ThermoMechanics/CreateThermoMechanicsProcess.h b/ProcessLib/ThermoMechanics/CreateThermoMechanicsProcess.h
index 5b2849eedd96e7b430cca2782e5b59092be2c4ab..161c0847ee931872bb37fe0059efda6fb0d14273 100644
--- a/ProcessLib/ThermoMechanics/CreateThermoMechanicsProcess.h
+++ b/ProcessLib/ThermoMechanics/CreateThermoMechanicsProcess.h
@@ -9,7 +9,24 @@
 
 #pragma once
 
-#include "ProcessLib/Process.h"
+#include <memory>
+#include <vector>
+
+namespace BaseLib
+{
+class ConfigTree;
+}
+namespace MeshLib
+{
+class Mesh;
+}
+namespace ProcessLib
+{
+class AbstractJacobianAssembler;
+struct ParameterBase;
+class Process;
+class ProcessVariable;
+}
 
 namespace ProcessLib
 {
@@ -24,5 +41,21 @@ std::unique_ptr<Process> createThermoMechanicsProcess(
     unsigned const integration_order,
     BaseLib::ConfigTree const& config);
 
+extern template std::unique_ptr<Process> createThermoMechanicsProcess<2>(
+    MeshLib::Mesh& mesh,
+    std::unique_ptr<ProcessLib::AbstractJacobianAssembler>&& jacobian_assembler,
+    std::vector<ProcessVariable> const& variables,
+    std::vector<std::unique_ptr<ParameterBase>> const& parameters,
+    unsigned const integration_order,
+    BaseLib::ConfigTree const& config);
+
+extern template std::unique_ptr<Process> createThermoMechanicsProcess<3>(
+    MeshLib::Mesh& mesh,
+    std::unique_ptr<ProcessLib::AbstractJacobianAssembler>&& jacobian_assembler,
+    std::vector<ProcessVariable> const& variables,
+    std::vector<std::unique_ptr<ParameterBase>> const& parameters,
+    unsigned const integration_order,
+    BaseLib::ConfigTree const& config);
+
 }  // namespace ThermoMechanics
 }  // namespace ProcessLib