not sure what was gained by this complexity, aside from lazy loading on revisit after dispose