there's no name that really covers it, maybe put the case statement after NewState to avoid naming it at all?