We are calculating `names` twice. Once here and another in `run/3`. Maybe we can calculate it before and pass it directly to `run/3`?