supports String by checking only for list or tuple, instead of Iterable