\chapter{Future work}
\section{Improved notation for hierarchical state}
The hierarchic state model requires quite some boilerplate code for unpacking
and distributing the input state and collecting and repacking the output
state. There is really only one way in which this state handling can be done,
so it would make sense to hide this boilerplate. This would incur no
flexibility cost at all, since there are no other ways that would work.

Options: Misuse the do notation in Haskell, create some abstraction in
Haskell or add new syntax.

\section{Improved notation or abstraction for pipelining}
Since pipelining is a very common optimization for hardware systems, it should
be easy to specify a pipelined system. Since it involves quite some registers
into an otherwise regular combinatoric system, we might look for some way to
abstract away some of the boilerplate for pipelining.

Example of naive pipelined code

Using monadic do does not fit the typing

Using custom combinators would work
