made some cool changes to preprocessor stuff