Partiallly refactored DoMove