I wonder if returning an lazy-ish iterator rather than an eager list might be better?