rolled  into punch family as function