command line argument parsing instead of preprocessor definitions for things