abstracted move class