this can also return `nil`