so many compiling directives