Much better project structure

That's all I'm gonna say here really. ;-)
Merge branch 'better-structure'
Merge branch 'master' into example-layout