Simplified slightly further where possible; implemented prefetchAllFields and added a call to it at an appropriate moment.