added preprocessor guard