Huge refactor/-structuring. I should start changelogs