nit: are these `_`-prefixed names required?