switch logic for precompilation around