rest of this looks good, other than handling `None` case