Introducing types to allow flowing compilation settings to the application

This isn't required since it's supposed to be a shared project and a build time dependency.