Update based on Sean's suggestion to make TodoState easier to understand