diff --git a/src/spatial-solving/fixedpointiterator.cc b/src/spatial-solving/fixedpointiterator.cc
index 25d36782bffdb3796955cfbe81d1cecb221ca417..4e9309e22e6608caeb7135d30fb9c35455ea3441 100644
--- a/src/spatial-solving/fixedpointiterator.cc
+++ b/src/spatial-solving/fixedpointiterator.cc
@@ -30,6 +30,7 @@
 #include "../utils/tobool.hh"
 #include "../utils/debugutils.hh"
 
+#include "solverfactory.hh"
 
 void FixedPointIterationCounter::operator+=(
     FixedPointIterationCounter const &other) {
@@ -123,8 +124,11 @@ FixedPointIterator<Factory, NBodyAssembler, Updaters, ErrorNorm>::run(
   std::cout << "- Problem assembled: success" << std::endl;
 
   // set up functional and TNMMG solver
-  Functional J(bilinearForm, totalRhs, globalFriction_, vLower, vUpper);
-  Factory solverFactory(parset_.sub("solver.tnnmg"), J, ignoreNodes_);
+  using ZeroFactory = SolverFactory<Functional, IgnoreVector>;
+  Functional J(bilinearForm, totalRhs, ZeroNonlinearity(), vLower, vUpper);
+  ZeroFactory solverFactory(parset_.sub("solver.tnnmg"), J, ignoreNodes_);
+  /*Functional J(bilinearForm, totalRhs, globalFriction_, vLower, vUpper);
+  Factory solverFactory(parset_.sub("solver.tnnmg"), J, ignoreNodes_);*/
   auto step = solverFactory.step();
 
   std::cout << "- Functional and TNNMG step setup: success" << std::endl;
diff --git a/src/spatial-solving/fixedpointiterator.hh b/src/spatial-solving/fixedpointiterator.hh
index fa93c0870555ca106090401e3c6f1ec582d999bc..9aa6119642451406c2537f569e7091f55e4c8cf3 100644
--- a/src/spatial-solving/fixedpointiterator.hh
+++ b/src/spatial-solving/fixedpointiterator.hh
@@ -13,6 +13,8 @@
 
 #include <dune/contact/assemblers/nbodyassembler.hh>
 
+#include "tnnmg/zerononlinearity.hh"
+#include "tnnmg/functional.hh"
 struct FixedPointIterationCounter {
   size_t iterations = 0;
   size_t multigridIterations = 0;
@@ -25,10 +27,11 @@ std::ostream &operator<<(std::ostream &stream,
 
 template <class Factory, class NBodyAssembler, class Updaters, class ErrorNorm>
 class FixedPointIterator {
-  using Functional = typename Factory::Functional;
   using ScalarVector = typename Updaters::StateUpdater::ScalarVector;
   using Vector = typename Factory::Vector;
   using Matrix = typename Factory::Matrix;
+
+  using Functional = Functional<Matrix&, Vector&, ZeroNonlinearity&, Vector&, Vector&, typename Matrix::field_type>; //typename Factory::Functional;
   using Nonlinearity = typename Factory::Functional::Nonlinearity;
 
   const static int dims = Vector::block_type::dimension;