Redesigned module architecture

I did it for learning purposes, I'm guessing it's now easier to be extended (maybe not ?!)
Commits are somewhat messy, I'm trying to do better ^^

If you find time to take a look at this PR and maybe give me some feedback, I'd appreciate.