After thinking a bit about it, I didn't find any obvious way to separate levels of abstraction better here. To be addressed later I guess.