abstracted search