since there's no "else" branch, it's more idiomatic to use `(when (vector? required) ...)`