Split project into even more modules

Yes, I know this is probably overkill on the long term, but I want to make sure dependencies are under control and minimal. This has already shown some problems with code that was hard to test and where the class under test was not well defined. At some point merging those module together again might make sense. We'll see ...