refactor fetching to use multiple tries