refactored each macro into types