abstracted retriever