first cut at 'sequence' module which unifies the collection and stream modules