using preprocessor