Introducing types to allow flowing compilation settings to the application

This is supposed to be a build time dependency.