add input? function and macro