updated preprocessor