abstracted user