updated isValidMove()