we now have two methods to determine the current state - one that always works and one that requires the last move