is doing way too much.
We need to slowly decouple the different tasks into separate functions that can be called successively on each individual trait to build up the results, with something like the `map` function, or list comprehensions.
should probably be done before we enter the looping part of the results processing to make the logic easier and decouple the fetching from the results processing.
pr to fix this issue