abstracted classes