The biggest challenge we faced was to define create a framework for running algorithms backwards and with different granularity while maximizing abstraction where possible (cf. section~\ref{sec:components}). Multiple attempts of restructuring the architecture were needed to find a satisfactory solution. The only thing we are not yet content with is the modularity aspect: We chose to only present the user a single algorithm and our internal data structure is also strongly oriented towards the node placement algorithm by Brandes and Köpf. It would be much more beautiful to \begin{itemize} \item store the global variables of the specific algorithm, like \member{sink} and \member{root} in our case, in the global part of the \code{Memory} of the \code{Processor}. \item be able to load arbitrary algorithms at runtime. \end{itemize} We leave these features for future work to address.