Split stuff into multiple files and rework all moving parts