because it's stupid to have ptr and pointer.
refactoring preprocessing code