you should also allow Traversable for the first argument.

and you should check that you have at least 1 argument before accessing ``$args[0]`` to avoid notices in case of misuse