abstracted Input classes