I ended up with more parts than I expected, and untangling them even to the
extent that they can be split into separate files was more difficult than
expected due to cyclic dependencies, but that's just a sign that it's good we're
working on this.
Some of the small parts might go away again later, but I think it's a good start
to have them separate.
On the other hand, the main file is still more than 600 lines long because that
class carries too many responsibilities, but I think working on that should be a
separate step, too.
In the next steps, I think we should make the responsibilities of the various
parts clearer, reduce the internal dependencies in general, and the cyclic ones