abstracted some move functionality to separate methods for readability