the `||=` idiom doesn't work for these ivars because they're mostly false so we have to do a `defined?` check.