Right, I can see that. If it turns out that my assumptions about keeping source/sink separate are erroneous, we can simply store these in a single simple list and avoid the special iterator.