create abstracted