refactor with macro