more macro magic, less code duplication