abstracted methods