first rule: dont write macro, second rule dont write multi arity macros