i think i have to take off redundant `null` check because there is no `null` state