allow args as tuple