Without using preprocessor