perhaps I should use a varadic function