added preprocessor macros to improve code readability