I did that initially, but then I thought - why allocate a new object?
I think it should be the caller responsibility to check for `undefined`