better error-detection
do all fetches up front, should save time