more preprocessor magic