separated function macros from header