diff --git a/MathLib/ODE/ConcreteOdeSolver.h b/MathLib/ODE/ConcreteOdeSolver.h
index 64ca47e555cea807842f88bb79114d40691a16f3..200877dff8462b660593ef37445fa28702f2c0b2 100644
--- a/MathLib/ODE/ConcreteOdeSolver.h
+++ b/MathLib/ODE/ConcreteOdeSolver.h
@@ -41,7 +41,7 @@ std::unique_ptr<OdeSolver<NumEquations, FunctionArguments...>> createOdeSolver(
  *
  * This way the \c Implementation does not need to be templated.
  */
-template <unsigned NumEquations, typename Implementation,
+template <typename Implementation, unsigned NumEquations,
           typename... FunctionArguments>
 class ConcreteOdeSolver final
     : public OdeSolver<NumEquations, FunctionArguments...>,
@@ -122,7 +122,7 @@ std::unique_ptr<OdeSolver<NumEquations, FunctionArguments...>> createOdeSolver(
 {
 #ifdef CVODE_FOUND
 	return std::unique_ptr<OdeSolver<NumEquations, FunctionArguments...>>(
-	    new ConcreteOdeSolver<NumEquations, CVodeSolver, FunctionArguments...>(
+	    new ConcreteOdeSolver<CVodeSolver, NumEquations, FunctionArguments...>(
 	        config));
 #else
 	return nullptr;