diff --git a/Documentation/Doxyfile.in b/Documentation/Doxyfile.in
index 01e722908e222a9e4a466cd1ec314637799980ac..11ddb1efa725266c24b9f07f4d5671dac491b538 100644
--- a/Documentation/Doxyfile.in
+++ b/Documentation/Doxyfile.in
@@ -885,7 +885,7 @@ EXAMPLE_RECURSIVE      = NO
 # that contain images that are to be included in the documentation (see the
 # \image command).
 
-IMAGE_PATH             =
+IMAGE_PATH             = ${CMAKE_SOURCE_DIR}/Documentation/images
 
 # The INPUT_FILTER tag can be used to specify a program that doxygen should
 # invoke to filter for each input file. Doxygen will invoke the filter program
diff --git a/Documentation/images/ode-solver-concept.pdf b/Documentation/images/ode-solver-concept.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..103d0e04e9aa78ead3bae7314375d7ec3b74c5a4
Binary files /dev/null and b/Documentation/images/ode-solver-concept.pdf differ
diff --git a/Documentation/images/ode-solver-concept.png b/Documentation/images/ode-solver-concept.png
new file mode 100644
index 0000000000000000000000000000000000000000..f4d74222e9f0e9402b2c4757baec56bf5d371e98
Binary files /dev/null and b/Documentation/images/ode-solver-concept.png differ
diff --git a/Documentation/images/ode-solver-concept.tex b/Documentation/images/ode-solver-concept.tex
new file mode 100644
index 0000000000000000000000000000000000000000..d357c3731edab72d4446ae83243b3647886033fa
--- /dev/null
+++ b/Documentation/images/ode-solver-concept.tex
@@ -0,0 +1,116 @@
+%\documentclass[landscape,pagesize,DIV=14]{scrartcl}
+\documentclass[border=2mm]{standalone}
+
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+
+\usepackage{amsmath}
+
+\usepackage{tikz}
+\usetikzlibrary{graphs}%,graphdrawing}
+\usetikzlibrary{positioning}
+\usetikzlibrary{calc}
+
+\newcommand{\code}[1]{\texttt{#1}}
+\newcommand{\Owns}[1]{{\color{red}#1}}
+
+\definecolor{mycontour}{HTML}{43709A}
+\definecolor{myfill}{HTML}{E2EBF2}
+\newlength\separation
+\setlength{\separation}{1ex}
+
+\begin{document}
+
+\begin{tikzpicture}[
+    very thick,
+    align=left, anchor=west,
+    node distance=\separation,
+    color=mycontour,
+    text=black,
+    every node/.style={
+      inner ysep=\separation,
+      inner xsep=1.5\separation,
+      rectangle,
+      rounded corners,
+      draw=mycontour,
+      fill=myfill
+    }
+]
+  \node (timeloop) at (0,0) {
+    \code{TimeLoopSingleODE}, $t :\to t + \Delta t$
+    \quad (\Owns{$x_\text{N}$})
+  };
+  \node (tdodesys) [below right=1.5\separation and 3\separation of timeloop.south west, anchor=north west] {
+    solves a \code{TimeDiscretizedODESystem}
+    (\Owns{$M$}, \Owns{$K$}, \Owns{$b$}, \Owns{$J$})
+  };
+  %\node (tdodesysDetail) [below right=of tdodesys.south west] {
+  \node (tdodesysDetail) [below=of tdodesys] {
+    which is a \code{NonlinearSystem}
+    \\ and has a \code{TimeDiscretization} (\Owns{old $x_n$}),
+    \\ an \code{ODESystem}
+    \\ and a \code{MatrixTranslator} (\Owns{$\bar M$}, \Owns{$\bar b$})
+  };
+  \path let \p1=(tdodesys.west), \p2=(tdodesysDetail.south)
+  in node (nlsolver) [anchor=north west] at (\x1,\y2-2\separation) {
+    using a \code{NonlinearSolver} (\Owns{$A$}, \Owns{$\tilde b$}; \Owns{$\tilde J$}, \Owns{$r$})
+  };
+  % \node (nlsolverDetail) [below right=of nlsolver.south west] {
+  \node (nlsolverDetail) [below=of nlsolver] {
+    which solves a \code{NonlinearSystem}
+  };
+  \node (nlsolverDetail2) [below left=of nlsolverDetail.south east, anchor=north east] {
+    {$
+      \left.
+      \begin{aligned}
+        Ax &= \tilde b \\
+        \text{or } \tilde J \Delta x &= -r
+      \end{aligned}
+      \right\}
+    $}
+  };
+
+  \node (process) at (18, 0) { A FEM \code{Process} };
+  \node (processDetail) [below right=1.5\separation and 3\separation of process.south west] {
+    is an \code{ODESystem} \\
+    (in this case $M\dot x + Kx - b = 0$)
+  };
+  \node (assembly) [below=of processDetail.south west, anchor=north west] {
+    which assembles the matrices and vectors
+  };
+  \node (assembly2) [below right=of assembly.south west, anchor=north west] {
+    $\left\{
+      \begin{aligned}
+        &M, K \text{ and } b \\
+        &J \text{ if needed}
+      \end{aligned}
+      \right.$
+  };
+
+  \path[draw=none] (timeloop.east) -- node [pos=0.55, above, anchor=south, align=center] {
+    $M(x,t) \cdot \dot x + K(x,t) \cdot x - b(x,t) =: r(x,t) \stackrel!= 0$ \\[1mm]
+    \code{FirstOrderImplicitQuasiLinear}
+  } (process.west);
+
+  \draw let \p1=(timeloop.south west) in (\x1+1.75\separation,\y1) |- (tdodesys);
+  \draw let \p1=(timeloop.south west) in (\x1+1.75\separation,\y1) |- (nlsolver);
+
+  \draw let \p1=(process.south west) in (\x1+1.75\separation,\y1) |- (processDetail);
+  \draw let \p1=(process.south west) in (\x1+1.75\separation,\y1) |- (assembly);
+
+  \draw (tdodesysDetail) -- (tdodesys);
+  \draw (nlsolver) -- (nlsolverDetail);
+
+  \draw[<-] (nlsolverDetail2.east) --
+  node [pos=0.55, anchor=center] {
+    The \code{TimeDiscretizedODESystem} \\
+    translates the matrices and vectors \\
+    using a \code{MatrixTranslator} \\
+    which knows about the used \code{TimeDiscretization}, \\
+    and the type of ODE, \\
+    i.\,e., \code{FirstOrderImplicitQuasiLinear}
+  } (assembly2.west);
+
+\end{tikzpicture}
+
+\end{document}