Introducing types to allow flowing compilation settings to the application

Ewww