You have state enums AND a didBegin flag. Can you convert didBegin into another state that the system goes through?