better `array|Traversable`?