This allows us to detect unused functions and variables and allows the compiler to do a better job at optimisation.