diff --git a/src/one-body-sample.cc b/src/one-body-sample.cc
index 4c87a25faebf60c38eb18aa4d01a02bab7177c55..1e2acf3d8c7199f0809d16da192bc4894e205622 100644
--- a/src/one-body-sample.cc
+++ b/src/one-body-sample.cc
@@ -176,20 +176,23 @@ initStateUpdater(Config::state_model model,
   }
 }
 
+template <class FunctionMap> void initPython(FunctionMap &functions) {
+  Python::start();
+
+  Python::run("import sys");
+  Python::run("sys.path.append('" srcdir "')");
+
+  Python::import("one-body-sample")
+      .get("Functions")
+      .toC<typename FunctionMap::Base>(functions);
+}
+
 int main(int argc, char *argv[]) {
   try {
     typedef SharedPointerMap<std::string, Dune::VirtualFunction<double, double>>
     FunctionMap;
     FunctionMap functions;
-    {
-      Python::start();
-
-      Python::run("import sys");
-      Python::run("sys.path.append('" srcdir "')");
-
-      Python::import("one-body-sample").get("Functions").toC<FunctionMap::Base>(
-          functions);
-    }
+    initPython(functions);
 
     Dune::ParameterTree parset;
     Dune::ParameterTreeParser::readINITree(srcdir "/one-body-sample.parset",