add preprocessor safeguard