added preprocessor feature