Refactor with more PP macros