when is a valid move?